既存のインストール シールド Bootstrapper を置き換える CustomBA を作成しています (名前がわかりません)。
インストールシールドが使用するのと同じ数の MSI をインストールしているので、問題ありません。MSI の Visible="no" を作成しているため、ARP のすべての MSI エントリが削除されます。
カスタム BA エントリのみが ARP で利用可能であり、両方とも同じ名前を持っています。
そのため、いくつかの調査の結果、Windows Installer XML (WiX) には、MSI のアンインストールに使用できる Deployment Tools Foundation (DTF) の一部として Microsoft.Deployment.WindowsInstaller 相互運用ライブラリが含まれていることがわかりました。
以下のコードを使用して MSI をアンインストールしています。
Microsoft.Deployment.WindowsInstaller.Installer.SetInternalUI(InstallUIOptions.Silent);
Microsoft.Deployment.WindowsInstaller.Installer.EnableLog(InstallLogModes.Info, @"C:\Uninstall.log");
Microsoft.Deployment.WindowsInstaller.Installer.ConfigureProduct(productCode, 0, InstallState.Absent, "");
私が直面している問題は以下のとおりです
最初に、CustomBA を管理者として実行して既存の MSI をアンインストールする必要があります。それ以外の場合は、「エラー 1730.You must be an Administrator to remove this application.」というエラーとしてスローされます。管理者なしで CustomBA を実行し、MSI をアンインストールする方法はありますか。
アンインストール中(customBAを管理者として実行するとき)、上記のコードはチェーンパッケージも削除しますが、これは望ましくありません。
アンインストール コードを実行しても、MSI エントリは ARP から削除されません。
これらのリンクを見つけましたが、関連性があるかどうかはわかりません : https://stackoverflow.com/questions/17523974/how-to-uninstall-msi-using-its-product-code-in-c-sharp アンインストールを成功させるために