代码之家  ›  专栏  ›  技术社区  ›  Andrew Matthews

两个几乎完全相同的WIX项目—一个工作正常,另一个因安全问题而失败

  •  1
  • Andrew Matthews  · 技术社区  · 14 年前

    无法安装服务“PCP Event Processor-3.9.9.0-wix”(MyServiceExeName)。确认您有足够的权限安装系统服务。

    • 失败的项目具有第三方组件的.licx文件。
    • 失败的项目是WinExe项目。成功安装的是一个Exe(控制台风格的应用程序)

    据我所知,两个安装程序的wxs文件之间没有真正的区别(显然guid是不同的)。失败的组件具有如下WIX安装程序代码:

    <Component Id="cmpMainExe" Guid="{EXCISED-FOR-CUT-N-PASTERS}">
      <File Id="filASJHDJSDJSHGDJH" Source="$(var.EventPollingService.TargetDir)\EventPollingService.exe" />
      <ServiceInstall Name="$(var.SVCNAME)-$(var.ProductVersion)-$(var.BranchName)"
                      DisplayName="PCP $(var.SVCNAME)-$(var.ProductVersion)-$(var.BranchName)"
                      Type="ownProcess"
                      Interactive="no"
                      Start="auto"
                      Vital="yes"
                      ErrorControl="normal"
                      Description="Manages the state model of a user's session by handling incoming events from the dialler"
                      Account="$(var.ServiceAccountId)" 
                      Password="$(var.ServiceAccountPwd)" />
      <ServiceControl Id="StartWixServiceInstaller"
                      Name="$(var.SVCNAME)-$(var.ProductVersion)-$(var.BranchName)"
                      Start="install"
                      Wait="yes" />
      <ServiceControl Id="StopWixServiceInstaller"
                      Name="$(var.SVCNAME)-$(var.ProductVersion)-$(var.BranchName)"
                      Stop="both" Wait="yes"
                      Remove="uninstall" />
    </Component>
    

    我在vs2010中使用wix3.5和Votive,两个项目都是.net3.5sp1应用程序。我用的是Windows7,UAC关闭了。

    1 回复  |  直到 10 年前
        1
  •  2
  •   quetzalcoatl    10 年前

    看看MSI的两个版本 ORCA from Windows SDK 并验证ServiceInstall表条目是否相同。

    然而,根据我的经验,这不太可能是安装程序的问题。这通常是一个红鲱鱼,指向一个应用程序的问题,如缺少依赖项或应用程序异常。排除ServiceInstall条目并验证服务帐户凭据是否正确后,该帐户未被禁用,并且该帐户具有作为服务登录的权限,然后开始分析应用程序。当安装程序挂起在错误窗口时,这是最容易做到的。

    最后两个想法:

    如果需要授予用户LogonAsService权限,请查看WiX中的user元素。