1

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.exe2:アンインストール チェック中にMSI がプロセスに煩わされないようにするにはどうすればよいですか?

3: アンインストール手順に準拠させるために、サービスやユーザー モード プロセスに固有のものを追加する必要がありますか?

4

1 に答える 1