4

我正在尝试使用 Wix# 构建一个 MSI 安装程序,与 Wix 相比,我对易于使用的语法非常满意。

现在,我正在尝试做一些不合标准的事情,但我有点迷茫,因为我并不真正熟悉 Wix。

基本上,我想设置默认目标安装目录,具体取决于安装程序是使用管理员权限调用还是由默认用户安装。

作为普通用户,我想将默认安装目录设置为%LocalAppData%\MyProduct,而作为管理员,默认安装目录应该是%ProgramFiles%.

使用普通的 Wix 似乎有一个可以管理的解决方案

如何,这可以通过使用 Wix# 来完成吗?

我不得不提一下,我真的缺乏一个人这样做的技能,因为我对 WiX、Msi 甚至 C# 都不太了解。因此,我正在为我的问题寻找一个最小的、可重现的解决方案

4

1 回答 1

4

在您链接的示例中(由 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

目录 ID 必须全部为大写字符,因为它必须从 UI 传递到执行序列才能生效。

相关:Wix - 正确设置安装文件夹

于 2019-08-23T03:20:05.553 回答