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

时间:2014-01-17 17:15:51

标签: c# .net wix dotnetinstaller

我正在尝试弄清楚如何从提升的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引导程序的用户身份运行action exe。 自定义操作应使用System.Windows.Forms.Application.LocalUserAppDataPath获取的值读取用户AppData目录中的文件,但使用的目录是错误的,因为它是管理员用户之一。

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

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

有什么想法吗?

谢谢, 施特尼奥

0 个答案:

没有答案