4

我试图弄清楚如何从提升的 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>

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

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

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

有任何想法吗?

谢谢, 斯泰尼奥

4

0 回答 0