私はできるだけ多くのプログラムやアプリをポータブル化するのが好きなので%temp%
、選択したファイル (通常は元の .exe、または必要に応じて .bat ファイル) に展開して実行する自己実行 SFX アーカイブを定期的に作成しています。
2 つのファイルを持つのが好きではないため、アプリの x86 バージョンと x64 バージョンを 1 つのバージョンに結合しようとしています。そのため、異なるバージョンのプログラムを含む 2 つのフォルダー (「x86」と「x64」) と、ユーザーのビット数をチェックしてから適切なバージョンを起動する .bat ファイルがルートにあります。ただし、いくつか問題があります。
これが私のコードです:
checkandrun.bat
@echo off
goto Payload
:Payload
echo Checking architecture bit-type...
IF EXIST "%systemRoot%\SysWOW64" (
echo Your version of Windows is 64-bit [x64]
start "x64\GCFScape.exe" >nul
) ELSE (
echo Your version of Windows is 32-bit [x86]
start "x86\GCFScape.exe" >nul
)
echo.
echo Starting the appropriate version...
goto End
:End
echo.
echo This window will close in 20 seconds.
ping localhost -n 21 >nul
exit
使用するstart
と、元のコマンド ウィンドウは必要に応じて正しく終了しますが、新しい一定のコマンド ウィンドウが開き、アプリは起動しません。
使用しない場合start
、アプリは起動しますが、コマンド ウィンドウは開いたままになり、.exe の起動に使用されたコード行を超えて進みません。アプリ自体を閉じると、コマンド ウィンドウは通常どおりコマンドに進み、正常にexit
閉じます。
これを回避する方法はありますか?私はこれまでこの種の問題を抱えたことはありません。
Dropbox の SFX アーカイブへのリンクを次に示します。環境と効果を実際に確認したい場合は、https ://dl.dropbox.com/u/27573003/Social%20Distribution/gcfscape182.exe を参照してください。