具有非管理员权限的MSI C ++自定义操作

时间:2011-11-09 19:40:46

标签: c++ windows-installer custom-action

我有一个Visual Studio安装程序,其中包含用C ++编写的自定义操作。我需要从自定义操作启动一个进程,但安装和提交操作都会提升,因此我的进程也会提升。我希望新进程以普通用户身份运行。

我看过Start exe after msi install but using current user privileges但它看起来过于复杂并且没有显示代码。我没有时间尝试使用未知的API。

有什么简单的方法吗?我是否可以使用VS安装程序定义非提升的自定义操作或从提升的自定义操作执行某些操作?

2 个答案:

答案 0 :(得分:2)

如果您只想测试代码,使用Orca更新内置的msi文件并不困难。它允许您将带有代码的dll添加到二进制表中,将相应的行添加到customaction表中,并将操作添加到序列中。

如果您需要将此作为构建过程的一部分发生,则可以使用vbscript完成相同的操作。 SDK附带了用于与msi数据库交互的良好示例vbscript代码,如下所述: http://msdn.microsoft.com/en-us/library/windows/desktop/aa372865%28v=vs.85%29.aspx

答案 1 :(得分:1)

Visual Studio安装项目不支持立即自定义操作。默认情况下,它们都是deferred

因此,您要么使用自定义代码来模拟当前用户,要么切换到另一个支持立即操作的设置创作工具。