web-dev-qa-db-fra.com

Conversion de .bat en .exe sans logiciel externe supplémentaire (Créer SFX)

En suivant les mêmes étapes que cela guide . J'essaie de convertir de bat en exe sans installer de nouveau logiciel tel que Bat to Exe Converter . La raison pour laquelle j'utilise cette méthode est que toutes les machines de mon lieu de travail ont déjà 7Zip installé et peuvent l'utiliser, mais je ne suis pas autorisé à faire fonctionner le script en utilisant un logiciel externe non présent sur le serveur principal pour être compatible avec n'importe quelle machine du compagnie.

J'ai les éléments suivants TEST.bat :

ECHO This is a Test bat to exe
pause

et le config.txt :

;!@Install@!UTF-8! 
RunProgram="TEST.bat" 
;!@InstallEnd@! 

puis j'appelle la ligne de commande suivante (dans un autre .bat):

COPY /B "%PathTo7Zip%\7zCon.sfx" + %Config% + %Source7ZFile% %OutputFile%

%PathTo7Zip% est le répertoire de 7zCon.sfx %Config% est le fichier config.txt au-dessus de %Source7ZFile% est mon archive .7z et %OutputFile% est mon fichier de sortie TEST.exe qui devrait soi-disant exécuter le fichier bat lorsque je l'appelle selon l'auteur du guide. Cependant, appeler TEST.exe déclenche la décompression de l'archive .7z (ce qui est prévu) puis se ferme sans exécuter TEST.bat .

Cependant, l'auteur explique:

Conclusion:

Il est important de noter que bien que le fichier résultant s'exécute exactement de la même manière que le fichier BAT source, il ne s'agit pas d'une véritable conversion de lot en exécutable. Le fichier résultant est un EXE, mais il est destiné à être utilisé pour les programmes d'installation auto-extractibles. Lorsque vous exécutez le fichier EXE résultant, le processus se présente comme suit:

  1. Le contenu du fichier EXE est extrait dans le répertoire temporaire.
  2. Le fichier de configuration généré par le script est lu.
  3. Le fichier batch contenu dans le fichier EXE est exécuté dans une nouvelle fenêtre de commande.
  4. Une fois terminé, les fichiers temporaires sont supprimés.
11
Hadi Farah

Reportez-vous à cela Comment un fichier .bat peut-il être "converti" en .exe sans outils tiers?

Le script d'origine accepte deux arguments - le fichier .bat que vous souhaitez convertir et l'exécutable cible.

J'ai fait une petite modification pour accepter un argument: juste le fichier .bat que vous voulez convertir.

Donc, dans ce cas, vous pouvez faire glisser et déposer votre fichier de commandes sur ce script bat2exeIEXP.bat et ce sera converti en fichier exe avec le même nom que le fichier batch.

enter image description here

;@echo off
;Title Converting batch scripts to file.exe with iexpress
;Mode 75,3 & color 0A
;Rem Original Script https://github.com/npocmaka/batch.scripts/edit/master/hybrids/iexpress/bat2exeIEXP.bat
;echo(
;if "%~1" equ "" (
    ;echo  Usage : Drag and Drop your batch file over this script:"%~nx0"  
    ;Timeout /T 5 /nobreak>nul & Exit
;)
;set "target.exe=%__cd__%%~n1.exe"
;set "batch_file=%~f1"
;set "bat_name=%~nx1"
;set "bat_dir=%~dp1"
;Set "sed=%temp%\2exe.sed"
;echo              Please  wait a while ...  Creating "%~n1.exe" ...
;copy /y "%~f0" "%sed%" >nul
;(
    ;(echo()
    ;(echo(AppLaunched=cmd /c "%bat_name%")
    ;(echo(TargetName=%target.exe%)
    ;(echo(FILE0="%bat_name%")
    ;(echo([SourceFiles])
    ;(echo(SourceFiles0=%bat_dir%)
    ;(echo([SourceFiles0])
    ;(echo(%%FILE0%%=)
;)>>"%sed%"

;iexpress /n /q /m %sed%
;del /q /f "%sed%"
;exit /b 0

[Version]
Class=IEXPRESS
SEDVersion=3
[Options]
PackagePurpose=InstallApp
ShowInstallProgramWindow=0
HideExtractAnimation=1
UseLongFileName=1
InsideCompressed=0
CAB_FixedSize=0
CAB_ResvCodeSigning=0
RebootMode=N
InstallPrompt=%InstallPrompt%
DisplayLicense=%DisplayLicense%
FinishMessage=%FinishMessage%
TargetName=%TargetName%
FriendlyName=%FriendlyName%
AppLaunched=%AppLaunched%
PostInstallCmd=%PostInstallCmd%
AdminQuietInstCmd=%AdminQuietInstCmd%
UserQuietInstCmd=%UserQuietInstCmd%
SourceFiles=SourceFiles

[Strings]
InstallPrompt=
DisplayLicense=
FinishMessage=
FriendlyName=-
PostInstallCmd=<None>
AdminQuietInstCmd=
32
Hackoo

Toutes les machines Windows avec .NET installées sont livrées avec des fichiers appelés vbc.exe, csc.exe et jsc.exe, à% windir%\Microsoft.NET\Framework (pour 32 bits) ou Framework64 (pour 64 bits), dans un nom de dossier commençant avec "v".

Guide sur le compilateur C #:
https://docs.Microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/command-line-building-with-csc-exe

Guide sur le compilateur Visual Basic:
https://docs.Microsoft.com/en-us/dotnet/visual-basic/reference/command-line-compiler/index
Exemples de commandes:
https://docs.Microsoft.com/en-us/dotnet/visual-basic/reference/command-line-compiler/sample-compilation-command-lines

Un guide de Jscripting:
http://www.phpied.com/make-your-javascript-a-windows-exe/

Une procédure pas à pas simple de @Itchy pour regrouper un fichier batch dans un fichier exe avec csc.exe:
Comment un fichier .bat peut-il être "converti" en .exe sans outils tiers?

Dans le même dossier, un fichier appelé ngen.exe peut également être trouvé, qui "génère du code natif de sorte que l'application n'a pas besoin de passer par le processus de compilation juste à temps au moment de l'exécution".
Voir:
https://books.google.com.au/books?id=iZM1jyqiyakC&pg=PA453&lpg=PA453&dq=guide++vbc.exe&source=bl&ots=UB041mSfni&sig=ACfU3U0xtmS8X9p0eDKD-U6= X & ved = 2ahUKEwjshc6589_lAhXXXSsKHcTaBlUQ6AEwD3oECAYQAQ # v = onepage & q = guide% 20% 20vbc.exe & f = false

1
Zimba