私が作成した Windows アプリケーションの自己解凍型アーカイブを作成しようとしています。私のアプリは最新の .Net 4.0 を使用しており、SFX インストーラーに .Net セットアップを含めたいと考えています。ただし、コンピュータに .Net フレームワークをインストールして再起動する必要がある場合、アプリケーションのインストールが適切に再開されません。Stack サイトの他の sfx の投稿を調べましたが、アプリの前提条件として .Net インストーラーが関係する問題はありません。
私のプロジェクトは 4 つのファイルを生成します。 、私はそれらすべてが標準であると信じています。
次のように、7zip を使用して SFX を作成します。
まず、7zip を使用してすべてのファイルを 1 つのアーカイブに圧縮します。
7z.exe a -r AppInstallFiles.7z *
次に、7zS.sfx ファイル (自己解凍型インストーラーの作成に使用)、構成ファイル、およびアーカイブのバイナリ コピーを作成します。構成ファイルは次のとおりです。
;!@Install@!UTF-8!
Title="MyApp Installer"
ExecuteFile="setup.exe"
;!@InstallEnd@!
そして、次の行でそれらをコピーします。
copy /b 7zS.sfx + config.txt + AppInstallFiles.7z MyAppInstaller.exe
インストーラーは、既に .Net 4.0 がインストールされているコンピューターで問題なく動作します。問題は、.Net Framework がインストールされていないコンピューターで発生します。SFX を実行すると、すべてが一時ディレクトリに抽出されます。次に、コンピュータに .Net 4.0 がインストールされていないことを setup.exe が認識すると、.Net インストーラが呼び出されます。これにより、独自の一時ディレクトリに抽出され、インストールが開始されます。完了すると、再起動を求めるプロンプトが表示されます。「いいえ」をクリックすると、インストール全体が終了します。「はい」を押すとマシンが再起動し、再度ログインするとエラーが発生します。
問題は、インストーラーが .Net インストーラーに引き渡し、.Net インストーラーが再起動すると、My App インストール ファイルを含む一時ディレクトリが削除されることです。setup.exe から "App Installer.msi" を使用するように切り替えようとしましたが、これは単純に、コンピューターに .Net がなく、Web ダウンロードを提案する msi を報告することにつながります。オフラインの状況でアプリをインストールする可能性があるため、これは機能しません。
以前に .Net インストーラーを 7zip SFX に含めようとした人はいますか? もしそうなら、どのように解決しましたか? できれば 7zip を使い続けたいと思っていますが、必要に応じて他のツールも検討します。