【问题标题】:Create a new user and install windows service using that user创建一个新用户并使用该用户安装 Windows 服务
【发布时间】:2015-01-13 13:13:20
【问题描述】:

我正在开发一个新的 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" />
    

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

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

我已尝试以管理员身份运行 msi,但它并没有改变仍然出现错误。我猜这与我没有权限安装服务以在其他用途​​下运行有关。但这是一个猜测。

【问题讨论】:

    标签: wix windows-installer wix3.5


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 它实际上并没有安装该服务。用户已安装。
    • 您的 wxs 已编辑,因此很难说。能发个安装日志吗?你读过日志吗?
    • 这是我第一个使用 Wix 的安装程序。安装日志?有安装日志!现在我得去找那个了。
    • WiX 创建 Windows Installer (.MSI) 数据库。 MSI 支持日志记录:blogs.technet.com/b/richard_macdonald/archive/2007/04/02/…
    • 我有同样的问题,安装日志没有给我一些有用的信息。似乎没有办法让该用户自动登录服务。
    【解决方案2】:

    除了LogonAsService,你还需要指定它是一个本地机器账户:

    Account=".\ServiceUser"
    

    【讨论】:

    • 由于我使用了一个属性,我必须为本地帐户指定Account=".\[SERVICEACCOUNT]"。如果没有 `.`,它就无法工作。
    猜你喜欢
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2010-09-26
    相关资源
    最近更新 更多