【问题标题】:wix set install location variable from radio buttonwix 从单选按钮设置安装位置变量
【发布时间】:2016-08-02 09:07:37
【问题描述】:

我正在尝试使用单选按钮设置两个不同的安装位置(单个用户安装到 AppData,所有用户安装到 ProgramFiles)

我的属性定义如下:

    <Property Id="INSTALLSCOPE" Secure="yes" /> 

我的安装目录定义如下:

    <Directory Id='TARGETDIR' Name='SourceDir'>
        <Directory Id= 'INSTALLSCOPE'  Name='AppData'>
            <Directory Id='MYAPP' Name='COMPANY'>
                <Directory Id='INSTALLDIR' Name='MyApp'>

我的单选按钮如下:

    <Dialog Id="CustomInstallScopeDlg" Width="370" Height="270" Title="[ProductName] Install Scope"
                NoMinimize="yes">

        <Control Id="RadioButtonGroupID" Type="RadioButtonGroup" X="30" Y="94" Width="305" Height="100" Property="INSTALLSCOPE">

            <RadioButtonGroup Property="INSTALLSCOPE">
                <RadioButton Value="LocalAppDataFolder" X="0" Y="0" Width="300" Height="10" Text="SingleUser"/>
                <RadioButton Value="ProgramFilesFolder" X="0" Y="20" Width="300" Height="10" Text="AllUser"/>
            </RadioButtonGroup>

        </Control>
            ...

更改单选按钮并单击 NEXT 按钮后,会发生以下情况:

    <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes"
    Text="[ButtonText_Next]">
            <Publish Property="INSTALLSCOPE" Value="LocalAppDataFolder">INSTALLSCOPE = "LocalAppDataFolder"</Publish>
            <Publish Property="INSTALLSCOPE" Value="ProgramFilesFolder">INSTALLSCOPE = "ProgramFilesFolder"</Publish>
    </Control>

目前,当我运行它时,它会尝试安装在 E:AppData 中,而不是正确的 AppData 文件夹。安装程序也出现错误,UI 不显示。如果我硬编码值 LocalAppDataFolder 而不是通过变量传递它,则不会发生这种情况。我在安装过程中运行了一个日志,当我通过安装程序时,我可以看到 INSTALLSCOPE 的值发生了变化,但 UI 永远不会更新以反映这种变化,实际安装路径也不会改变。任何帮助都会很棒。

【问题讨论】:

  • 尝试查看文件 WixUI_Advanced.wxs(如果您还没有),您尝试实现的带有功能的 UI 模板在哪里实现。它可能会帮助你。我认为最简单的方法是从 UI 模板中复制 InstallScopeDlg 的内容,然后创建自己的 InstallScopeDlg.wxs 克隆并根据需要对其进行编辑,或者从那里复制功能。
  • 谢谢。我会调查一下。这些模板位于here,似乎与较新版本的 Wix 不兼容。
  • 它不是官方的 WiX 存储库,它位于这里 link 。上周我使用了从 WiX4 分支到 WiX3.10 工具集的模板,它工作正常。

标签: wix wix3 wix3.8


【解决方案1】:

添加一个 SetTargetPath 事件:

<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes"
    Text="[ButtonText_Next]">
    <Publish Property="INSTALLSCOPE" Value="LocalAppDataFolder">INSTALLSCOPE = "LocalAppDataFolder"</Publish>
    <Publish Property="INSTALLSCOPE" Value="ProgramFilesFolder">INSTALLSCOPE = "ProgramFilesFolder"</Publish>
    <Publish Event="SetTargetPath" Value="INSTALLSCOPE">1</Publish>
</Control>

【讨论】:

  • 这给出了一个错误:The RadioButtonGroup element contains an unexpected child element 'Publish'.
  • 对不起,我从问题正文中复制了错误的代码。发布事件部分应添加到控制元素。我已经编辑了我的答案。
猜你喜欢
  • 2017-09-20
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2021-11-13
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多