我有一个java应用程序。我已经制作了一个 scansol-agent-app.exe 文件,我需要使用WiX制作安装程序。下面是 scansol-agent.wxs 文件的代码。我需要安装此应用程序作为Windows服务。 Servise安装得很好,但是没有启动。 Windows向我显示错误: “服务无法启动 - 验证您是否具有足够的权限来启动系统服务” 我尝试了所有可以找到的变体,但没有任何结果。我该如何开始这项服务?
<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*"
UpgradeCode="{EB6B8302-C06E-4bec-ADAC-932C68A3A98D}"
Name="Scansol Agent Application Service"
Version="0.0.1"
Manufacturer="ScienceSoft"
Language="1033">
<Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package" Manufacturer="ScienceSoft"/>
<Media Id="1" Cabinet="product.cab" EmbedCab="yes"/>
<Property Id="WHSLogo">1</Property>
<WixVariable Id="WixUILicenseRtf" Value="license.rtf" />
<UI>
<Property Id="ApplicationFolderName" Value="WiX Demo" />
<Property Id="WixAppFolder" Value="WiXxperMachineFolder" />
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />
<UIRef Id="WixUI_InstallDir" />
<!-- Skip license dialog -->
<Publish Dialog="WelcomeDlg"
Control="Next"
Event="NewDialog"
Value="InstallDirDlg"
Order="2">1</Publish>
<Publish Dialog="InstallDirDlg"
Control="Back"
Event="NewDialog"
Value="WelcomeDlg"
Order="2">1</Publish>
<!--<Property Id="DefaultUIFont">DlgFont8</Property>-->
<TextStyle Id="DlgFont8" FaceName="Tahoma" Size="8" />
<TextStyle Id="DlgTitleFont" FaceName="Tahoma" Size="8" Bold="yes" />
<Dialog Id="InstallDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes">
<Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes">
<Text>{\DlgTitleFont}Ready to Install</Text>
</Control>
<Control Id="Install" Type="PushButton" X="304" Y="243" Width="56" Height="17"
Default="yes" Text="Install">
<Publish Event="EndDialog" Value="Return" />
</Control>
</Dialog>
</UI>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="INSTALLDIR" Name="ScansolAgent">
<Component Id="ApplicationServiceInstall" Guid="{908B7199-DE2A-4dc6-A8D0-27A5AE444FEA}">
<File Id='ApplicationFile1' Source="scansol-agent-app.exe" DiskId='1' KeyPath='yes' Vital='yes'/>
<File Id="ApplicationFile2" Source="config.cfg" DiskId='1' KeyPath='no' Vital='yes'/>
<ServiceInstall
Id="ServiceInstaller"
Type="ownProcess"
Vital="yes"
Name="ScansolAgentService"
DisplayName="Scansol Agent Application Service"
Description="File Monitoring and Loading to server"
Start="auto"
Account="LocalSystem"
ErrorControl="ignore"
Interactive="no"
>
</ServiceInstall>
<ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="ScansolAgentService" Wait="yes" />
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="DefaultFeature" Level="1" Title="ScansolAgentAppService">
<ComponentRef Id="ApplicationServiceInstall" />
</Feature>
</Product>
</Wix>
答案 0 :(得分:0)
理由可能很多,其中绝大多数都得到了解决,但是,我有一个案例,没有一个答案或建议适用于它。最后我找到了我的理由:在ServiceInstall标签中有一个名为Account的属性,在我的例子中是LocalService,但是,在我的Windows服务项目中,我为我的服务分配的生成文件中的帐户是LocalSystem。因此,如果Windows服务项目中设置的服务帐户与您稍后在ServiceInstall的帐户属性下的WiX源文件中指定的服务帐户不匹配,则Windows Installer将成功安装您的服务,但启动它时将失败。结论,确保两个地方的服务帐户都匹配。而且,这可能不是你的情况,但值得仔细检查。
答案 1 :(得分:0)
请参阅此答案:https://stackoverflow.com/a/65342252/6657445。对于这种情况,因为这不是域或本地用户帐户,请尝试将“交互式”翻转为“是”。我以这种方式安装了其他服务,没有问题。