WiX を使用して、ソフトウェアの MSI インストーラー/アンインストーラーを作成しようとしています。このソフトウェアには、常に一緒に実行されるローカル サービスと関連するユーザー モード プロセスが付属しています。つまり、ユーザー モード プロセスは、サービスが停止すると、サービスによって自動的に閉じられます。(それ以外の場合、ユーザー モード プロセスが単独で終了した場合、サービスはそれを再起動しようとします。)
したがって、アンインストールのために、次のマークアップを思いつきました。
<Component Id="idCmp_MySrvc"
Guid="MY_GUID">
<File Id="idFile_srvc.exe"
Name="srvc.exe"
Source="Sources\Code\srvc.exe"
Vital="yes"
KeyPath="yes" />
<File Id="idFile_usermodule.exe"
Name="usermodule.exe"
Source="Sources\Code\usermodule.exe"
Vital="yes"
KeyPath="yes" />
<ServiceControl Id="idMySrvc"
Name="MyServiceName"
Stop="uninstall" />
</Component>
サービスが停止すると、usermodule.exe
プロセスが閉じられるという考えでした。
しかし、頭に浮かぶ 3 つの問題/質問があります。
1: これをコンパイルすると、次のエラーが表示されます。
エラー CNDL0042: Component 要素に複数のキー パスが設定されています。キー パスは、それをサポートする拡張要素、または Component/@KeyPath、File/@KeyPath、RegistryValue/@KeyPath、または ODBCDataSource/@KeyPath のいずれかの場所でのみ「yes」に設定できます。
usermodule.exe
2:アンインストール チェック中にMSI がプロセスに煩わされないようにするにはどうすればよいですか?
3: アンインストール手順に準拠させるために、サービスやユーザー モード プロセスに固有のものを追加する必要がありますか?