[R] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Bonjour,
Quelqu'un connaîtrait-il un logiciel ou une solution qui permettrait de rassembler plusieurs fichiers à exécuter (exe, dll, dat, etc) au sein d'un même exécutable.
Je m’explique : Réunir/regrouper des fichiers dans une archive (box) sans avoir à faire d'installation ou a décompresser l'archive.
Merci d'avance.
Cordialement.
Quelqu'un connaîtrait-il un logiciel ou une solution qui permettrait de rassembler plusieurs fichiers à exécuter (exe, dll, dat, etc) au sein d'un même exécutable.
Je m’explique : Réunir/regrouper des fichiers dans une archive (box) sans avoir à faire d'installation ou a décompresser l'archive.
Merci d'avance.
Cordialement.
Modifié en dernier par Boulanza le dim. 21 juil. 2019 10:41, modifié 2 fois.
- jchd
- AutoIt MVPs (MVP)
- Messages : 2282
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Windows donne nativement accès aux fichiers contenus dans une archive .zip
Sinon, un SFX (archive auto-extractible) conviendrait-il ? Voir Google.
A part ça, je ne vois pas comment accéder à un fichier dans une archive (compressée ou non) sans ouvrir l'archive d'une façon ou d'une autre.
Sinon, un SFX (archive auto-extractible) conviendrait-il ? Voir Google.
A part ça, je ne vois pas comment accéder à un fichier dans une archive (compressée ou non) sans ouvrir l'archive d'une façon ou d'une autre.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Tout d'abord merci pour votre réponse.
Je ne cherche pas à créer un installateur, ou une archive auto exécutable (zip) mais rassembler plusieurs fichiers (les fichiers de mon programme) dans une boite (box) exécutable (Équivalent à Iexpress de Windows ou Windev).
Cordialement.
Je ne cherche pas à créer un installateur, ou une archive auto exécutable (zip) mais rassembler plusieurs fichiers (les fichiers de mon programme) dans une boite (box) exécutable (Équivalent à Iexpress de Windows ou Windev).
Cordialement.
- walkson
- Modérateur
- Messages : 1036
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Bonjour,
Je ne sais pas si cela correspond à votre attente ?
https://www.autoitscript.com/forum/topi ... es-easily/
Je ne sais pas si cela correspond à votre attente ?
https://www.autoitscript.com/forum/topi ... es-easily/
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Merci walkson pour votre réponse. Ma demande va dans ce sens. Malheureusement les scripts du lien me laisse dans une confusion totale, je ne serrais pas cabale de décelé leurs fonctionnement correctement. Par contre c'est vraiment ingénieux tous ces script, ils méritent d'être décortiquées... C'est inédit. votre aide est la bienvenue.
Cordialement.
Cordialement.
- walkson
- Modérateur
- Messages : 1036
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Le code de Uez génère un script. Soit vous l'utilisez en include, soit par fonction comme dans le zip
(je passe par un zip car le code est trop long)
Les 2 premieres icons sont créées en "dur" puis chargées dans les GUICtrlCreateIcon() un peu comme fileinstalle()
la troisième est créée en mémoire puis montée sur un label. Méthode que j'utilise quand j'utilise des images dans une gui
Voila le principe de base
Comme l'explique Uez, on peut utiliser différents fichiers (image, son, texte et même des exe à redéployer) Parcourez le sujet car Uez donne beaucoup d'exemples et de solutions
(je passe par un zip car le code est trop long)
Les 2 premieres icons sont créées en "dur" puis chargées dans les GUICtrlCreateIcon() un peu comme fileinstalle()
la troisième est créée en mémoire puis montée sur un label. Méthode que j'utilise quand j'utilise des images dans une gui
Voila le principe de base
Comme l'explique Uez, on peut utiliser différents fichiers (image, son, texte et même des exe à redéployer) Parcourez le sujet car Uez donne beaucoup d'exemples et de solutions
- Fichiers joints
-
- ImagesBinaires.zip
- (166.27 Kio) Téléchargé 348 fois
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Merci pour votre aimable aide,
Effectivement, Uez, a mis à notre disposition plusieurs exemples, que j'ai déjà testé, mais aucun d'eux ne marche correctement je ne comprends pas pourquoi ça ne marche pas ? Je continus à tester à nouveau.
Cordialement.
Effectivement, Uez, a mis à notre disposition plusieurs exemples, que j'ai déjà testé, mais aucun d'eux ne marche correctement je ne comprends pas pourquoi ça ne marche pas ? Je continus à tester à nouveau.
Cordialement.
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Comment ?Le code de Uez génère un script.
IMAGESBINAIRES.ZIP ça fonctionne correctement, mais, généralement, quel est son utilité ?
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Bonjour.
Pourquoi
Pourquoi
FileInstall()
ne ferait-il pas l'affaire ?Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- walkson
- Modérateur
- Messages : 1036
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
dans mon code, vous avez 3 icons écrits en binaire par le programme d'Uez
Ces 3 icons sont restitués soit en image, soit dans la mémoire pour s'afficher sur une gui
L'utilité est d'avoir des fichiers intégrés dans le exe compilé par autoit semblable à FileInstall() comme le suggère Tlem
Autre avantage est de travailler uniquement avec la mémoire
Ces 3 icons sont restitués soit en image, soit dans la mémoire pour s'afficher sur une gui
L'utilité est d'avoir des fichiers intégrés dans le exe compilé par autoit semblable à FileInstall() comme le suggère Tlem
Autre avantage est de travailler uniquement avec la mémoire
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Merci pour vos réponses, c'est très claire Monsieur walkson. Je vais suivre aussi le conseil de Monsieur Tlem...
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Bonjour,
Pour Monsieur Tlem. D'après la doc : "La fonction FileInstall() sert à inclure des fichiers dans un script AutoIt compilé. Ces fichiers peuvent ensuite être "extrait" au cours de l'exécution du script compilé si l'instruction est exécutée."
Ce que je cherche est de réunir/regrouper des fichiers dans une archive (box) sans avoir à faire d'installation ou a décompresser l'archive.
Cordialement.
Pour Monsieur Tlem. D'après la doc : "La fonction FileInstall() sert à inclure des fichiers dans un script AutoIt compilé. Ces fichiers peuvent ensuite être "extrait" au cours de l'exécution du script compilé si l'instruction est exécutée."
Ce que je cherche est de réunir/regrouper des fichiers dans une archive (box) sans avoir à faire d'installation ou a décompresser l'archive.
Cordialement.
- walkson
- Modérateur
- Messages : 1036
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
un autre avantage par rapport à FileInstall(), ce n'est pas bloqué par l'antivirus (avast)
Je viens de tester le code d'Uez et il retourne des erreurs dues à des déclarations en double et des includes manquantes
Je vous mets le code corrigé pour tester
Je viens de tester le code d'Uez et il retourne des erreurs dues à des déclarations en double et des includes manquantes
Je vous mets le code corrigé pour tester
- Fichiers joints
-
- File to Base64 String Code Generator.zip
- File to Base64 String Code Generator v1.20 Build 2015-01-20
- (125.32 Kio) Téléchargé 347 fois
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
C'est une bonne chose si l'antivirus (avast) le fait passer.
360 Total Security il le considère comme un virus.
le code "FILE TO BASE64 STRING CODE GENERATOR" marche parfaitement.
Voila ma procédure:
1- Je génère mon fichier "test.au3" avec le code "FILE TO BASE64 STRING CODE GENERATOR".
2- je copie le code "test.au3" et je le colle au dessus du script généré par "FILE TO BASE64 STRING CODE GENERATOR" puis je compile "test.exe"
3- J’exécute "test.exe" il marche sans problème.
svp: Est ce la procédure est exacte ?
N.B: Test le process avec "procexp.exe" Résultat: Path Error operning process ("test.exe" il marche sans problème)
360 Total Security il le considère comme un virus.
le code "FILE TO BASE64 STRING CODE GENERATOR" marche parfaitement.
Voila ma procédure:
1- Je génère mon fichier "test.au3" avec le code "FILE TO BASE64 STRING CODE GENERATOR".
2- je copie le code "test.au3" et je le colle au dessus du script généré par "FILE TO BASE64 STRING CODE GENERATOR" puis je compile "test.exe"
3- J’exécute "test.exe" il marche sans problème.
svp: Est ce la procédure est exacte ?
N.B: Test le process avec "procexp.exe" Résultat: Path Error operning process ("test.exe" il marche sans problème)
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Vous n'avez aucune extraction à réaliser après compilation, c'est le script qui gère automatiquement.Boulanza a écrit :Bonjour,
Pour Monsieur Tlem. D'après la doc : "La fonction FileInstall() sert à inclure des fichiers dans un script AutoIt compilé. Ces fichiers peuvent ensuite être "extrait" au cours de l'exécution du script compilé si l'instruction est exécutée."
Ce que je cherche est de réunir/regrouper des fichiers dans une archive (box) sans avoir à faire d'installation ou a décompresser l'archive.
Cordialement.
Votre script devient votre box.
Quand aux antivirus, aucunes solutions proposées ne conviendra à 100%.
Pour éviter les problèmes d'antivirus la seule solution que j'ai trouvé, c'est de créer un autoextractible 7Zip qui lance par ligne de commande le script non compilé ou éventuellement compilé en a3x (en ayant pris soins d'embarquer l'exécutable autoit3.exe pour que le script fonctionne partout).
Envoyé de mon Smartphone en utilisant Tapatalk
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Bonsoir,
Monsieur Tlem, je vous remercie de cet éclaircissement.
Je vais tester la fonction FileInstall() et je vous ferais mes constatations.
Cordialement.
Monsieur Tlem, je vous remercie de cet éclaircissement.
Je vais tester la fonction FileInstall() et je vous ferais mes constatations.
Cordialement.
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Bonjour,
J'ai testé plusieurs exemples sans succès.
Voici un exemple copié du lien : https://www.autoitscript.com/forum/topi ... ent-534807
Cordialement.
J'ai testé plusieurs exemples sans succès.
Voici un exemple copié du lien : https://www.autoitscript.com/forum/topi ... ent-534807
#include <File.au3>
Global $hMain, $hEdit, $hExtension, $hDestPath, $hFlag, $hGetDir, $hCopy
Global $sDrive, $sDir, $sFName, $sExt
Global $bExcludeScriptDirLongName = True
$hMain = GUICreate('FileInstall Directory', 580, 380)
$hEdit = GUICtrlCreateEdit('', 10, 10, 560, 300)
GUICtrlCreateLabel('Extension:', 10, 318, 50, 20, 0x001)
$hExtension = GUICtrlCreateInput('*', 65, 315, 50, 20)
GUICtrlCreateLabel('Destination Path:', 120, 318, 90, 20, 0x001)
$hDestPath = GUICtrlCreateInput('@TempDir & ""', 210, 315, 200, 20)
GUICtrlCreateLabel('Flag:', 415, 318, 30, 20, 0x001)
$hFlag = GUICtrlCreateCombo('', 445, 315, 40, 300)
GUICtrlSetData($hFlag, '0|1|', '0')
$hDirDrive = GUICtrlCreateCheckbox("Long Path", 500, 315)
$GetDir = GUICtrlCreateButton("Directory Get Files", 12, 345, 150, 30)
$hCopy = GUICtrlCreateButton("Copy Data", 174, 345, 150, 30)
$Recursive = GUICtrlCreateCheckbox("Recursive", 502, 336, 97, 17)
$IsRecursive = False
GUISetState()
While 1
Switch GUIGetMsg()
Case - 3
Exit
Case $GetDir
$Dir = FileSelectFolder('Select a directory to fileinstall', @HomeDrive)
If Not @error Then
$Ext = GUICtrlRead($hExtension)
If GUICtrlRead($Recursive) = 1 then $IsRecursive = True
$Files = _FileListToArrayEx($Dir, '*.' & $Ext, 1,'',$IsRecursive)
If IsArray($Files) Then
$bExcludeScriptDirLongName = (GUICtrlRead($hDirDrive) <> 1)
Dim $sHold = '', $DestPathRoot = GUICtrlRead($hDestPath), $nFlag = GUICtrlRead($hFlag)
$sDirHold = 'If Not FileExists("' & $DestPathRoot & '") Then DirCreate("' & $DestPathRoot & '")' & @CRLF
For $iCC = 1 To UBound($Files) - 1
If ($bExcludeScriptDirLongName) Then
_PathSplit($Files[$iCC], $sDrive, $sDir, $sFName, $sExt)
If StringRegExpReplace(@ScriptDir, "+z", "") = StringRegExpReplace($sDrive & $sDir, "+z", "") Then
$Files[$iCC] = $sFName & $sExt
EndIf
EndIf
If StringLeft($Files[$iCC],4) = "DIR " Then
$DirNameNoRoot = StringTrimLeft($Files[$iCC],StringLen($Dir)+4)
$sDirHold &= 'If Not FileExists("' & $DestPathRoot & $DirNameNoRoot & '") Then DirCreate("' & $DestPathRoot & $DirNameNoRoot & '")' & @CRLF
Else
$FileNameNoRoot = StringTrimLeft($Files[$iCC],StringLen($Dir))
$sHold &= 'FileInstall("' & $Files[$iCC] & '", "' & $DestPathRoot & $FileNameNoRoot & '", ' & $nFlag & ')' & @CRLF
EndIf
Next
GUICtrlSetData($hEdit, '')
GUICtrlSetData($hEdit, StringTrimRight($sDirHold, 2) & @CRLF & StringTrimRight($sHold, 2))
EndIf
EndIf
$IsRecursive = False
Case $hCopy
ClipPut(GUICtrlRead($hEdit))
EndSwitch
WEnd
Func _FileListToArrayEx($sPath, $sFilter = '*.*', $iFlag = 0, $sExclude = '', $iRecurse = False)
If Not FileExists($sPath) Then Return SetError(1, 1, '')
If $sFilter = -1 Or $sFilter = Default Then $sFilter = '*.*'
If $iFlag = -1 Or $iFlag = Default Then $iFlag = 0
If $sExclude = -1 Or $sExclude = Default Then $sExclude = ''
Local $aBadChar[6] = ['', '/', ':', '>', '<', '|']
$sFilter = StringRegExpReplace($sFilter, 's*;s*', ';')
If StringRight($sPath, 1) <> '' Then $sPath &= ''
For $iCC = 0 To 5
If StringInStr($sFilter, $aBadChar[$iCC]) Or _
StringInStr($sExclude, $aBadChar[$iCC]) Then Return SetError(2, 2, '')
Next
If StringStripWS($sFilter, 8) = '' Then Return SetError(2, 2, '')
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, '')
Local $oFSO = ObjCreate("Scripting.FileSystemObject"), $sTFolder
$sTFolder = $oFSO.GetSpecialFolder(2)
Local $hOutFile = @TempDir & $oFSO.GetTempName
If Not StringInStr($sFilter, ';') Then $sFilter &= ';'
Local $aSplit = StringSplit(StringStripWS($sFilter, 8), ';'), $DestPathRoot, $sHoldSplit
For $iCC = 1 To $aSplit[0]
If StringStripWS($aSplit[$iCC],8) = '' Then ContinueLoop
If StringLeft($aSplit[$iCC], 1) = '.' And _
UBound(StringSplit($aSplit[$iCC], '.')) - 2 = 1 Then $aSplit[$iCC] = '*' & $aSplit[$iCC]
$sHoldSplit &= '"' & $sPath & $aSplit[$iCC] & '" '
Next
$sHoldSplit = StringTrimRight($sHoldSplit, 1)
If $iRecurse Then
RunWait(@Comspec & ' /c dir /b /s /a ' & $sHoldSplit & ' > "' & $hOutFile & '"', '', @SW_HIDE)
Else
RunWait(@ComSpec & ' /c dir /b /a ' & $sHoldSplit & ' /o-e /od > "' & $hOutFile & '"', '', @SW_HIDE)
EndIf
$DestPathRoot &= FileRead($hOutFile)
If Not FileExists($hOutFile) Then Return SetError(4, 4, '')
FileDelete($hOutFile)
If StringStripWS($DestPathRoot, 8) = '' Then SetError(4, 4, '')
Local $aFSplit = StringSplit(StringTrimRight(StringStripCR($DestPathRoot), 1), @LF)
Local $sHold
For $iCC = 1 To $aFSplit[0]
If $sExclude And StringLeft($aFSplit[$iCC], _
StringLen(StringReplace($sExclude, '*', ''))) = StringReplace($sExclude, '*', '') Then ContinueLoop
If StringInStr(FileGetAttrib($sPath & '' & $aFSplit[$iCC]), 'd') = 0 And _
StringInStr(FileGetAttrib($aFSplit[$iCC]), 'd') = 0 Then
If StringRegExp($aFSplit[$iCC], 'w:') = 0 Then
$sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
Else
$sHold &= $aFSplit[$iCC] & Chr(1)
EndIf
EndIf
If StringInStr(FileGetAttrib($sPath & '' & $aFSplit[$iCC]), 'd') Or _
StringInStr(FileGetAttrib($aFSplit[$iCC]), 'd') Then
If StringRegExp($aFSplit[$iCC], 'w:') = 0 Then
$sHold &= "DIR " & $sPath & $aFSplit[$iCC] & Chr(1)
Else
$sHold &= "DIR " & $aFSplit[$iCC] & Chr(1)
EndIf
EndIf
Next
If StringTrimRight($sHold, 1) Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1))
Return SetError(4, 4, '')
EndFunc
Global $hMain, $hEdit, $hExtension, $hDestPath, $hFlag, $hGetDir, $hCopy
Global $sDrive, $sDir, $sFName, $sExt
Global $bExcludeScriptDirLongName = True
$hMain = GUICreate('FileInstall Directory', 580, 380)
$hEdit = GUICtrlCreateEdit('', 10, 10, 560, 300)
GUICtrlCreateLabel('Extension:', 10, 318, 50, 20, 0x001)
$hExtension = GUICtrlCreateInput('*', 65, 315, 50, 20)
GUICtrlCreateLabel('Destination Path:', 120, 318, 90, 20, 0x001)
$hDestPath = GUICtrlCreateInput('@TempDir & ""', 210, 315, 200, 20)
GUICtrlCreateLabel('Flag:', 415, 318, 30, 20, 0x001)
$hFlag = GUICtrlCreateCombo('', 445, 315, 40, 300)
GUICtrlSetData($hFlag, '0|1|', '0')
$hDirDrive = GUICtrlCreateCheckbox("Long Path", 500, 315)
$GetDir = GUICtrlCreateButton("Directory Get Files", 12, 345, 150, 30)
$hCopy = GUICtrlCreateButton("Copy Data", 174, 345, 150, 30)
$Recursive = GUICtrlCreateCheckbox("Recursive", 502, 336, 97, 17)
$IsRecursive = False
GUISetState()
While 1
Switch GUIGetMsg()
Case - 3
Exit
Case $GetDir
$Dir = FileSelectFolder('Select a directory to fileinstall', @HomeDrive)
If Not @error Then
$Ext = GUICtrlRead($hExtension)
If GUICtrlRead($Recursive) = 1 then $IsRecursive = True
$Files = _FileListToArrayEx($Dir, '*.' & $Ext, 1,'',$IsRecursive)
If IsArray($Files) Then
$bExcludeScriptDirLongName = (GUICtrlRead($hDirDrive) <> 1)
Dim $sHold = '', $DestPathRoot = GUICtrlRead($hDestPath), $nFlag = GUICtrlRead($hFlag)
$sDirHold = 'If Not FileExists("' & $DestPathRoot & '") Then DirCreate("' & $DestPathRoot & '")' & @CRLF
For $iCC = 1 To UBound($Files) - 1
If ($bExcludeScriptDirLongName) Then
_PathSplit($Files[$iCC], $sDrive, $sDir, $sFName, $sExt)
If StringRegExpReplace(@ScriptDir, "+z", "") = StringRegExpReplace($sDrive & $sDir, "+z", "") Then
$Files[$iCC] = $sFName & $sExt
EndIf
EndIf
If StringLeft($Files[$iCC],4) = "DIR " Then
$DirNameNoRoot = StringTrimLeft($Files[$iCC],StringLen($Dir)+4)
$sDirHold &= 'If Not FileExists("' & $DestPathRoot & $DirNameNoRoot & '") Then DirCreate("' & $DestPathRoot & $DirNameNoRoot & '")' & @CRLF
Else
$FileNameNoRoot = StringTrimLeft($Files[$iCC],StringLen($Dir))
$sHold &= 'FileInstall("' & $Files[$iCC] & '", "' & $DestPathRoot & $FileNameNoRoot & '", ' & $nFlag & ')' & @CRLF
EndIf
Next
GUICtrlSetData($hEdit, '')
GUICtrlSetData($hEdit, StringTrimRight($sDirHold, 2) & @CRLF & StringTrimRight($sHold, 2))
EndIf
EndIf
$IsRecursive = False
Case $hCopy
ClipPut(GUICtrlRead($hEdit))
EndSwitch
WEnd
Func _FileListToArrayEx($sPath, $sFilter = '*.*', $iFlag = 0, $sExclude = '', $iRecurse = False)
If Not FileExists($sPath) Then Return SetError(1, 1, '')
If $sFilter = -1 Or $sFilter = Default Then $sFilter = '*.*'
If $iFlag = -1 Or $iFlag = Default Then $iFlag = 0
If $sExclude = -1 Or $sExclude = Default Then $sExclude = ''
Local $aBadChar[6] = ['', '/', ':', '>', '<', '|']
$sFilter = StringRegExpReplace($sFilter, 's*;s*', ';')
If StringRight($sPath, 1) <> '' Then $sPath &= ''
For $iCC = 0 To 5
If StringInStr($sFilter, $aBadChar[$iCC]) Or _
StringInStr($sExclude, $aBadChar[$iCC]) Then Return SetError(2, 2, '')
Next
If StringStripWS($sFilter, 8) = '' Then Return SetError(2, 2, '')
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, '')
Local $oFSO = ObjCreate("Scripting.FileSystemObject"), $sTFolder
$sTFolder = $oFSO.GetSpecialFolder(2)
Local $hOutFile = @TempDir & $oFSO.GetTempName
If Not StringInStr($sFilter, ';') Then $sFilter &= ';'
Local $aSplit = StringSplit(StringStripWS($sFilter, 8), ';'), $DestPathRoot, $sHoldSplit
For $iCC = 1 To $aSplit[0]
If StringStripWS($aSplit[$iCC],8) = '' Then ContinueLoop
If StringLeft($aSplit[$iCC], 1) = '.' And _
UBound(StringSplit($aSplit[$iCC], '.')) - 2 = 1 Then $aSplit[$iCC] = '*' & $aSplit[$iCC]
$sHoldSplit &= '"' & $sPath & $aSplit[$iCC] & '" '
Next
$sHoldSplit = StringTrimRight($sHoldSplit, 1)
If $iRecurse Then
RunWait(@Comspec & ' /c dir /b /s /a ' & $sHoldSplit & ' > "' & $hOutFile & '"', '', @SW_HIDE)
Else
RunWait(@ComSpec & ' /c dir /b /a ' & $sHoldSplit & ' /o-e /od > "' & $hOutFile & '"', '', @SW_HIDE)
EndIf
$DestPathRoot &= FileRead($hOutFile)
If Not FileExists($hOutFile) Then Return SetError(4, 4, '')
FileDelete($hOutFile)
If StringStripWS($DestPathRoot, 8) = '' Then SetError(4, 4, '')
Local $aFSplit = StringSplit(StringTrimRight(StringStripCR($DestPathRoot), 1), @LF)
Local $sHold
For $iCC = 1 To $aFSplit[0]
If $sExclude And StringLeft($aFSplit[$iCC], _
StringLen(StringReplace($sExclude, '*', ''))) = StringReplace($sExclude, '*', '') Then ContinueLoop
If StringInStr(FileGetAttrib($sPath & '' & $aFSplit[$iCC]), 'd') = 0 And _
StringInStr(FileGetAttrib($aFSplit[$iCC]), 'd') = 0 Then
If StringRegExp($aFSplit[$iCC], 'w:') = 0 Then
$sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
Else
$sHold &= $aFSplit[$iCC] & Chr(1)
EndIf
EndIf
If StringInStr(FileGetAttrib($sPath & '' & $aFSplit[$iCC]), 'd') Or _
StringInStr(FileGetAttrib($aFSplit[$iCC]), 'd') Then
If StringRegExp($aFSplit[$iCC], 'w:') = 0 Then
$sHold &= "DIR " & $sPath & $aFSplit[$iCC] & Chr(1)
Else
$sHold &= "DIR " & $aFSplit[$iCC] & Chr(1)
EndIf
EndIf
Next
If StringTrimRight($sHold, 1) Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1))
Return SetError(4, 4, '')
EndFunc
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Merci de lire avec attention les remarques de la fonction
Si le Francais vous rebute, lisez la version Anglaise : https://www.autoitscript.com/autoit3/do ... nstall.htm
FileInstall()
. <= Cliquez sur le lien.Si le Francais vous rebute, lisez la version Anglaise : https://www.autoitscript.com/autoit3/do ... nstall.htm
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Bonjour Telm,
Bien sûr que j'ai lu la doc, mais lorsque je compile le code en .exe il ne ne se compile pas, par-contre en testant au3 il marche parfaitement.
Cordialement.
Bien sûr que j'ai lu la doc, mais lorsque je compile le code en .exe il ne ne se compile pas, par-contre en testant au3 il marche parfaitement.
DirCreate(@ScriptDir & "\skin\1\")
FileInstall(@ScriptDir & "\Export\*.*",@ScriptDir & "\skin\1\*.*")
FileInstall(@ScriptDir & "\Export\*.*",@ScriptDir & "\skin\1\*.*")
Pour mois et suivant ma demande le box doit avoir la forme Box.exe ?Vous n'avez aucune extraction à réaliser après compilation, c'est le script qui gère automatiquement.
Votre script devient votre box.
Cordialement.
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Générer un exécutable sans avoir à faire d'installation ou à décompresser l'archive.
Bon, comme d'habitude les choses vont tourner en rond par manque d'éléments et de précision.
Merci de décrire avec le maximum de détails le fonctionnement désiré ainsi que de nous indiquer à la louche la taille et le nombre de fichier à traiter.
Ps: pour FileInstall(), je doute que vous ayez LU AVEC ATTENTION sinon vous n'auriez pas commis l'erreur qu'il y a dans votre script.
Envoyé de mon Smartphone en utilisant Tapatalk
Merci de décrire avec le maximum de détails le fonctionnement désiré ainsi que de nous indiquer à la louche la taille et le nombre de fichier à traiter.
Ps: pour FileInstall(), je doute que vous ayez LU AVEC ATTENTION sinon vous n'auriez pas commis l'erreur qu'il y a dans votre script.
Envoyé de mon Smartphone en utilisant Tapatalk
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".