我正在尝试弄清楚如何从提升的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,即使在系统目录中安装文件期间,用户也始终是相同的。在这种情况下,似乎改变的不是身份,而是特权。
有什么想法吗?
谢谢, 施特尼奥