4

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

4

3 に答える 3

10

ここには2つの質問があるため、2つのこと:

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

ショートカットを作成して検証に合格する方法についてのブログ投稿があります。

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

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

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

于 2009-05-20T18:44:57.660 に答える
2

プロパティをセキュアとしてマークしてみましたか?

<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="Yes" />

ショートカット テーブルのドキュメントを見ると、条件付きで宣伝されたショートカットを取得できるとは思えません。これは、アドバタイズされたスタート メニュー ショートカットと通常のデスクトップ ショートカットをインストールすることで回避できます。

于 2009-05-14T01:16:05.737 に答える
0

IIRC Advertise が Yes に設定されている場合

MindCapers の例をここで見たことがありますが、レジストリ エントリを作成するまで、ショートカットに問題がありました。

于 2009-05-13T19:21:27.737 に答える