WIX: Windows服务修复失败缺乏权限+如何检测修复模式
本文关键字:何检测 模式 检测 Windows 服务 失败 WIX 权限 | 更新日期: 2023-09-27 18:01:26
我们的WIX安装程序在通过自定义UI对话框询问登录帐户后安装windows服务。安装成功后服务启动。整个安装需要提升权限。
希望有关于几个问题的任何指示:
问题1 在尝试从"添加/删除程序"进行"修复"时,UAC提示权限提升。允许这样做后,修复仍然失败,并显示消息:
"无法安装服务。"验证您是否有足够的权限来安装系统服务"。
代码节选:
…
特权…
<Component Id="C_ServiceEXE" Guid="{105F9C86-BF07-43C8-8C78-DF30F012CD68}">
<File Id="$(var.TargetFileName)" Name="$(var.TargetFileName)" KeyPath="yes" Assembly=".net"
AssemblyManifest="$(var.TargetFileName)" AssemblyApplication="$(var.TargetFileName)" DiskId="1"
Source="$(var.TargetDir)'$(var.TargetFileName)" />
<Condition>Privileged</Condition>
<ServiceInstall Id="Id_ServiceInstall"
Name ="$(var.ServiceName)"
Description="$(var.ServiceDescription)"
DisplayName="$(var.ServiceName)"
Account="[SERVICEACCOUNT]"
Password="[SERVICEPASSWORD]"
Start="auto"
ErrorControl="normal"
Type="ownProcess"
Vital="yes"
Interactive="no"
/>
<ServiceControl Id="Id_ServiceControl"
Name ="$(var.ServiceName)"
Remove="uninstall"
Start="install"
Stop="both"
Wait="yes"
/>
</Component>
…
我不太确定为什么会发生这种情况,因为我在我的Win7开发盒上管理并标记了安装程序,特别是服务安装组件以特权模式运行。
我怀疑我可能在admininstalleexecute序列中缺少调度修复,但不太确定这是否会解决这个问题。
问题2 此外,相关的问题是-如果修复成功,它会再次要求用户通过UI输入登录帐户。我宁愿在修复或升级期间抑制所有交互式ui。我实现了UPGRADINGPRODUCTCODE来检测升级。
但是如何检测修复呢?
感谢您的帮助和指点
维护模式很可能失败,因为您的服务用户帐户没有作为服务登录的权利。如果你是管理员,你不能在没有给用户登录权限的情况下为他安装服务。
如果设置此策略有效,您还需要在安装期间动态地执行此操作。一个解决方案是使用nights .exe作为自定义操作。此自定义操作可以使用包含用户帐户信息的自定义属性。
要检测修复过程,您可以检查重新安装属性值。