创建新用户并使用该用户安装Windows服务

时间:2015-01-13 13:13:20

标签: wix windows-installer wix3.5

我正在开发一个新的Wix安装程序。

  1. 我要做的是将.exe复制到目录。
  2. 创建新用户。
  3. 使用该新用户安装Windows服务。

        

    <!-- Create User -->
    <util:User Id="UpdateUserLogonAsService" UpdateIfExists="yes" CreateUser="yes" Name="ServiceUser" PasswordNeverExpires="yes" Password="secret" />
    
    <ServiceInstall Id="ServiceInstaller"
                                       Type="ownProcess"
                                       Vital="yes"
                                       Name="Windows:service"
                                       DisplayName="Windows service install"
                                       Description="test"
                                       Start="auto"
                                       Account="ServiceUser"
                                       Password="secret"
                                       ErrorControl="ignore"
                                       Interactive="no" />
    <ServiceControl Id="StartService"
                    Start="install"
                    Stop="both"
                    Remove="uninstall"
                    Name="Windows:service"
                    Wait="yes" />
    

  4. 创建用户工作,只要我使用当前的登录名和密码,安装服务就可以正常工作。但是一旦我尝试使用新用户,我就会收到以下错误消息。

      

    确认您具有足够的权限来安装系统服务

    enter image description here

    我已尝试以管理员身份运行msi,但仍未显示更改错误。我猜这与我没有权限安装服务以在另一个用户下运行有关。但这是猜测。

2 个答案:

答案 0 :(得分:2)

您需要使用Util :: User元素的LogonAsService属性向用户授予SeServiceLogonRight权限。

FWIW,该错误消息非常通用且通常是错误的,因为Windows Installer可能无法知道您的服务无法正确响应(启动)的原因。您可能还有其他问题(例如您的服务正在写入您的帐户对服务帐户没有权限的目录,但至少您遇到此问题。

这里有点乐趣。在该屏幕上,进入Services.msc并手动将服务切换到SYSTEM并返回到帐户。您应该得到一个提示,说明该帐户已被授予权利。然后在对话框中点击“重试”。如果安装有效,那是你唯一的问题。

可以在组策略编辑器中看到此权限。从那时起,安装似乎会起作用,因为Services.msc已经在外部设置了权限。使用组策略还原VM或删除权限,问题将会恢复。修复安装程序,重建并重新测试,并且在安装过程中,WiX会自动应用该权限。

答案 1 :(得分:1)

除了LogonAsService之外,您还需要指定它是本地计算机帐户:

Account=".\ServiceUser"