Seite 10 von 37

Verfasst: 16.05.2007 21:25
von Thorsten1867
Forge hat geschrieben:Der Zipper hat nämlich einen Fehler. [. . . . .] Werde den Zipper (irgendwann mal) verbessern.
Im Hinblick auf deine Programmbeschreibung (siehe unten) wäre es eine gute Idee aus "irgendwann mal" vielleicht ein "möglichst schnell" zu machen. Den vermutlichen Grund für die fehlerhaften Dateien habe ich dir in diesem Thread schon gepostet und du kannst das Problem auch im englischen Forum nachlesen.
Forge hat geschrieben:InstallForge ist ein professioneller und leicht bedienbarer Setup-Creator für Windows, mit dem Sie in wenigen Minuten professionelle Installationspakete erstellen können.

Verfasst: 16.05.2007 21:37
von X0r
Wenn ich eine geeignete und freie ZipLib finde...

Verfasst: 16.05.2007 21:43
von Thorsten1867
Ich verwende "PureZip" von Gnozal und es funktioniert bei mir, wenn man das aktuelle Verzeichnis vorher festlegt.

Verfasst: 16.05.2007 21:45
von X0r
(Entfernt, da nicht mehr aktuell)

Verfasst: 16.05.2007 21:50
von Thorsten1867
Die Dateien sind im ZIP relativ gespeichert. Warum vorher das aktuelle Verzeichnis gesetzt sein muss, ist mir auch nicht ganz klar. Zumindest habe ich keine 0-Byte bzw. defekte Dateien im Archiv mehr.

Verfasst: 16.05.2007 21:54
von X0r
(Entfernt, da nicht mehr aktuell)

Verfasst: 16.05.2007 21:59
von Thorsten1867

Code: Alles auswählen

Procedure Add2ZIP(Path.s, SrcPart.s)
  Protected dir.l, entry.s
  If Not Right(Path, 1) = "\" : Path+"\" : EndIf
  If Not Right(SrcPart, 1) = "\" : SrcPart+"\" : EndIf 
  dir = ExamineDirectory(#PB_Any, Path, "")
  If dir 
    While NextDirectoryEntry(dir) 
      entry = DirectoryEntryName(dir)  
      If entry = "." Or entry = ".."
        Continue
      ElseIf DirectoryEntryType(dir) = #PB_DirectoryEntry_File
        PureZIP_Archive_Compress(RemoveString(Path+entry, SrcPart), #True)
      Else
        Add2ZIP(Path+entry+"\", SrcPart)
      EndIf 
    Wend 
    FinishDirectory(dir) 
  EndIf 
EndProcedure

PackDatei$ = OutputDir$+ProgName$+".zip"
If FileExist(PackDatei$) : DeleteFile(PackDatei$) : EndIf

SetCurrentDirectory(SourceDir$) 

If PureZIP_Archive_Create(PackDatei$, #APPEND_STATUS_CREATE)
  Add2ZIP(SourceDir$, SourceDir$)
  PureZIP_Archive_Close()
EndIf

SetCurrentDirectory(ProgDir$)
oder einzelne Dateien:

Code: Alles auswählen

PureZIP_AddFile(PackDatei$, ProgDir$+"Uninstall.exe", #PureZIP_DontStorePath)

Verfasst: 16.05.2007 22:09
von X0r
(Entfernt, da nicht mehr aktuell)

Verfasst: 16.05.2007 22:16
von Thorsten1867
Hast du schon mal das probiert:

Code: Alles auswählen

PackDatei$ = "C:\aa.zip"
SourceDir$="C:\as" 
; . . . . 
oder

Code: Alles auswählen

PackDatei$ = "E:\Temp\Test.zip"
PureZIP_AddFile(PackDatei$, "C:\WINDOWS\NOTEPAD.EXE", #PureZIP_DontStorePath)

Verfasst: 16.05.2007 22:20
von X0r
(Entfernt, da nicht mehr aktuell)