7-Zip自己解凍アーカイブ(SFX)アーカイブから抽出した後にファイルを実行することは可能ですか?


40

圧縮されたデプロイ可能なアプリケーションを作成しようとしています。

現在、IDEから公開した一連のファイル(Visual Studio 2008-WPF公開アプリケーション)を取得し、7-Zip SFXアーカイブに圧縮しています。

ユーザーは、7-Zip exeから「ワンクリックインストール」できるかどうかを尋ねてきました。アーカイブを作成するときにパラメーターリストがあります。抽出されたインストーラー実行可能ファイルを呼び出すために、パラメーターの何らかの組み合わせを設定する方法はありますか?

残念ながら、7-Zipドキュメントはこのシナリオをカバーしていないようです。これと同様のことを行う有料アプリケーションを見てきましたが、内部で使用できるように、ライセンスコードを記述していないツールを無料にしようとしています。


有料のものをいくつか教えていただけますか?
abhishek77

回答:


35

7-ZipからLMZA SDKをダウンロードする必要があります。「installer.txt」ファイルにはドキュメントが含まれています。

7zSD.sfxは、インストーラー用のSFXモジュールです。7zSD.sfxはmsvcrt.dllを使用します。

インストーラー用のSFXモジュールでは、インストールプログラムを作成できます。このようなモジュールは、アーカイブを一時フォルダーに抽出し、指定されたプログラムを実行し、プログラムの終了後に一時ファイルを削除します。インストーラーの自己解凍アーカイブは、SFX_Module、Installer_Config、7z_Archiveの3つのファイルを結合するように作成する必要があります。Installer_Configはオプションのファイルです。次のコマンドを使用して、インストーラーの自己解凍アーカイブを作成できます。

copy /b 7zSD.sfx + config.txt + archive.7z archive.exe

config.txtファイルを作成する必要があります。

構成ファイルには、インストーラーのコマンドが含まれています。ファイルはstring ;!@Install@!UTF-8!で始まり、 で終わり;!@InstallEnd@!ます。ファイルはUTF-8エンコードで作成する必要があります。ファイルには文字列のペアが含まれています。

ID_String = "Value"

Title メッセージのタイトル

BeginPrompt プロンプトメッセージを開始

Progress値は「はい」または「いいえ」です。デフォルト値は「yes」です。

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@!

1
はい。私はそれを試しました。少し不快なcozすべてはコマンドラインですが、そのための優れたドキュメントがあります。そして、最高の圧縮を無料で入手できます。
ガネーシャR.

@MikeG-そのリンクはもっと徹底的です。解凍部分を完全に透明にする方法を説明しました。とてもいい-ありがとう!
ナムール

5
バージョン9.35ベータ時点で、「SFXモジュールはLZMA SDKパッケージに移動されました」(7-zip.orgで入手可能)ことに注意してください。
ルーカス

21

合意された解決策は正しいですが、実際にあなたが実際に何をする必要があるのか​​を説明する助けにはなりません!私はこれと他の多くのソリューションを読みましたが、これを行う方法に関する完全で完全な簡単な指示を見つけることができませんでした。

私はあなたが私と同じように混乱しているので、Molly7244が投稿したものを達成する方法に関する段階的な指示を提供する私のブログ投稿を読んでください。

7zip -sfxスイッチを使用してsetup.exeを実行する自己解凍アーカイブを作成する方法

リンクが死んでしまう可能性があることに気付いたので、ここに私のブログからの手順があります

ステップ1-インストールフォルダーのセットアップ

これを簡単にするには、フォルダーc:\ Installを作成します。ここで、必要なすべてのファイルをコピーします。

ステップ2-7インストーラーを圧縮する

  1. .msiとsetup.exeがあるフォルダーに移動します
  2. .msiとsetup.exeの両方を選択します
  3. 右クリックして[7Zip]-> [アーカイブに追加]を選択します
  4. アーカイブに「Installer.7z」という名前(または任意の名前)を付けます
  5. OKをクリック
  6. これで「Installer.7z」があるはずです。
  7. この.7zファイルをc:\ Installディレクトリにコピーします

ステップ3-7z-Extra sfx拡張モジュールを入手する

7z-Extraをダウンロードする必要があります。

  1. 7Zipダウンロードするには、このリンクに従ってください
  2. ベータ版には正しいファイルが含まれていないため、9.20バージョン(@ May-2015)をダウンロードする必要があります。
  3. 直接ダウンロードのリンク。
  4. 7zipの追加ファイルを抽出します
  5. ファイル「7zS.sfx」をc:\ Installにコピーします

ステップ4-config.txtのセットアップ

UTF-8でエンコードする必要があるため、NotePad ++を使用してこのテキストファイルを編集することをお勧めします。以下の手順ではnotepad ++を使用しています。

  1. Windowsエクスプローラーを使用してc:\ Installに移動します
  2. 右クリックして「新しいテキストファイル」を選択し、config.txtという名前を付けます
  3. 右クリックして「NotePad ++で編集」を選択します
  4. [エンコードメニュー]をクリックし、[UTF-8でエンコード]を選択します
  5. 次のようなものを入力します。

    ;!@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」が作成されます。

  1. Installer.7z
  2. 7zS.sfx
  3. config.txt

ステップ5-アーカイブを作成する

これらの指示はウェブで見つけましたが、上記の4つのステップのいずれも説明していませんでした。

  1. cmdウィンドウを開き、Window + R-> cmd-> Enterを押します
  2. コマンドウィンドウに次のように入力します

    cd \
    cd Install
    copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe
    
  3. c:\ Installを見ると、MyInstaller.exeがあることがわかります。

  4. 終わった

インストーラーを実行する

MyInstaller.exeをダブルクリックすると、メッセージが表示されます。[OK]をクリックすると、setup.exeが実行されます。

PS自動化に関する注意

これがc:\ Installディレクトリで機能するようになったので、「Install.bat」ファイルを作成し、その中にコピースクリプトを配置します。

copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe

展開パッケージの新しいバージョンを再構築する必要があるたびに、Install.batを編集して実行できるようになりました。


2
これは受け入れられた答えであるはずです!
-noelicus

コマンドライン引数をExecuteParametersアイテムに渡すことは可能config.txtですか?たとえば、次C:\Install\MyInstaller.exe some_file.txt を実行しsetup.exe some_file.txtます。
dthor

はい、そうです。matthew-lundbergが答えで言ったよう、「SFX実行可能ファイルに渡された引数はInstall.cmdスクリプトに渡されます」
-dthor


2

jcrawfor74の答えに基づいて、ここにいくつかの追加情報があります:

7zS.sfxの代わりに、ファイル7zS2.sfxを使用することもできます。これははるかに小さいバージョン(28 kB対140 kB)ですが、config.txtファイルをサポートしていません。したがって、copyコマンドでそのままにしておくことができます。小さな設定スクリプトを作成したいだけなら、これにより小さなEXEファイルを作成できます。

小さいSFXモジュールは質問をしません。他のモジュールとして一時フォルダーにファイルを抽出し、実行可能な候補を見つけます。C \ Util \ SfxSetup \ SfxSetup.cのソースコード(ダウンロードページでも入手可能)によると、ファイルの名前と拡張子に基づいてファイルの重み付けが異なり、最高スコアのファイルが選択されます。

少なくともWindows 10では、両方のSFXモジュールがAdministratorとして自動的に実行され、これは構成できません。この動作はシステム全体のセットアップには望ましいかもしれませんが、常にそうであるとは限りません。また、Windowsに何をすべきかを明示的に指示するマニフェストが含まれていないため、この決定はファイルバージョンデータのみに基づいています。Windows互換性はファイルを調べ、昇格プロンプトにつながる「セットアップ」などの文字列を見つけます。

管理者権限を要求しないSFXモジュールが必要な場合は、ソースからSFXモジュールを再構築するか、より簡単に、このようなリソースエディターでファイルバージョン情報を編集できます。上記のResource Hackerの場合は、FileDescriptionフィールドから「Setup」という単語を削除して、ファイルをコンパイルし、EXEファイルを保存します。また、この手順を7zS.sfxまたは7zS2.sfxファイルで直接実行し、どこかに保存して、それを使用して非昇格SFXパッケージを構築することもできます。また、これを使用してファイルのバージョン情報を完全にカスタマイズし、製品名またはペイロードを説明するものをその中に入れることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.