Zip Files / Directory



  • Hallo,

    Also, ich muss für ein Tool Dateien aus einer Zip in ein Temp-Verzeichnis entpacken. Diese bearbeite ich dann. Am Ende müssen die aktualisierten Dateien wieder in eine Zip Datei verpackt werden.
    Das Tool ist ein Visual Studio C++ /clr Projekt mit dem .Net Framework.

    Ich hoffe ihr könnt mir helfen.

    Gruß Andrej





  • Was genau willst du eigentlich machen? Vom deinem Programm aus das Zip-File entpacken?
    Das müsste eigentlich funktionieren, wenn du dein Zip-Programm per Kommandozeile aufrufst. Die meisten der Packprogramme lassen sich über die Konsole steuern, sehe in etwa so aus:
    C:\packer\packer.exe \e (für entpacken) quelldatei zielordner

    Dementsprechend müsstest du mal schauen, ob du die Anwendung gestartet bekommst. In VB klappte das wunderbar und ich denke mal, dass das auch in C++ funktioniert. Packen läuft dann genauso. Kann dir jetzt aber nicht sagen, wie der entsprechende Code aussehen müsste. Lies mal in der Doku, da findet sich bestimmt was.

    Gruß
    physici



  • @physici_errantes: Deine Lösung ist toll. Bin nicht drauf gekommen. Jedoch hat es ein Nachteil: Es setzt vorraus, dass ein entsprechender "Zipper" auf den Zielsystem installiert, oder ein zusätzliche .exe mit im Verzeichnis liegt.

    Gruß Andrej



  • Ja das stimmt, aber das sollte nicht das Problem sein, da es viele Packprogramme auch als Freeware gibt.
    Eine etwas andere Möglichkeit gibt es noch, in dem du das System selbst nach dem geeigneten Program suchen lässt. Voraussetzung hierfür ist, dass das zip-Fileformat mit einem solchen Programm verknüpft ist und in der Registry einen Eintrag besitzt. Allerdings weiß ich dann nicht so recht, wie du das mit der Befehlszeile machen kannst. Vielleicht den Pfad des Programmes rausbekommen und dann die Befehlszeile. Müsste man halt mal ein wenig probieren. Wirklich Ahnung hab ich davon nicht, nur sind das ein paar Gedanken, die mir dazu gekommen sind.

    Wenn du es hinbekommen hast, so würde mich interessieren, wie du es angestellt hast. Evtl. muss in mein Prog. auch noch so eine Pack-Implementierung rein.

    Gruß
    physici



  • Jochen Kalmbach schrieb:

    Es gibt da z.B.
    http://www.icsharpcode.net/OpenSource/SharpZipLib/
    http://www.aspheute.com/artikel/20011115.htm

    Das klingt super, auch die Dokumentation und die Beispiel-Codes sind gut. Jedoch hab ich ein Problem, wie binde ich das ganze ein?

    Gruß Andrej

    P.S. Weiß vllt. jemand, warum die Programme nicht von einem Netzlaufwerk laufen? Auf dem Server (dessen Platte als Netzlaufwerk eingebunden ist) ist das .NET Framework nicht installiert. Liegt das daran?



  • Andrej Dyck schrieb:

    Das klingt super, auch die Dokumentation und die Beispiel-Codes sind gut. Jedoch hab ich ein Problem, wie binde ich das ganze ein?

    Wenn Du
    http://www.icsharpcode.net/OpenSource/SharpZipLib/
    verwendest, sollte es doch nicht so schwierig sein, oder? Einfach die Assembly als Referenz aufnehmen und dann kanns losgehen.

    Andrej Dyck schrieb:

    P.S. Weiß vllt. jemand, warum die Programme nicht von einem Netzlaufwerk laufen? Auf dem Server (dessen Platte als Netzlaufwerk eingebunden ist) ist das .NET Framework nicht installiert. Liegt das daran?

    Weil Netzlaufwerke unsicher sind und die Policy verbietet diese Assemblies (welche Unsicherern Code beinhalten) von einem Netzlaufwerk aus auszuführen. Du kannst dies aber in den Policies umstellen (Systemsteuerung|Verwaltung|Microsoft .NET Framework .. Configuration)



  • Also ich hab ja die
    ICSharpCode.SharpZipLib.dll
    heruntergeladen. Wie referenziere ich diese jetzt? Hab das leider noch nicht gemacht. Geht das unter den Projekt Eigenschaften -> Linker -> Befehlszeilen /reference: ICSharpCode.SharpZipLib.dll? Oder geht das anders?

    Gruß Andrej

    P.S. Das mit den .NET policies hat geklappt, danke.



  • "Porject|Properties|Common Properties|References|Add new reference..."



  • Danke, klappt wunderbar.


Anmelden zum Antworten