いくつかの追加ファイルを含むサービスをWiXにインストールする方法と、実際のサービスEXEファイルを定義する方法はありますか?WiX(2.0)を使用したマルチファイルNTサービスのインストール
シナリオ:私はちょうど単一EXEファイルだったサービスがあったが、このコードでのWiXでのWindows NTサービスとしてインストール:
<Component Id='InstallMyServiceComponent' Guid='{....}' DiskId='1'>
<File Id='InstallMyServiceEXEFile' LongName='MyService.exe'
Name='MyServ.exe' src='MyService/bin/release/MyService.exe' KeyPath='yes'/>
<ServiceInstall Id='InstallMyService' Name='MyService' Description='My Service'
ErrorControl='normal' Start='auto' Type='ownProcess' Vital='yes' />
<ServiceControl Id='UninstallMyService' Name='MyService' Remove='uninstall'
Wait='yes' />
</Component>
<Component Id='RunMyServiceComponent' Guid='.......'>
<ServiceControl Id='RunMyService' Name='MyService' Start='install'
Stop='uninstall' Wait='no' />
</Component>
と私はその後、インストールできるようになる機能を持っていました必要に応じてこのサービスを開始します。
私の問題は、今や私のサービスが成長し、単一のEXEはもはや単一のEXEではなく、複数のファイル、EXE、DLL、いくつかのサポートファイルです。
しかし、どうすれば今すぐインストールできますか?
私はすべての私のファイル
<Component Id="MyService" Guid="......" DiskId="1">
<File Id="fileMyService_framework_dll" LongName="Framework.dll"
Name="Framewrk.DLL" src="MyService\Framework.dll" />
<File Id="fileMyService_dal_dll" LongName="MyServiceDAL.dll"
Name="SrvcDAL.DLL" src="MyService\ServiceDAL.dll" />
<File Id="fileMyService_helpers_dll" LongName="Helpers.dll"
Name="Helpers.DLL" src="MyService\Helpers.dll" />
<File Id="fileMyService_exe" LongName="MyService.exe"
Name="MySrv.EXE" src="MyService\MyService.exe" />
</Component>
まず持つコンポーネントを持つようにしようとした、私はちょうどこのコンポーネントにServiceInstallとに、Servicecontrolタグを追加しようとしました:
<Component Id="MyService" Guid="......" DiskId="1">
<File Id="fileMyService_framework_dll" LongName="Framework.dll"
Name="Framewrk.DLL" src="MyService\Framework.dll" />
<File Id="fileMyService_dal_dll" LongName="MyServiceDAL.dll"
Name="SrvcDAL.DLL" src="MyService\ServiceDAL.dll" />
<File Id="fileMyService_helpers_dll" LongName="Helpers.dll"
Name="Helpers.DLL" src="MyService\Helpers.dll" />
<File Id="fileMyService_exe" LongName="MyService.exe"
Name="MySrv.EXE" src="MyService\MyService.exe" />
<ServiceInstall Id='InstallMyService' Name='MyService'
Description='My Service' ErrorControl='normal' Start='auto'
Type='ownProcess' Vital='yes' />
<ServiceControl Id='UninstallMyService' Name='MyService'
Remove='uninstall' Wait='yes' />
</Component>
しかし、その後、私の「フレームワーク。 dll "が作成されるサービスのソースパスとして設定される.......
実際にサービスをインストールするには、ServiceInstall私はFileRefを使ってそのサービスEXEファイルを参照していますが、それは存在しないようです(少なくともWix2では)。
<Component Id='InstallMyServiceComponent' Guid='{....}' DiskId='1'>
<FileRef Id='fileMyService_exe' KeyPath='yes'/>
<ServiceInstall Id='InstallMyService' Name='MyService'
Description='My Service' ErrorControl='normal' Start='auto'
Type='ownProcess' Vital='yes' />
<ServiceControl Id='UninstallMyService' Name='MyService'
Remove='uninstall' Wait='yes' />
</Component>
そう - 何が悪いのWiX著者奨めは、すべての必要なファイルをインストールするために行う、まだファイルのコンポーネントのリストから正しいEXEファイル(だけでなく、任意のファイルをピックアップするNTサービスのインストールを取得しています)??
マルク・
File要素のexeにKeyPath = 'yes'を設定するのを忘れました。 –
ありがとう、シェイロブの答えはあなたの声明を確認するようです - 大いに感謝! –