我正在尝试使用 Wix# 来构建 MSI 安装程序,与 Wix 相比,我对易于使用的语法感到非常满意。
现在,我正在尝试做一些不符合标准的事情,但我有点迷茫,因为我并不真正熟悉 Wix。
基本上,我想根据安装程序是使用管理员权限调用还是由默认用户安装来设置默认目标安装目录。
作为普通用户,我想将默认安装目录设置为 %LocalAppData%\MyProduct
,而作为管理员,默认安装目录应该是 %ProgramFiles%
。
使用普通的 Wix 似乎有一个 solution ,这是可管理的。
如何,这可以通过使用 Wix# 来完成吗?
我不得不提一下,我真的很缺乏独自完成这项工作的技能,因为我对 WiX、Msi 甚至 C# 都不甚了解。因此,我正在为我的问题寻找 最小、可重现的解决方案 。
最佳答案
在您链接的示例中(由 WiX 的作者),它显示了如何根据用户或机器设置目录:
<DirectoryRef Id="TARGETDIR">
<Directory Id="ApplicationFolder" Name="App" />
</DirectoryRef>
如果它的管理员安装它的每台机器,如果它的非管理员默认为每用户:
<CustomAction Id="PerMachineInstall" Property="ApplicationFolder" Value="[ProgramFilesFolder]\[ApplicationFolderName]" Execute="immediate" />
<CustomAction Id="PerUserInstall" Property="ApplicationFolder" Value="[LocalAppDataFolder]\Apps\[ApplicationFolderName]" Execute="immediate" />
您应该能够将
[LocalAppDataFolder]\Apps\[ApplicationFolderName]
更改为 [LocalAppData]\MyProduct
代码的问题在于
<Directory Id="ApplicationFolder"
是小写的。根据 https://wixtoolset.org/documentation/manual/v3/xsd/wix/setdirectory.html
相关:Wix - Setting Install Folder correctly
关于c# - 根据权限设置默认安装目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57572916/