Je te remercie et reste sans voix
J'en ai marre, je tourne en rond depuis 10 jours.
Je me retrouve toujours avec un fichier pack et un deuxieme programme qui marche si je le compile pour qu'il devienne un exe.
Mais moi, je voudrais que ce soit le premier programme qui créé l'exe apres avoir créé le pack, directement sans que j'ai à le compiler manuellement et que j'ai plus qu'a cliquer sur le 2e qui serait donc l'exe pour décompresser les fichiers du répertoire.
J'comprend plus rien et plus je reflechi et moins je comprend.
Voici tout le code du packer (J'espere ne pas en avoir oublié :
Code : Tout sélectionner
Procedure PackFolder(Folder.s, Pack.s, Level)
Global Dim List.s(100000)
Global Dim Limp.s(100000)
Global Dim Bizkit.s(100000)
Global Index1
Global Index2
Global Index3
Index1=0
Index2=0
Index3=0
If Right(Folder.s, 1) <> "\"
Folder.s + "\"
EndIf
If FillArray(Folder.s, Folder.s) = 1
CreateFile(0, GetTemporaryDirectory() + "Filelist.tmp")
WriteStringN(0, Str(Index1))
For PackN = 1 To Index1
If Limp(PackN - 1) <> ""
WriteStringN(0, Limp(PackN - 1))
EndIf
Next PackN
CloseFile(0)
CreateFile(0, GetTemporaryDirectory() + "Dirlist.tmp")
For PackN = 1 To Index2
If Bizkit(PackN - 1) <> ""
WriteStringN(0, Bizkit(PackN - 1))
EndIf
Next PackN
CloseFile(0)
CreatePack(Pack.s)
AddPackFile(GetTemporaryDirectory() + "Filelist.tmp", 9)
AddPackFile(GetTemporaryDirectory() + "Dirlist.tmp", 9)
For Add = 1 To Index1
If List(Add - 1) <> ""
AddPackFile(List(Add - 1), Level)
EndIf
Next Add
ClosePack()
DeleteFile(GetTemporaryDirectory() + "Filelist.tmp")
DeleteFile(GetTemporaryDirectory() + "Dirlist.tmp")
EndIf
MessageRequester("Er-Setup", "Le fichier " + DerniereOccurence(GetGadgetText(#TexteCheminRepertoireSource)) + ".pak vient d'etre créé avec succés sur " + GetGadgetText(#TexteCheminRepertoireDestination), 0)
EndProcedure
Procedure FillArray(EntryPath.s, Oldpath.s) ; Fonctionne avec PackFolder(folder.s,pack.s,level)
If Right(EntryPath.s, 1) <> "\"
EntryPath + "\"
EndIf
UsedDirectory = ExamineDirectory(#PB_Any, EntryPath, "*.*")
While NextDirectoryEntry(UsedDirectory)
EntryType.l = DirectoryEntryType(UsedDirectory)
EntryName.s = DirectoryEntryName(UsedDirectory)
If EntryName = "." Or EntryName = ".."
Continue
EndIf
If EntryType = #PB_DirectoryEntry_File
TheFile.s = RemoveString(EntryPath + EntryName, Oldpath.s)
Limp(Index1) = TheFile.s
Index1 = Index1 + 1
List.s(Index3) = EntryPath + EntryName
Index3 = Index3 + 1
EndIf
If EntryType = #PB_DirectoryEntry_Directory
FillArray(EntryPath + EntryName, Oldpath.s)
Bizkit.s(Index2) = RemoveString(EntryPath + EntryName, Oldpath.s)
Index2 = Index2 + 1
EndIf
Wend
FinishDirectory(UsedDirectory)
ProcedureReturn 1
EndProcedure
Procedure.s MakeDirectory(Filestring.s)
filename.s = GetFilePart(filestring)
directory.s = GetPathPart(filestring)
drivename.s = Left(directory, 3)
directory.s = Mid(directory, 4, Len(directory) - 3)
make.s = drivename
While FindString(directory,"\", 1) <> 0
position = FindString(directory,"\", 1)
temp.s = Left(directory, position -1)
directory = Mid(directory, position + 1, Len(directory) - position)
make + temp + "\"
CreateDirectory(make)
Wend
ProcedureReturn make
EndProcedure
Procedure DePackFolder(Pack.s, Folder.s)
Global Dim Limp.s(100000)
Global Dim Bizkit.s(100000)
Global index1:index1=0
Global index2:index2=0
If Right(folder.s,1)<>"\":folder.s+"\":EndIf
CreateDirectory(folder)
OpenPack(pack.s)
If CreateFile(0,GetTemporaryDirectory()+"filelist.tmp")
*File=NextPackFile()
Size=PackFileSize()
WriteData(0,*File,Size)
CloseFile(0)
EndIf
If CreateFile(0,GetTemporaryDirectory()+"dirlist.tmp")
*File=NextPackFile()
Size=PackFileSize()
WriteData(0,*File,Size)
CloseFile(0)
EndIf
If ReadFile(0,GetTemporaryDirectory()+"dirlist.tmp")
While Not Eof(0)
CreateDirectory(folder+ReadString(0))
Wend
CloseFile(0)
EndIf
If ReadFile(0,GetTemporaryDirectory()+"filelist.tmp")
nr = Val(ReadString(0))
For index1 = 1 To nr
file.s = folder+ReadString(0)
Debug "Extracting: " + file
If CreateFile(1,file)
*File=NextPackFile()
Size=PackFileSize()
WriteData(1,*File,Size)
CloseFile(1)
EndIf
Next index1
CloseFile(0)
EndIf
EndProcedure
Je te remercie beaucoup de ta patience
Bonne soiree