7

VisualStudio2005とvdprojを使用して単純なMSIファイルを作成しています。起動時にREINSTALLMODEプロパティを渡す必要があります。

私はこれが次のようにコマンドラインを介して実行できることを知っています: msiexec.exe /i foo.msi REINSTALLMODE=amus

ただし、ユーザーがmsiを直接クリックする(ウィザードを起動する)ことを選択した場合、プロパティは渡されません。VSとvdprojを介してこれを行うことは可能ですか?

私が調査したいくつかのオプション:

  • VSを介してMSIをビルドすると、setup.exeも生成されます。これを介してREINSTALLMODEプロパティを渡す方法はありますか?
  • Orcaをインストールしました。これにより、MSIのプロパティテーブルを表示/編集できます。この方法で追加することもできますが、MSIビルドを実行するたびに追加する必要があります。

アドバイスありがとうございます。

4

2 に答える 2

8

これを行うためのより自動化された方法を見つけました。

次のように、 add_reinstall_prop.vbs (例)という名前のスクリプトを作成します。

set objArgs = WScript.Arguments
set o_installer = CreateObject("WindowsInstaller.Installer")
set o_database = o_Installer.OpenDatabase(objArgs(0), 1)
s_SQL = "INSERT INTO Property (Property, Value) Values( 'REINSTALLMODE', 'amus')"
set o_MSIView = o_DataBase.OpenView( s_SQL)
o_MSIView.Execute
o_DataBase.Commit

ビルド後のイベントをセットアップ プロジェクトに追加し、次のスクリプトを呼び出します。

add_reinstall_prop.vbs $(BuiltOuputPath)

これにより、ビルドされた MSI に目的のエントリが自動的に追加されます。その後、Orca でチェックして、ビルド後にエントリが自動的に追加されていることを確認できます。

于 2011-12-23T18:13:11.863 に答える
4

残念ながら、VStudio で他の MSI プロパティを正しく設定する方法が見つかりません。

それにもかかわらず、機能するはずの1つの方法は次のとおりです。

  1. Orca を使用して、プロパティ REINSTALLMODE のみを変更するトランスフォーム (MST) を作成します。(つまり、プロパティを編集して新しいトランスフォームとして保存し、[Generate Transform] コマンドを使用して MST を作成します。)
  2. この変換は、 MSITRAN.EXEコマンドを使用して MSI に直接適用できます(Orca を見つけたのと同じ Windows インストーラー SDK で利用可能)。
  3. (a) MSI ビルドの直後に Visual Studio で常に MSITRAN コマンドを実行する方法を見つけるか、(b) ビルド後テスト前に MSITRAN を手動で (バッチ ファイルなどから) 実行するだけです。
于 2009-12-22T19:41:43.657 に答える