圧縮されたデプロイ可能なアプリケーションを作成しようとしています。
現在、公開した一連のファイルをIDE(Visual Studio 2008-WPF published application))から取得し、7-Zip SFXアーカイブに圧縮しています。
ユーザーは、7-Zip exeから「ワンクリックインストール」できるかどうかを尋ねてきました。アーカイブを作成するときにパラメーターリストがあります。抽出されたインストーラー実行可能ファイルを呼び出すために、ある種のパラメーターの組み合わせを設定する方法はありますか?
残念ながら、7-Zipのドキュメントはこのシナリオをカバーしていないようです。これに似た有料アプリケーションをいくつか見たことがありますが、私が書いているツールをライセンスコードなしにして、内部で使用できるようにしようとしています。
LMZA SDK from 7-Zip をダウンロードする必要があります。 「installer.txt」ファイルにはドキュメントが含まれています。
7zSD.sfxは、インストーラー用のSFXモジュールです。 7zSD.sfxはmsvcrt.dllを使用します。
インストーラー用のSFXモジュールにより、インストールプログラムを作成できます。このようなモジュールは、一時フォルダーにアーカイブを抽出し、指定されたプログラムを実行し、プログラムの終了後に一時ファイルを削除します。インストーラーの自己解凍アーカイブは、3つのファイル(SFX_Module、Installer_Config、7z_Archive)を結合して作成する必要があります。 Installer_Configはオプションのファイルです。次のコマンドを使用して、インストーラーの自己解凍アーカイブを作成できます。
copy /b 7zSD.sfx + config.txt + archive.7z archive.exe
Config.txtファイルを作成する必要があります。
構成ファイルには、インストーラーのコマンドが含まれています。ファイルは文字列
;!@Install@!UTF-8!
で始まり、;!@InstallEnd@!
で終わります。ファイルはUTF-8エンコーディングで記述されている必要があります。ファイルに文字列のペアが含まれています:ID_String = "値"
Title
メッセージのタイトル
BeginPrompt
Beginプロンプトメッセージ
Progress
値は「yes」または「no」です。デフォルト値は「はい」です。
RunProgram
実行するためのコマンド。デフォルト値は「setup.exe」です。サブストリング%% Tは、ファイルが抽出された一時フォルダーへのパスに置き換えられます
Directory
「RunProgram」のディレクトリプレフィックス。デフォルト値は「。\」です。
ExecuteFile
実行するファイルの名前
ExecuteParameters
「ExecuteFile」のパラメータ
例えば:
;!@Install@!UTF-8! Title="7-Zip 4.00" BeginPrompt="Do you want to install the 7-Zip 4.00?" RunProgram="setup.exe" ;!@InstallEnd@!
合意されたソリューションは正しいですが、実際に何をする必要があるかを説明するのに実際には役立ちません!。私はこれと他の多くの解決策を読みましたが、これを行う方法に関する完全で完全な簡単な説明は見つかりませんでした。
私と同じように混乱しています。Molly7244が投稿した内容を達成する方法について、順を追って説明したブログ記事を読んでください。
7Zip -sfxスイッチを使用してsetup.exeを実行する自己解凍アーカイブを作成する方法
リンクが機能しなくなる可能性があることに私の注意が向けられたので、ここに私のブログからの手順があります
これを簡単にするには、フォルダーc:\ Installを作成します。ここに必要なファイルをすべてコピーします。
7z SDKをダウンロードする必要があります
NotePad ++を使用してこのテキストファイルを編集することをお勧めします。UTF-8でエンコードする必要があるため、以下の手順ではnotepad ++を使用しています。
次のように入力します。
;!@Install@!UTF-8!
Title="SOFTWARE v1.0.0.0"
BeginPrompt="Do you want to install SOFTWARE v1.0.0.0?"
RunProgram="setup.exe"
;!@InstallEnd@!
これを編集して、[SOFTWARE v1.0.0.0]を製品名に置き換えます。設定ファイルのパラメーターとオプションに関する注意事項はこちら
これで、次の3つのファイルを含むフォルダ「c:\ Install」が作成されます。
これらの説明はウェブで見つけましたが、上記の4つのステップのいずれかを説明するものはどこにもありませんでした。
コマンドウィンドウで次のように入力します。
cd \
cd Install
copy /b 7zSD.sfx + config.txt + Installer.7z MyInstaller.exe
C:\ Installを見ると、MyInstaller.exeがあることがわかります。
終了しましたMyInstaller.exeをダブルクリックすると、メッセージが表示されます。 [OK]をクリックすると、setup.exeが実行されます。
これがc:\ Installディレクトリで機能しているので、「Install.bat」ファイルを作成して、コピースクリプトをその中に配置します。
copy /b 7zSD.sfx + config.txt + Installer.7z MyInstaller.exe
これで、展開パッケージの新しいバージョンを再構築する必要があるたびに、Install.batを編集して実行できます。
[〜#〜] nsis [〜#〜] も確認する必要があります。これを使用すると、7-Zipが使用するのと同じ方法( [〜#〜] lzma [〜#〜] )で圧縮されたインストーラーを作成できるため、おおよそ同じサイズになるはずです。インストールプロセスを完全に制御できます。
Jcrawfor74の答えに基づいて、ここにいくつかの追加情報があります:
7zS.sfxの代わりに、ファイル7zS2.sfx。これははるかに小さいバージョン(28 kB対140 kB)ですが、config.txtファイルをサポートしていません。したがって、copyコマンドでは省略できます。小さな構成スクリプトを作成するだけの場合は、これにより、より小さなEXEファイルを作成できます。
小さいSFXモジュールは質問をしません。ファイルを他のモジュールとして一時フォルダーに抽出し、実行可能な候補を見つけます。ソースコード(ダウンロードページにもあります)によると、C\Util\SfxSetup\SfxSetup.cで、ファイルの名前と拡張子に基づいて異なる重み付けが行われ、最も高いスコアのファイルが選択されます。
少なくともWindows 10では、両方のSFXモジュールが自動的に管理者として実行されます。これは構成できません。この動作はシステム全体のセットアップに望ましい場合がありますが、常にそうであるとは限りません。また、Windowsに何をすべきかを明示的に指示するマニフェストが含まれていないため、この決定はファイルバージョンデータのみに基づいています。 Windows互換性はファイルを調べ、昇格プロンプトにつながる「セットアップ」のような文字列を見つけます。
管理者権限を要求しないSFXモジュールが必要な場合は、ソースからSFXモジュールを再構築するか、または this one のようなリソースエディターでファイルバージョン情報を編集します。上記のResource Hackerがファイルをコンパイルする場合は、FileDescriptionフィールドから「Setup」という単語を削除し、EXEファイルを保存します。また、7zS.sfxまたは7zS2.sfxファイルに対してこの手順を直接実行し、それをどこかに保存して、昇格していないSFXパッケージをビルドするために使用することもできます。そして、これを使用してファイルバージョン情報を完全にカスタマイズし、製品名またはペイロードを説明する何かをその中に置くことができます。