Laden...

Wie kann man ein eigenes Ressourcen-Archiv, ähnlich MPQ oder ähnliches, erstellen.

Erstellt von PhaseV vor 7 Jahren Letzter Beitrag vor 7 Jahren 4.189 Views
PhaseV Themenstarter:in
8 Beiträge seit 2016
vor 7 Jahren
Wie kann man ein eigenes Ressourcen-Archiv, ähnlich MPQ oder ähnliches, erstellen.

Hallo,

ich suche für meine Projekte eine Möglichkeit um die dazu gehörigen Ressourcen, z.B. Texte oder Grafiken und Sounds, in ein eigenes Archiv zu packen und daraus dann die benötigte Datei oder den Text dann zu laden, ie es zum Beispiel auch bei Blizzards MPQ-Archiven geschieht. Leider habe ich dazu nichts im Netz gefunden, was mir da weiterhilft und meine Erfahrung reicht dafür auch leider nicht aus um sowas ohne Hilfe zu Entwickeln.

Bin für jeden Hinweis oder Snippet dankbar.

MfG
PhaseV

5.658 Beiträge seit 2006
vor 7 Jahren

Hi PhaseV,

wie wäre es mit einer Zip-Datei?

Weeks of programming can save you hours of planning

PhaseV Themenstarter:in
8 Beiträge seit 2016
vor 7 Jahren

Hi MrSparkle,

im Prinzip wäre es das, aber mir geht es auch um den Schutz vor Veränderung der Archive bzw das verhindern das mit einem Packprogramm(z.B.: WinRAR oder Ultimate Extractor) darauf zugegriffen werden kann. Und dies ist mit dieser Klasse nicht wirklich gegeben, bitte korrigiert mich sollte ich mich da irren 😉

709 Beiträge seit 2008
vor 7 Jahren

Hallo PhaseV,

es gibt auch Bibliotheken, die verschlüsselte zip-Dateien erstellen können.
Wäre das eine Möglichkeit?

5.658 Beiträge seit 2006
vor 7 Jahren

Eine andere Variante wäre eine einfache Checksumme.

Am besten solltest du mal deine Anforderungen posten, sonst kann man nur raten. Ich bezweifle, daß jeder hier im Forum die Features des Dateiformats von Blizzard kennt.

Weeks of programming can save you hours of planning

T
62 Beiträge seit 2012
vor 7 Jahren

Vermutlich suchst du so was: https://nfilestorage.codeplex.com (Ist leider schon etwas älter).
Alternativ sicherlich auch http://www.litedb.org - Kann genau so wie MongoDb auch ein GridFS ähnliches Konstrukt 😉

3.003 Beiträge seit 2006
vor 7 Jahren

Ist ne Weile her, aber soweit ich mich erinnere, besteht ein mpq aus Segmenten, die mit verschiedenen Kompressionsalgorithmen gepackt werden können. Sie lassen sich verschlüsseln und beliebig erweitern, und vermutlich noch einige Features mehr. Ich würde nicht davon ausgehen, dass so etwas in der .NET-Welt existiert. Das Urprungsposting klingt aber so, als sei ihm auch mit normalen Resourcen-Dateien geholfen.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

PhaseV Themenstarter:in
8 Beiträge seit 2016
vor 7 Jahren

Folgende Anforderung sollten erfüllt sein:
*geschützt vor externen Zugriff durch bekannte Packprogramme *Erweiterbar bzw. hinzufügen weiterer Ressourcen, ohne neue Kompilierung *interner Zugriff der benötigten Ressource

Hoffe das hilft ein bisschen weiter, was ich mir grob Vorstelle.

MfG
PhaseV

D
985 Beiträge seit 2014
vor 7 Jahren

Nimm doch einfach eine Zip-Datei, die mit einem Passwort geschützt ist und greif dann per DotNetZip darauf zu.

Per Composition kannst du dir da ein kleines Repository basteln und das immer fragen

2.298 Beiträge seit 2010
vor 7 Jahren

Wenn der Weg über die ZIP-Datei nicht ausreicht, könnte eventuell ein Webservice deine Anforderung erfüllen. - Bei Programmstart werden die erforderlichen Ressourcen von diesem abgerufen.

Sicherer vor Fremdänderungen kannst du es dann nicht mehr machen.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

C
26 Beiträge seit 2016
vor 7 Jahren

Hi,

vielleicht hilft Dir StormLib weiter? Damit kannst Du Deine eigenen MPQ-Dateien erstellen und lesen:
StormLib

Es gibt auch einen C#-Wrapper auf GitHub.

2.079 Beiträge seit 2012
vor 7 Jahren

Warum noch gleich reicht ein verschlüsseltes ZIP-Archiv nicht aus?
.NET hat eine API zur Nutzund dabei und ohne Schlüssel kriegt das keiner geändert.
Dann noch eine andere Datei-Endung, damit es das ZIP-Icon nicht bekommt

Klar, man kann den Key aus dem Quellcode auslesen, aber man kann auch Resourcen in der Assembly bearbeiten - mit dem nötigen KnowHow

Und es soll doch nur davor schützen, das Archiv mit gängigen Programme zu öffnen, oder?
Das wäre damit gegeben.

Am sichersten ist eigentlich nur der Vorschlag von inflames2k, dass Du die Daten bei jedem Start neu herunter lädst, aber das kostet Zeit und braucht einen Server der das entsprechend managed.
Meiner Meinung nach zu viel Aufwand für ein eigentlich nicht so umfangreiches Problem.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

D
985 Beiträge seit 2014
vor 7 Jahren

Warum noch gleich reicht ein verschlüsseltes ZIP-Archiv nicht aus?
.NET hat eine API zur Nutzund dabei und ohne Schlüssel kriegt das keiner geändert.

AFAIK ist die nicht dabei, denn die wo dabei ist, kann nicht mit verschlüsselten ZIP Dateien umgehen. (Darum der Link zu DotNetZip)

2.079 Beiträge seit 2012
vor 7 Jahren

Kann sie nicht?
Nagut, dann hab ich mich da vertan, ich hab sie bisher nur unverschlüsselt genutzt 😕

Aber das ändern mMn. nichts daran, dass ZIP die hier effektivste Lösung sein dürfte.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.