2017-06-02 5 views
0

セットアッププロジェクトを継承し、コマンドラインでmsiexecを使用してmsiファイルを実行しようとすると、 }、それは '1'またはtrueに戻って変更されます。msiexecでcmdlineを実行すると、チェックボックスの値がブランクからtrueに変更される

これは、GUIを使用してmsiを実行する場合には当てはまりません。チェックボックスをオフのままにすると、チェックボックスはオフのままです。ここで

は、私はコマンドラインで実行するものの例である:

msiexec.exe /i D:\BeanLocalDev\Development\Setup2015.msi CHKVSEXTENSION={} /QN /L*V D:\BeanLocalDev\Development\Setup2015\Debug\log.txt 

ログファイルから:

MSI (s) (F0:1C) [20:29:42:324]: Doing action: 
CustomCheckA_SetProperty_CHECKBOX2 
MSI (s) (F0:1C) [20:29:42:325]: Note: 1: 2235 2: 3: ExtendedType 4: SELECT 
`Action`,`Type`,`Source`,`Target`, NULL, `ExtendedType` FROM `CustomAction` 
WHERE `Action` = 'CustomCheckA_SetProperty_CHECKBOX2' 
MSI (s) (F0:1C) [20:29:42:325]: PROPERTY CHANGE: Modifying CHKVSEXTENSION 
property. Its current value is '{}'. Its new value: '1'. 
Action start 20:29:42: CustomCheckA_SetProperty_CHECKBOX2. 
Action ended 20:29:42: CustomCheckA_SetProperty_CHECKBOX2. Return value 1. 

私はセットアッププロジェクトでVisual Studioでこれを変更するにはどうすればよいですか?

答えて

0

セットアッププロジェクトで直接変更することはできません。何らかの理由で、VSはカスタムアクションを挿入してUIシーケンスの早い段階でチェックボックスの値を空白にしてシーケンスを実行します。値が入力される前であるためUIシーケンスでは関係ありませんが、実行シーケンスではコマンドラインから値が空白になります。

これは、ビルド後にMSIファイルを変更する必要があることを意味します(Orcaなど)。 InstallExexecuteSequenceテーブルに、CustomCheckA_SetProperty_CHECKBOX1のようなプロパティをリセットするカスタムアクションへの呼び出しがあります。プロパティの名前がCHKVSEXTENSIONの場合、NOT CHKVSEXTENSIONの条件行に条件を追加します。これは、まだ設定されていない場合にのみリセットされることを意味します。

関連する問題