1

サイレントインストーラーを作成する必要がある単純なC#アプリケーションがあります。Visual Studioインストーラー(MSIベース)を使用しています。これはC#アプリケーションであるため、インストーラーは前提条件として.NETFrameworkをインストールする必要があります。

私のソリューションのセットアッププロジェクトでは、ブートストラッパーとMSIファイルの2つのファイルが生成されsetup.exeますapp.msi

また、インストールは常に昇格された特権の下で行われます。これは安全な前提です。

setup.exeそのため、.NETがインストールされている場合とインストールされていない場合の両方でapp.msi、インストールが完全にサイレントになるように起動しようとしました。

msiexec /i app.msi /qn

これは、.NETがインストールされているマシンではサイレントに機能し、.NETがインストールされていないマシンではサイレントに失敗します。

他の組み合わせは非サイレントで動作するか、いくつかのポップアップを表示します。

では、そのようなインストールプロセスをサイレントにすることは可能ですか?または、少なくとも.NETインストールにポップアップを表示させますが、アプリケーション自体はサイレントである必要があります(また、.NETインストールに関係のない「セットアップはコンポーネントを初期化しています」などの他のポップアップがあってはなりません)

4

1 に答える 1

1

ブートストラップの目的は、一連のパッケージをインストールすることです。通常は一連の前提条件 (条件付きでインストール) をインストールしてから、メイン パッケージをインストールします。あなたは前提条件をインストールしていません。

これを行う安価な方法は、スクリプト (バッチ ファイルのように単純なものでも) をブートストラップとして使用することです。.NET を検出し、存在しない場合は .NET インストーラー パッケージを実行してから、メイン パッケージのインストールを実行します。

@echo off
rem this key/value is how WiX detects .NET 4.0 Full installation
reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full" /v InstallPath >NUL 2>&1
rem sets ERRORLEVEL==0 if present, ERRORLEVEL==1 if absent

rem if .NET not found, install it:
if ERRORLEVEL 1 dotNetFx40_Full_setup.exe

rem now install main program
msiexec /i app.msi /qn

警告:

  • レジストリ キーの名前は、.NET のバージョンによって異なります。
  • 一部のシステム管理者は、セキュリティ上の理由からreg.exeコマンドを消去または無効にします
  • .NET インストーラーが再起動し、最初の試行でメイン パッケージにアクセスできない場合があります。
  • インストールしたばかりの .NET Framework は、再起動するまで完全にアクティブ化されないことがあります。
  • .batファイルは非常にハッキング可能です。VBScript や JScript なども同様です。実際の顧客には使用しないでください。優れたブートストラップ (WiX burnなど) には .NET 検出機能が組み込まれており、ブラック ハットに対してより不透明です。
于 2013-03-05T04:02:29.453 に答える