我開發了使用Wix的Windows服務安裝程序。服務設置爲安裝後自動啓動。安裝程序具有自定義對話框,用於輸入和更新.config文件。輸入是可選的。錯誤1079:重新啓動Windows服務時出錯
當輸入沒有提供時,配置文件沒有更新。我可以從services.msc重新啓動windows服務。如果用戶提供輸入,則自定義操作(延遲)將更新配置文件。此自定義操作使用Impersonate =「no」模式運行。
在這種情況下,Windows服務自動啓動後安裝,一切工作正常。但是當我重新啓動服務時,它會拋出錯誤。
下面是安裝服務的代碼:
<Component Id="CMPFa85281c3_a329_4a93_a1d7_203fbccec31f" Guid="*" Directory="INSTALLLOCATION">
<Condition>
<![CDATA[Installed OR (SVCINSTALL <> 0)]]>
</Condition>
<RemoveFile Id="RmFa85281c3_a329_4a93_a1d7_203fbccec31f" Name="MyService.exe" On="both" />
<File Id="Fa85281c3_a329_4a93_a1d7_203fbccec31f" Source="$(var.BaseDir)\MyService.exe" KeyPath="yes" />
<ServiceInstall Id="InstallWindowsService" Name="MyService"
DisplayName="MyService"
Start="auto"
ErrorControl="normal"
Type="ownProcess"
Account="[USER_DOMAIN]\[SERVICEUSER]"
Password="[PASSWORD]"
Description="MyService"/>
<ServiceControl Id="sc_InstallWindowsService" Name="MyService"
Start="install" Remove="uninstall" Stop="both" Wait="no"/>
</Component>
下面是自定義操作的代碼。從這種事情
<CustomAction Id="UpdateConfigFiles"
Return="check"
Execute="deferred"
Impersonate="no"
BinaryKey="MyCustomAction.dll"
DllEntry="UpdateFilePath"
HideTarget="yes">
</CustomAction>
<InstallExecuteSequence>
<Custom Action="PassData" Before="UpdateConfigFiles">NOT Installed AND NOT PATCH AND NOT REMOVE</Custom>
<Custom Action="UpdateConfigFiles" Before="InstallFinalize">NOT Installed AND NOT PATCH AND NOT REMOVE</Custom>
</InstallExecuteSequence>
請您澄清一下嗎?主題行說「啓動Windows服務」,但文字說「當我停止服務」..是這兩個或只是其中之一? – PhilDW
服務在安裝後自動啓動。這工作正常。但是,當我從services.msc重新啓動時,它無法啓動。 –