【问题标题】:WIX - installer fails with Error 0x80070005: failed to set security info for objectWIX - 安装程序失败并出现错误 0x80070005:未能为对象设置安全信息
【发布时间】:2026-02-21 08:45:01
【问题描述】:

我为 WCF/Silverlight 应用程序创建了一个安装程序。在用户将安装路径更改为 C:\Program Files 之前一切正常。所有其他路径都可以正常工作。

未能为对象设置安全信息:C:\Program Files (x86)\

它在 Windows 2008 Server R2 上。即使用户选择 C:\Program Files\ 日志显示 C:\程序文件 (x86)\

安装日志的最后几行:

MSI (s) (90:08) [13:22:10:334]:LocalSQLConfigDataSource 在 远程上下文。 MSI (s) (90:08) [13:22:10:344]:执行操作: ActionStart(Name=ExecSecureObjects,,) 行动 13:22:10: 执行安全对象。 MSI (s) (90:08) [13:22:10:353]:执行操作: CustomActionSchedule(Action=ExecSecureObjects,ActionType=3073,Source=BinaryData,Target=ExecSecureObjects,CustomActionData=C:\Program 文件 (x86)\CreateFolderEveryone269221888) MSI (s) (90:B0) [13:22:10:358]:调用远程自定义操作。动态链接库: C:\Windows\Installer\MSIF980.tmp,入口点:ExecSecureObjects ExecSecureObjects:在中输入 ExecSecureObjects C:\Windows\Installer\MSIF980.tmp,版本 3.6.3005.0 ExecSecureObjects:保护对象:C:\Program Files (x86)\ 类型: CreateFolder 用户:每个人 ExecSecureObjects:错误 0x80070005: 未能为对象设置安全信息:C:\Program Files (x86)\

【问题讨论】:

    标签: wix


    【解决方案1】:

    32 位安装程序无法写入 64 位程序文件。这需要 64 位 MSI。

    为什么要更改 Program Files 文件夹的权限?这对操作系统来说非常具有侵入性。

    【讨论】:

    • 如何让安装程序同时为32位和64位?更改权限不是意图,我不确定安装程序为什么要尝试它。
    • MSI 不正式支持混合 32/64 位 msi。正式地,您必须创建 2 个 MSI 并使用引导程序将它们链接在一起。非正式地,有一些黑客可以颠覆设计。
    最近更新 更多