![見出し画像](https://assets.st-note.com/production/uploads/images/160240046/rectangle_large_type_2_4576266748ddbc2c3819aaea7ef7029c.png?width=1200)
Windows標準機能で解凍先指定自己解凍形式を作成する方法
Windowsには、標準で提供されている「IExpress」というツールを使って自己解凍形式(SFX:Self-extracting Archive)を作成する機能があります。しかし「IExpress」では解凍先を指定できません。この記事では、`archive.zip`を解凍し、任意の実行ファイルを起動する仕組みを`run.cmd`バッチスクリプトとIExpressを使って作成する手順を紹介します。これにより、追加のソフトウェアをインストールせずに、解凍と処理の自動化が可能です。
準備するもの
archive.zip - 解凍したいファイルを含んだZIPアーカイブ。
run.cmd - ZIPファイルを解凍して指定したファイルを実行するバッチスクリプト。
以下では、この2つを使って、自己解凍形式を作成する手順を説明します。
1. バッチファイルの作成
まずは、`run.cmd`という名前で以下の内容をバッチファイルとして保存します。このスクリプトは、`archive.zip`を解凍し、解凍後に任意の実行ファイル(`.exe`、`.bat`、`.ps1`)を実行します。
解凍のみ実行する場合は実行する場合は「実行ファイルの指定」以降をコメントアウトするか削除してください)
@echo off
REM ================================================
REM 解凍および実行スクリプト
REM このスクリプトは同一フォルダにあるarchive.zipを指定したフォルダに解凍し、
REM 解凍後に任意の実行ファイル(exe, bat, ps1)を実行します。
REM 実行するファイルはバッチ内で指定できます。
REM ================================================
REM 解凍先フォルダのパスを指定
set EXTRACT_DIR=C:\extracted_files
REM archive.zipが存在するか確認
set ZIP_FILE=%~dp0archive.zip
if not exist "%ZIP_FILE%" (
echo archive.zip が存在しません。
pause
exit /b
)
REM 解凍先ディレクトリの作成
if not exist "%EXTRACT_DIR%" mkdir "%EXTRACT_DIR%"
REM archive.zipの解凍
powershell -Command "Expand-Archive -Path '%ZIP_FILE%' -DestinationPath '%EXTRACT_DIR%'"
REM 実行ファイルの指定
REM exe, bat, ps1から選択し、ファイル名を指定してください
set EXEC_FILE=%EXTRACT_DIR%\example.exe
REM set EXEC_FILE=%EXTRACT_DIR%\example.bat
REM set EXEC_FILE=%EXTRACT_DIR%\example.ps1
REM 実行ファイルの拡張子取得
for %%F in (%EXEC_FILE%) do set EXT=%%~xF
REM ファイルの実行
if /I "%EXT%"==".exe" (
echo 実行ファイルを起動します: %EXEC_FILE%
"%EXEC_FILE%"
) else if /I "%EXT%"==".bat" (
echo バッチファイルを起動します: %EXEC_FILE%
call "%EXEC_FILE%"
) else if /I "%EXT%"==".ps1" (
echo PowerShellスクリプトを起動します: %EXEC_FILE%
powershell -ExecutionPolicy Bypass -File "%EXEC_FILE%"
) else (
echo 未対応のファイルタイプです: %EXEC_FILE%
)
pause
このスクリプトでは、`archive.zip`を解凍し、その中から指定されたファイルを実行することが可能です。PowerShellを使って解凍し、ファイル形式に応じた適切な方法でファイルを起動します。
2. IExpressを使った自己解凍形式の作成
次に、Windows標準ツールであるIExpressを使って、解凍先を指定した自己解凍形式を作成します。
IExpressの実行には管理者権限が必要です(作ったファイルが管理権限で実行されるわけではなありません)
IExpressの起動
「Win + R」キーを押して「ファイル名を指定して実行」画面を開き、`iexpress`と入力してEnterキーを押します。
IExpressウィザードの設定
Create new Self Extraction Directive file を選択し、「次へ」をクリックします。
Package Title を入力します(例:「自己解凍パッケージ」)。
Confirmation Prompt では「No prompt」を選択します。
License Agreement も「Do not display a license」 を選択します。
Packaged Files で、`archive.zip` と `run.cmd` を追加します。
Install Program に `run.cmd` を指定します。
Show Window は「Default」または「Hidden」を選択します。
Finish Message は「No message」を選択します。
Package Name and Options で、保存するEXEファイルの名前を指定します(例:`self_extracting.exe`)。
Configure Restart は「No restart」を選択します。
最後に「次へ」をクリックして「Create」を押すと、自己解凍形式の実行ファイルが作成されます。
3. 作成した自己解凍形式の実行
作成した`self_extracting.exe`を実行すると、一時フォルダにarchive.zipとrun.cmd が作成され、run.cmdによりarchive.zipが指定した場所に解凍され、その後に指定されたファイルが自動的に実行されます。これにより、特定の処理を簡単にできます。
まとめ
IExpressとバッチファイルを組み合わせることで、Windows標準の機能だけで自己解凍形式のEXEファイルを作成することができます。この方法は、インストーラーや簡単なツールの配布に便利です。特に追加のソフトウェアを導入する必要がないため、標準的な環境で手軽に利用できます。