質問

コマンドライン引数を介して渡す必要があるショートカットをインストールするかどうかのプロパティがあります。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 プロパティを操作してユーザーごとまたはマシンごとのレジストリを実行することに成功しました。したがって、プロパティを渡すことは可能であるはずですが、何があるかはわかりません私は間違ったことをしています。

役に立ちましたか?

解決

ここで質問が 2 つあるので、次の 2 つのことを考えます。

  1. アドバタイズされたショートカットは、それが指すファイルをインストールする同じコンポーネント内に存在する必要があります。これが必要なのは、Windows インストーラーがコンポーネントの KeyPath でアドバタイズされたショートカットをポイントするためです。したがって、アドバタイズされたショートカットをオプションでインストールする場合は、使用できません。

私は持っています ショートカットを作成して検証に合格する方法に関するブログ投稿.

  1. 使用しているプロパティは、インストール UI プロセスからサーバー側に渡すために安全であるとマークする必要があります。それをするには、ただそうするだけです

    <Property Id="INSTALLSTARTMENUSHORTCUT" Secure="yes"/>

Value 属性を追加していないことに注意してください。値が 0 であっても、値を指定すると、INSTALLSTARTMENUSHORCUT は TRUE と評価されます。空白/未定義のプロパティは FALSE、その他の値は TRUE です。

scroll top