0

我有一个 Windows 窗体应用程序(Add-In Express 解决方案),为此我创建了一个使用自定义操作(由 Add-In Express 自动生成)的 InstallShield 安装项目。自定义操作正在启动可执行文件(可执行文件用于注册加载项)。

当我为项目生成 setup.exe 文件时,一切正常。自定义操作正在运行并且加载项正在正确安装。

当我生成一个 msi 文件(在 Installshield 的发布向导中取消选中“创建安装启动器”选项)时,自定义操作未运行(未安装加载项,但程序显示在控制面板中的程序列表中)当我尝试安装产品时。

在使用自定义操作时是否需要使用 setup.exe 版本,或者在尝试生成 msi 文件时我没有正确配置我的项目?

4

2 回答 2

3

直接运行 MSI 或使用 Setup.exe 之间的区别在于提升用户权限的顺序。

如果您运行 Exe,您可能会收到一个请求更多权限的 UAC 弹出窗口,单击“确定”,一切都将运行提升(具有管理员权限)。

如果您从已经提升的命令提示符运行它,那么一切都将运行提升。

如果您正常运行 msi(例如双击它),它将运行整个 installUIsequence,然后它将运行 installexecute 序列,当它到达 InstallInitialize Action时,它将请求提升的权限。

并且一旦运行InstallFinalize操作,权限就会被删除。

因此您需要在 InstallInitialize 之后和 InstallFinalize 操作之前放置需要管理员权限的自定义操作

于 2014-03-03T15:54:30.097 回答
0

我最终解决问题的方法是将自定义操作设置为在系统上下文中运行。

In-Script Execution: Deferred Execution in System Context
于 2014-03-03T20:15:53.657 回答