从 WiX 提升的安装程序运行未提升的自定义操作

2024-03-30

我正在尝试弄清楚如何从提升的 WiX 安装设置程序运行自定义操作。 WiX 生成的 msi 文件由 DotNetInstaller 执行。

在 WiX 中,我有一个 Package 部分,其中 InstallScope 设置为 perMachine 以及此自定义操作:

<CustomAction Id='RegisterPlugin' FileKey='RegisterPluginExe' ExeCommand='' Return='asyncNoWait' Impersonate='yes' />

<InstallExecuteSequence>
  <Custom Action='RegisterPlugin' After='InstallFinalize'>NOT Installed</Custom>
</InstallExecuteSequence>

模拟设置为 yes 应该以运行 DNI 引导程序的用户身份运行操作 exe。 自定义操作应该使用 System.Windows.Forms.Application.LocalUserAppDataPath 获取的值读取用户 AppData 目录中的文件,但使用的目录是错误的,因为是管理员用户的目录。

我尝试使用清单来运行未提升的 DNI,但问题仍然存在。如果我直接运行 msi,它会正确执行一些需要管理权限的注册表操作,而自定义操作会按预期运行。

编辑: 查看任务管理器,我可以看到,如果从 DNI 执行 msi,则在启动 msi 时用户将成为管理员。如果我直接运行 msi,用户始终是相同的,即使在系统目录上安装文件期间也是如此。看来在这种情况下改变的不是身份,而是特权。

有任何想法吗?

谢谢, 斯泰尼奥


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 WiX 提升的安装程序运行未提升的自定义操作 的相关文章