我正在使用 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