コマンドライン引数を介して渡す必要があるショートカットをインストールするかどうかのプロパティがあります。wxs ファイル内でプロパティを設定すると条件が機能するように見えますが、コマンド ラインで設定すると無視されるようです。ログから、それらが設定されていることがわかります:
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTUPSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTMENUSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLDESKTOPSHORTCUT property. Its current value is '0'. Its new value: '1'.
ただし、ショートカットはインストールされていません。
また、条件を設定できるようにするには独自のコンポーネントが必要であるため、ショートカットとして宣伝することはできなくなったようです。宣伝されたショートカットを条件付きでインストールするにはどうすればよいでしょうか?
現在のショートカット コード:
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0"/>
...
<Component Id="StartMenuShortcut" Guid="MY-GUID">
<Condition>INSTALLSTARTMENUSHORTCUT</Condition>
<Shortcut Id="StartMenuServerShortcut"
Directory="ProgramMenuDir"
Name="Application Name" WorkingDirectory="INSTALLDIR" Advertise="no"
Target="[!FileEXE]"
Icon="Icon.ico" />
</Component>
他のショートカットについても繰り返します
編集:
Sacha が提案したことを試して、以下を追加します。
<Property Id="INSTALLSTARTUPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLDESKTOPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="yes"/>
xml とコマンド ラインの両方で 0 に設定されていても、すべてのショートカットがインストールされるようになりました。私が渡しているコマンドラインは次のとおりです。
msiexec /i MySetup.msi INSTALLSTARTUPSHORTCUT=0 INSTALLDESKTOPSHORTCUT=0 INSTALLSTARTMENUSHORTCUT=0 /l*v inst.log /qb
値を引用符で囲んでみましたが、まだうまくいきません。ここには示されていませんが、ALLUSERS="" または ALLUSERS="2" を実行することで、ALLUSERS プロパティを操作して、ユーザーごとまたはマシンごとのレジストリを操作することに成功しました。私は間違っている。