【问题标题】:MSI C++ custom action with non-admin privileges具有非管理员权限的 MSI C++ 自定义操作
【发布时间】:2011-12-25 14:48:24
【问题描述】:

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

我见过Start exe after msi install but using current user privileges,但它似乎过于复杂并且没有显示代码。我没有时间试验未知的 API。

有什么简单的方法吗?我可以使用 VS Setup 来定义非提升的自定义操作或从提升的自定义操作中执行某些操作吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢埃德。不,我不想使用 Orca。我需要集成构建。必须手动执行操作会非常乏味。我会看一下样品,看看它们是否可以做我想做的事。与此同时,我已恢复使用自定义引导程序来执行我最初想要的操作。
    【解决方案2】:

    Visual Studio 安装项目不支持即时自定义操作。默认都是deferred

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

    【讨论】:

    • 谢谢!我知道我迟早会遇到安装项目的限制。使用 VS Setup 项目非常好,但我认为它仅适用于非常基本的场景。我决定使用自定义引导程序来实现我的目标,并且效果很好。
    猜你喜欢
    • 1970-01-01
    • 2014-03-31
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多