【问题标题】:Set default installation directory depending on rights根据权限设置默认安装目录
【发布时间】:2019-08-20 11:44:37
【问题描述】:

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

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

基本上,我想根据安装程序是使用管理员权限调用还是由默认用户安装来设置默认目标安装目录。

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

使用普通的 Wix 似乎有一个 solution,这是可以管理的。

如何,这可以通过使用 Wix# 来实现吗?

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

【问题讨论】:

    标签: c# wix windows-installer wixsharp


    【解决方案1】:

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

    代码的问题是&lt;Directory Id="ApplicationFolder"是小写的。

    根据https://wixtoolset.org/documentation/manual/v3/xsd/wix/setdirectory.html

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

    相关:Wix - Setting Install Folder correctly

    【讨论】:

    • 非常感谢您的详细解决方案。我刚刚改变了我的问题,因为我正在寻找一个最小的、可重现的 Wix# 解决方案。我只是缺乏 WiX 和 C# 的技能,无法自己在这里做任何事情。您能否使用 Wix# 发布完整的 C# 解决方案?
    猜你喜欢
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多