2016-08-02 6 views
0

Я пытаюсь установить два различных места установки с помощью переключателей (один пользователь устанавливает на AppData и AllUsers устанавливается в ProgramFiles)Wix установить установить переменную местоположения от радиокнопки

Моя собственность определяется следующим образом:

<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> 
      ... 

После радио-кнопки меняются и кнопка Вперед нажата, то происходит следующее:

<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. Также инсталлятор отключается, и пользовательский интерфейс не отображается. Это не произойдет, если я жестко задал значение LocalAppDataFolder вместо передачи его через переменную. Я запустил журнал процесса установки, и я вижу, что значение INSTALLSCOPE изменяется при прохождении через установщик, но пользовательский интерфейс никогда не обновляется, чтобы отразить это изменение, и ни один из путей установки не изменится. Любая помощь будет большой.

+0

Попробуйте посмотреть в WixUI_Advanced.wxs файл (если вы не сделали еще), где реализуется шаблон пользовательского интерфейса с функцией, что вы пытаетесь осуществить. Это может вам помочь. Я думаю, что самый простой способ - просто скопировать файлы 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