3

ブートストラップを使用して存在を確認し、必要に応じてサードパーティ製品のインストール セットをインストールします。次に、製品をインストールします。製品だけでなく、フル インストールのアンインストール ショートカットを含めたいです。ただし、そのためには、ブートストラップの製品コードを設定し、それをアンインストール ショートカットで参照できるようにする必要があります。

<ShortcutId="UninstallShortcut" Name="Uninstall My Product" 
   Description="Uninstalls My Product"Target="[System64Folder]msiexec.exe" 
   Arguments="/x [MyBootStrapperProductCode]" Icon="MainApp.ico"/>

標準の Wix ブートストラップを使用していますが、Bundle 要素内に製品コードを設定できるものがありません。

または、ブートストラッパーが [プログラムの追加と削除] で自分自身への参照を残さないようにすることはできますか? サードパーティ コンポーネントは永続的な展開です。

4

2 に答える 2

3

バンドルは製品と同じようには機能しません。msiexec を使用してアンインストールすることはありません。少なくとも公には行われません。

BUNDLE の UNISTALL ショートカットを作成するには、いくつかの巧妙なトリックが必要です。免責事項:開発/内部使用のみ。

初め; このアプローチを使用して、UpgradeCode を MSI に渡す必要があります。

コマンドライン引数を WiX バンドルから MSI に渡す

その後、MSI ファイルで、UpgradeCode に等しいレジストリ値 BundleUpgradeCode を検索してみてください。値が存在するフォルダーが見つかった場合は、UnistallString を抽出して直接実行できます (CustomAction を使用)。

次のようになります: "C:\ProgramData\Package Cache{my GUID}\ExchangeBootStrapper.exe" /uninstall

個人的にはまだ実装していませんが、この問題に対する他の回避策を見つけることができず、これを思いつきました。

于 2013-11-07T15:46:58.190 に答える