Toutes mes tentatives ont fais que l'exe ne demarre pas et petit message d'erreur exe éroné...
J'espère qu'on me comprend.

merci @+

Code : Tout sélectionner
;N'utilisez en aucun cas UPX ou un logiciel qui a la même fonction pour comprimer le fichier généré
;Infos :
;Vous devriez afficher le "Procédure Browser" à droite
;Vous pourriez accéder facilement aux étapes importantes du programme
;Auteur : Gillou
;Version : PureBasic 3.92
;Date : 13 février 2005
;- 01 DEBUT
Procedure ExpandBinaryfile(Fichier.s,binaire) ; EXTRAIRE LES FICHIERS INCLUS DANS LE PROGRAMME
reussi=0
If CreateFile(1, Fichier)
UseFile(1)
LON=?FNU-binaire
If WriteData(binaire,LON)
CloseFile(1)
reussi=1
EndIf
EndIf
ProcedureReturn reussi
codeprog:
IncludeBinary "install data.pb"
FNU:
EndProcedure
Global pos
Global ret
Global position
Global result.f
Procedure PackerProgress(SourcePosition, DestinationPosition) ; ETAT DE LA COMPRESSION
Shared FileLength
Shared tempsab
Shared fich$
If DestinationPosition>SourcePosition : Position=DestinationPosition : Else : Position=SourcePosition : EndIf
Result.f = Position*100/FileLength
res=Round(result,1)
temps2=Round(ElapsedMilliseconds()/1000,0)
If res-pos<>0
min.s=Str(((100*(temps2-tempsab)/(res))-(temps2-tempsab))/60)
sec.s=Str(((100*(temps2-tempsab)/(res))-(temps2-tempsab))-(Val(min)*60))
SetGadgetText(147,GetFilePart(fich$)+Chr(13)+Chr(13)+"Temps restant pour la compression : "+min+" min : "+sec+" s.")
SetGadgetState(14, Round(Result,0))
pos=res
EndIf
If result<>0 And ret=0
SetWindowTitle(1,"Compression en cours...") : ret=1
EndIf
While (WindowEvent()) : Wend
ProcedureReturn 1
EndProcedure
Procedure.s purebasic() ; OU SE TROUVE PUREBASIC?
path.s = "Applications\PureBasic.exe\shell\open\command"
If RegOpenKeyEx_(#HKEY_CLASSES_ROOT, path, 0, #KEY_ALL_ACCESS, @Key) = #ERROR_SUCCESS
indir.s = Space(500)
insize = 500
If RegQueryValueEx_(Key, "", 0, 0, @indir.s, @insize) = #ERROR_SUCCESS
RegCloseKey_(Key)
indir = RemoveString(indir, "%1", 1)
indir = RemoveString(indir, Chr(34), 1)
indir = RTrim(indir)
path = GetPathPart(indir)
Else
MessageRequester("Erreur!", "Hum... Je ne trouve pas Purebasic", #MB_ICONERROR)
RegCloseKey_(Key)
path = "C:\program files\purebasic\"
EndIf
EndIf
ProcedureReturn path.s
EndProcedure
ExeName.s = Space(255) : GetModuleFileName_(0, @ExeName, 255)
OpenFile(21,GetPathPart(exename)+"configAEX.ini")
adres1$=ReadString()
adres2$=ReadString()
CloseFile(21)
fich$=OpenFileRequester("Ouvrez un fichier",adres1$,"Tous les fichiers|*.*",0,#PB_Requester_MultiSelection)
If fich$
NewList fichier.s()
Repeat
AddElement(fichier()) : fichier()=fich$
fich$=NextSelectedFileName()
Until fich$=""
FirstElement(fichier()) : fich$=fichier()
demand:
;- 02 MAIS OU VA T-ON CREER CET EXECUTABLE?
exe$=SaveFileRequester("Fichier à enregistrer type SFX",Left(fich$,Len(fich$)-Len(GetExtensionPart(fich$)))+"exe","EXE|*.exe",0)
If exe$
If exe$=ExeName Or exe$=fich$
MessageRequester("Information","Vous ne pouvez pas choisir le même nom que votre programme",#MB_ICONWARNING)
Goto demand
EndIf
file$=Left(exe$,Len(exe$)-Len(GetExtensionPart(exe$))-1)
If UCase(GetExtensionPart(exe$))<>"EXE"
exe$=exe$+".exe"
EndIf
ExpandBinaryfile(exe$+".pb",?codeprog)
If CreateFile(18,GetPathPart(exe$)+"\RAZ.pb") : Else : End : EndIf
CloseFile(18)
If OpenFile(8,exe$+".pb")
Repeat
adres$=ReadString()
If Left(adres$,10)="; UseIcon="
dos$=Mid(adres$,11,Len(adres$))
EndIf
Until Eof(8)
CloseFile(8)
;- 03 AJOUT D UNE ICONE A L EXECUTABLE
ico$=OpenFileRequester("Choisissez une icône (si vous annuler, le prog n'aura pas d'icône)",adres2$,"ICONE|*.ico",0)
temps.l=ElapsedMilliseconds()
If OpenWindow(0, 0, 0, 200, 30, #PB_Window_ScreenCentered , "Compilateur PureBasic")
SetWindowPos_(WindowID(), #HWND_TOPMOST, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
If CreateGadgetList(WindowID())
TextGadget(1, 10, 10, 190, 20, "Compilation en cours...")
EndIf
EndIf
Delay(1000)
;- 04 CREATION DE L EXECUTABLE
If ico$
result=RunProgram(purebasic()+"compilers\pbcompiler.exe",Chr(34)+exe$+".pb"+Chr(34)+" /EXE "+Chr(34)+exe$+Chr(34)+" /ICON "+Chr(34)+ico$+Chr(34)+" /XP /NT4 /QUIET","",1|2)
Else
result=RunProgram(purebasic()+"compilers\pbcompiler.exe",Chr(34)+exe$+".pb"+Chr(34)+" /EXE "+Chr(34)+exe$+Chr(34)+" /XP /NT4 /QUIET","",1|2)
EndIf
CreateFile(21,GetPathPart(exename)+"configAEX.ini")
WriteStringN(GetPathPart(fich$))
WriteStringN(GetPathPart(ico$))
CloseFile(21)
;- 05 VERIFICATION DE LA CREATION DE L EXECUTABLE
If ReadFile(5,exe$)
CloseFile(5)
DeleteFile(exe$+".pb")
DeleteFile(GetPathPart(exe$)+"RAZ.pb")
Else
If ReadFile(26,GetPathPart(exe$)+"RAZ.pb") And ReadFile(7,exe$+".pb")
If result=0
CloseFile(7)
CloseFile(26)
MessageRequester("Information","L'éxecutable n'a pas pu être généré!"+Chr(13)+Chr(13)+"Il y a une erreur dans le programme, merci de contacter le programmeur",#MB_ICONERROR)
DeleteFile(exe$+".pb")
DeleteFile(GetPathPart(exe$)+"RAZ.pb")
End
Else
CloseFile(7)
CloseFile(26)
MessageRequester("Information","L'éxecutable n'a pas pu être généré!"+Chr(13)+Chr(13)+"Soit une erreur système s'est produite,"+Chr(13)+"soit la source du second programme contient une erreur, désolé",#MB_ICONERROR)
DeleteFile(exe$+".pb")
DeleteFile(GetPathPart(exe$)+"RAZ.pb")
End
EndIf
Else
CloseFile(7)
CloseFile(26)
Debug GetPathPart(exe$)+"RAZ.pb"
MessageRequester("Information","L'éxecutable n'a pas pu être généré!"+Chr(13)+Chr(13)+"Les fichiers de configuration n'ont pas pu être généré, vérifier si le dossier n'est pas en lecture seul"+Chr(13)+Chr(13)+exe$+".pb"+Chr(13)+GetPathPart(exe$)+"RAZ.pb",#MB_ICONERROR)
DeleteFile(exe$+".pb")
DeleteFile(GetPathPart(exe$)+"RAZ.pb")
End
EndIf
EndIf
EndIf
CloseWindow(0)
;- 06 COMPRESSER LE FICHIER
If ReadFile(50, fich$)
FileLength = Lof()
CloseFile(50)
EndIf
pack$=Left(fich$,Len(fich$)-1-Len(GetExtensionPart(fich$)))+".JCG1"
If OpenWindow(1, 0, 0, 300, 100,#PB_Window_ScreenCentered, "Mise en mémoire...")
SetWindowPos_(WindowID(), #HWND_TOPMOST, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
CreateGadgetList(WindowID())
ProgressBarGadget(14, 10, 10, 280, 20, 0, 100,#PB_ProgressBar_Smooth)
CreatePack(pack$)
tempsab=Round(ElapsedMilliseconds()/1000,0)
TextGadget(147,10,40,280,40,"Calcul en cours...")
PackerCallback(@PackerProgress())
For a=1 To CountList(fichier())
SelectElement(fichier(),a-1)
fich$=fichier()
FileLength=FileSize(fich$)
resulta=AddPackFile(fich$,9) ; compression max
Next
FirstElement(fichier())
fich$=fichier()
If resulta=1
ClosePack()
CloseWindow(1)
Else
MessageRequester("Information","La compression a échouée")
EndIf
EndIf
;- 07 FENETRE
taille.f=FileSize(pack$)
OpenWindow(2,0,0,150,40,#PB_Window_ScreenCentered,"Création en cours")
SetWindowPos_(WindowID(), #HWND_TOPMOST, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
CreateGadgetList(WindowID(2))
ProgressBarGadget(4,10,10,130,15,0,100,#PB_ProgressBar_Smooth)
RenameFile(exe$,file$)
If OpenFile(1,pack$)
If OpenFile(0,file$)
UseFile(0)
Repeat
ReadString()
Until Eof(0)
WriteStringN("")
;- 08 ECRITURE DES INFORMATIONS POUR LA DECOMPRESSION
WriteStringN("LGGILLOUFile"+Str(CountList(fichier())))
fichs$="¤"
For a=1 To CountList(fichier())
SelectElement(fichier(),a-1)
fichs$=fichs$+GetFilePart(fichier())+"¤"+Str(FileSize(fichier()))+"¤"
Next
WriteStringN(fichs$)
UseFile(1)
FirstElement(fichier())
fich$=fichier()
;- 09 INCLURE LE FICHIER VOULU DANS L EXECUTABLE
Data1.s=Space(500)
Repeat
UseFile(1)
lon=ReadData(@Data1,500)
UseFile(0)
WriteData(Data1.s,lon)
n=n+lon
SetGadgetState(4,Round(n*100/taille,0))
Until Eof(1)
CloseFile(1)
CloseFile(0)
RenameFile(file$,exe$)
DeleteFile(pack$)
tempsa=ElapsedMilliseconds()
resultat.f=(tempsa-temps)/1000
FreeGadget(4)
UseWindow(2)
ResizeWindow(170,90)
;- 10 RESULTAT
SetWindowTitle(2,"Opération réussi")
min.s=Str(Round(resultat/60,0))
sec.s=Str(Round(resultat-(Val(min)*60),0))
ms.s=Str(1000*(resultat-Round(resultat,0)))
TextGadget(145,10,10,150,40,"temps de calcul : "+Chr(13)+Chr(13)+min+" min : "+sec+","+ms+" s.")
ButtonGadget(146,10,60,150,20,"OK")
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
Case 146
quit=1
EndSelect
EndSelect
Until quit=1
CloseWindow(1)
EndIf
EndIf
EndIf
EndIf
Code : Tout sélectionner
Procedure decompress() ; DECOMPRESSER LES FICHIERS DE L'ARCHIVE
Shared FileLength
Shared Fich$
Shared sa
Shared nfich
Shared a
If sa
info=NextPackFile()
If info
If FileLength<>PackFileSize()
MessageRequester("Information","Une erreur s'est produite lors de la décompression.",#MB_ICONEXCLAMATION)
End
EndIf
ResizeWindow(400,40)
ResizeGadget(110,10,10,380,20)
SetWindowTitle(0,"Ecriture du fichier : "+GetFilePart(Fich$))
CreateFile(123,Fich$)
WriteData(info,FileLength)
CloseFile(123)
SetGadgetState(110, a*100/nfich)
Else
ProcedureReturn 0
EndIf
Else
MessageRequester("Information","Impossible d'ouvrir l'archive",#MB_ICONERROR)
ProcedureReturn 0
EndIf
ProcedureReturn 1
EndProcedure
;- 01 RECHERCHE DE L ARCHIVE DANS L EXECUTABLE
tempsab=ElapsedMilliseconds()
ExeName.s = Space(255) : GetModuleFileName_(0, @ExeName, 255)
If ReadFile(1,ExeName)
For a=1 To 2
Repeat
m$=ReadString()
Until Left(m$,12)="LGGILLOUFile" Or Eof(1)
Next
If Left(m$,12)<>"LGGILLOUFile"
End
EndIf
;- 02 RECHERCHE DES INFORMATIONS SUR LES FICHIERS QUE CONTIENT L ARCHIVE
nfich=Val(Mid(m$,13,100))
fichs$=ReadString()
Structure info
nom.s
taille.l
EndStructure
NewList fichier.info()
For a=2 To nfich*2+1
AddElement(fichier())
fichier()\nom=StringField(fichs$,a,"¤")
a=a+1
fichier()\taille=Val(StringField(fichs$,a,"¤"))
Next
;- 03 CREATION DU FICHIER OU VA ETRE EXTRAIT L ARCHIVE
path$=PathRequester("Choisissez le dossier de décompression des ou du fichier que contient cette archive",GetPathPart(ExeName))
If path$=""
path$=GetPathPart(ExeName)
EndIf
If ReadFile(2,path$+"Archive.JCG1")
Repeat
CloseFile(2)
rn=rn+1
Until ReadFile(2,path$+"Archive ("+Str(rn)+").JCG1")=0
pack$=path$+"Archive ("+Str(rn)+").JCG1"
Else
If MessageRequester("AEX - Infos","Voulez-vous extraire le ou les fichiers dans le repertoire courant?"+Chr(13)+"("+path$+")", #PB_MessageRequester_YesNo)=6
pack$=path$+"Archive.JCG1"
Else
End
EndIf
EndIf
If CreateFile(2,pack$)=0
MessageRequester("Erreur","Impossible de créer l'archive",#MB_ICONERROR)
End
EndIf
;- 04 EXTRACTION DE L ARCHIVE
OpenWindow(1,0,0,150,40,#PB_Window_ScreenCentered,"Extraction...")
SetWindowPos_(WindowID(), #HWND_TOPMOST, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
CreateGadgetList(WindowID(1))
ProgressBarGadget(4,10,10,130,15,0,100,#PB_ProgressBar_Smooth)
UseFile(1)
Data1.s=Space(500)
Repeat
lon=ReadData(@Data1,500)
UseFile(2)
n=n+lon
WriteData(Data1,lon)
UseFile(1)
SetGadgetState(4,Round(lon*100/taille,0))
Until Eof(1)
CloseFile(2)
CloseFile(1)
CloseWindow(1)
;- 05 DECOMPRESSION DES FICHIERS DE L ARCHIVE
If OpenWindow(0, 0, 0, 200, 40, #PB_Window_ScreenCentered, "Décompression en cours...")
SetWindowPos_(WindowID(), #HWND_TOPMOST, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
CreateGadgetList(WindowID())
ProgressBarGadget(110, 10, 10, 180, 20, 0, 100,#PB_ProgressBar_Smooth)
sa=OpenPack(pack$)
For a=1 To nfich
SelectElement(fichier(),a-1)
FileLength=fichier()\taille
Fich$=path$+fichier()\nom
decompress()
Next
ClosePack()
CloseWindow(0)
EndIf
DeleteFile(pack$)
EndIf
DataSection
Fichier:
IncludeBinary "RAZ.pb"
EndDataSection