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
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 😉
Hallo PhaseV,
es gibt auch Bibliotheken, die verschlüsselte zip-Dateien erstellen können.
Wäre das eine Möglichkeit?
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
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 😉
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)
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
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
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 |
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.
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.
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)
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.