windows-services - 从依赖于 msi 安装的程序集的 msi 安装程序启动服务

标签 windows-services windows-vista wix windows-installer privileges

我正在使用 WiX 编写 MSI 安装程序以启动依赖于 MSI 安装的 DLL 的服务。在 Vista 上,DLL 被添加到 MSI 的 InstallFinalize 中的全局程序集缓存中阶段,所以我无法使用 WiX 中内置的服务启动命令。那个尝试在 DLL 进入 GAC 之前启动服务,但失败了。解决方案似乎是改用自定义操作 [1],并在 InstallFinalize 之后运行它.

我使用的自定义操作是使用 sc 启动服务.以管理员身份运行安装程序时一切正常,但以普通用户身份运行时不起作用。安装程序将提升实际安装阶段的权限,但会在完成安装并使用 sc 启动服务后放弃这些权限。作为非特权用户将失败。在 InstallFinalize 之后,将自定义操作设置为延迟和不模拟以获取管理员权限将不起作用。 [2].

作为最后的拼凑,我尝试添加 <Condition>Privileged</Condition>到 WiX 文件,告诉用户安装程序需要以管理员身份运行,但我也无法让它工作。 Privileged值在安装过程中设置为 1,可能是在主安装序列被赋予更高权限时。

那么有没有其他人遇到过 Vista、非管理员用户、安装程序需要启动服务和服务需要在安装过程中进入 GAC 才能运行的组合?对此有任何通用的工作方法吗?

[1] http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg09162.html

[2] http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg15381.html

最佳答案

这是最简单的解决方案只是安排重启的时代之一。

关于windows-services - 从依赖于 msi 安装的程序集的 msi 安装程序启动服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1572572/

相关文章:

wix 重启管理器成功关闭应用程序,但表示不能

windows - WiX 安装程序 : How to switch to repair-mode if already installed?

c# - 如何获取 Windows 服务登录用户的安全 token ?

windows - Windows Vista 中的 ODBC 文件 DSN 在哪里

wix 禁用目录浏览按钮

java - 无法在 Vista 上从 HKEY_LOCAL_MACHINE 读取配置数据

windows-vista - 您会为 Windows Vista 推荐 32 位还是 64 位系统?

c - 在驱动程序和 Windows 服务之间传递数据

.net - 托管在 Windows 服务中的 Kestrel 的 Windows 身份验证

c# - Windows 服务中未触发设备事件