wix
  • wix3
  • wix3.8
  • 2016-08-02 43 views 0 likes 
    0

    我试图设置使用单选按钮(单用户安装到应用程序数据和ALLUSERS安装到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> 
    

    目前发生了什么,当我运行它,是它试图在电子商务安装:而不是正确的应用程序数据, AppData文件夹。此外,安装程序错误并且UI不显示。如果我硬编码值LocalAppDataFolder而不是通过变量传递它,这不会发生。我在安装过程中运行了一个日志,当我浏览安装程序时,我可以看到INSTALLSCOPE的值被更改,但UI永不更新以反映此更改,实际安装路径也不会更改。任何帮助都会很棒。

    +0

    试图寻找到文件WixUI_Advanced.wxs(如果你还没有把),其中实现UI模板,功能,您试图实现。它可能会帮助你。我认为最简单的方法就是从UI模板中复制InstallScopeDlg的东西,并创建自己的InstallScopeDlg.wxs克隆并根据需要进行编辑,或者从那里复制功能。 – Mischo5500

    +0

    谢谢。我会研究这一点。这些模板可以在这里找到(https://github.com/AnalogJ/Wix3.6Toolset),并且似乎与新版本的Wix不兼容。 – user5521

    +0

    它不是官方的WiX存储库,它位于这里[link](https://github.com/wixtoolset/)。上周我使用了从WiX4分支到WiX3.10工具集的模板,它工作正常。 – Mischo5500

    回答

    0

    添加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> 
    
    +0

    这给出了一个错误:'RadioButtonGroup元素包含一个意外的子元素'Publish'。' – user5521

    +0

    对不起,我从问题主体复制了错误的代码。发布事件部分应添加到控件元素。我编辑了我的答案。 – BBR

    相关问题