正常にインストールされている WiX スクリプトを使用して動的にビルドする MSI があります。ただし、UninstallString には一貫して /X であると予想される msiexec.exe への /I (「スラッシュアイ」) パラメータがあります。ここでUninstallString について読みましたが、このレジストリ エントリは Windows インストーラによって設定されると書かれています。WiX または発行するインストール コマンドのいずれかを介して、Windows インストーラーに何を渡しますか?
3 に答える
私は故障し、これについて MS サポートと話しました。答えは、MSI の ARPNOMODIFY プロパティを 1 に設定して、/X パラメータを使用する UninstallString を生成することです。
/I パラメーターは、appwiz.cpl の一覧で "変更" および "修復" オプションを利用できることを意味します。これが、この問題に直面している他の誰かに役立つことを願っています。
以下の MSDN の記事では、ARP プロパティについて詳しく説明しています。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa367590(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/aa367591(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/aa367592(v=vs.85).aspx
UninstallString を設定するには、WiX インストーラーで ARPAltRegistryEntries コンポーネントを作成する必要があります。パラメータを /X ではなく /I に設定すると、独自のアンインストール UI を使用できます。次に例を示します。
<DirectoryRef Id="TARGETDIR">
<!-- Create alternative ARP entry that lets us launch uninstall with
full UI. Setting ARPSYSTEMCOMPONENT above hides WI generated key
that uses the product GUID.-->
<Component Id="ARPAltRegistryEntries" Guid="">
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Your Product" Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Name="UninstallString" Value="MsiExec.exe /i[ProductCode] REMOVE=ALL"/>
</RegistryKey>
</Component>
</DirectoryRef>