gpt4 book ai didi

wix - 使用 Windows 服务更新包会重置服务的帐户和密码

转载 作者:行者123 更新时间:2023-12-04 16:09:09 26 4
gpt4 key购买 nike

我正在使用 WiX 开发 MSI 安装程序。我试图让开发尽可能简单:这是一个内部产品,我的用户是我们的 IT 人员。

该产品包括一个 Windows 服务,必须将其配置为在每台机器的不同帐户下运行。

我为我的用户(首次安装)计划的工作流程如下:

  • 运行安装程序
    (安装程序在默认帐户下设置服务)
  • 通过 sc 停止服务或本地服务小程序
  • 更新服务属性以在正确的机器特定帐户下运行。
    (每台机器的账号不一样,只有IT人员可以访问密码。)
  • 重启服务

  • 后续更新将包括从更新的 MSI 文件进行安装。

    测试“小”更新时,我惊讶地发现安装程序将服务重置为在默认帐户下运行。这对我来说是一个主要问题,因为它让我的用户很难更新他们的服务器。每次有更新时,他们都必须在每台机器上重新输入帐户信息。我预计这会发生在“主要”更新中,但不会发生在“小”更新中。
  • 有没有办法配置安装程序,使其在“小”或“次要”更新期间不会更改服务的现有帐户/密码配置?
  • 在“修复”期间也会发生这种情况(我还没有尝试过)?

  • 这是我的组件在 .wxs 中的样子文件:
    <Component Id="cmpService" Guid="{MYGUIDHERE}">
    <File Id="filService" KeyPath="yes" Name="ServiceApp.exe" />
    <ServiceInstall Id="ServiceInstall" Name="ServiceApp" DisplayName="My Service"
    Type="ownProcess" Start="auto" ErrorControl="normal"
    Account="LocalSystem">
    <util:PermissionEx ... attributes here... />
    </ServiceInstall>
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall"
    Name="ServiceApp" Wait="yes" />
    </Component>

    我曾预料到 Remove="uninstall"如果没有更改,将保留服务。显然不是。 (如果这发生在“主要”更新中,我不太担心)。

    我还注意到 ServiceConfig元素具有似乎符合要求的属性( OnReinstall),但根据蜡烛错误消息,很明显 OnReinstall旨在仅影响元素的配置成员( PreShutdownDelay 等),而不是整个服务安装。

    我研究了这些:
  • Let the user specify in which account a service runs
  • WiX MajorUpgrade of Windows Service, preserving .config, and avoiding a reboot
  • How to only stop and not uninstall windows services when major upgrade in wix?

  • 奇怪的是, this answer表明这只是“主要”升级的问题。那不是我的经验。我的经历是侥幸吗?
  • How do I create a custom dialog in WiX for user input?

  • 在安装过程中提示输入帐户和密码本来可以,但在这种情况下,将密码存储在注册表或其他地方并不是一个真正的选择,并且必须在每次更新时重新输入凭据与必须重新配置一样具有破坏性手工服务。

    最佳答案

    最终为我工作的是

      <DeleteServices><![CDATA[REMOVE ~= "ALL" AND (NOT UPGRADINGPRODUCTCODE)]]> </DeleteServices>
    <InstallServices><![CDATA[NOT Installed]]> </InstallServices>

    我通过一系列试错尝试以及结合其他一些具有类似答案的线程得出了这个答案。

    只有 不起作用的可能原因之一是因为 WIX 在重新安装时也会删除该服务。我们只想在初始安装期间安装该服务一次。我们还希望确保在卸载时删除该服务。这是唯一对我有用的条件组合,允许服务保留其设置和用户帐户。

    关于wix - 使用 Windows 服务更新包会重置服务的帐户和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26985402/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com