アプリケーションのサービスの 1 つをインストールするためのカスタム アクションが Wix にあります。
<Custom Action='ManagedInstall' After="InstallFinalize"/>
<CustomAction Id="ManagedInstall"
Directory='INSTALLDIR'
ExeCommand='"[WindowsFolder]\Microsoft.NET\Framework\v2.0.50727\installUtil.exe" /LogToConsole=false ControlService.dll'
Impersonate='yes'
Return='check'>
</CustomAction>
これは、Windows XP および 7 (UAC を昇格させた状態) では、暗号化された一部のラップトップを除く、すべてのデスクトップ、仮想マシン、またはラップトップで正常に動作します。
installUtil.exe コンソールの実行が暗号化によって中断されるため (何らかの理由で、システム間で見られる唯一の違い) が原因であると仮定して、上記のカスタム アクション コードを置き換えるための解決策を試みていました。
<Component Id='ControlServiceDLL' Guid='27C58A4E-E1A9-4b85-B048-F8BBB1BF3C76'>
<File Id='ControlService.dll'
Name='ControlService.dll'
DiskId='1'
Source='Data\ControlService.dll'
Vital='yes'
KeyPath='yes'/>
<ServiceInstall
Id="ControlServiceInstall"
Type="shareProcess"
Vital='yes'
Name='ControlService'
DisplayName='Control Service'
Description='Control Service Description'
Start="demand"
ErrorControl='ignore'
Interactive="no">
</ServiceInstall>
<ServiceControl Id="StartService" Remove="uninstall" Name="Control Service" Wait="yes" />
</Component>
また、最初は起動に失敗するため、Service Control の起動/停止コマンドを削除して、インストールされているかどうかを確認する必要がありました。はい、正常にインストールされますが、サービスを手動で開始することさえできませんでした。
観察により、誰かがこれで私を助けようとするのに役立つかもしれない次のことがわかりました。
以下で見つけた2つの異なる方法でサービスプロパティを比較する 私の問題に答えてくれる人に役立つことを願っています.
カスタム アクションを使用する場合: Service Properties Executable Path shows, C:\windows\SysWOW64\dllhost.exe /Processid:{926E3CF4-B966-4E61-A46B-C3C49F579F7C}
Service Install を使用すると、「C:\Program Files (x86)\My Test Company\Services\ControlService.dll」と表示されます。