Как установить ALLUSERS на основе вашего выбора в диалоге InstallScope в WIX?

Я использую WiX 3.8 для создания пакета установки. Мой установщик должен разрешать установку как для пользователя, так и для компьютера. Я хотел бы добиться этого с помощью переключателей («Все» и «Только я»).

В интернете нашла пару ссылок:

Выбор установки для текущего пользователя или для всех пользователей: Добавление пользовательского интерфейса, часть Еще одного руководства WiX - Часть 2 - Добавление пользовательского интерфейса. Задайте для свойства ALLUSERS пустую строку: Использование WiX 3.0 для создания индивидуального MSI-файла, который не запрашивает повышение прав в Windows Vista. Если я правильно понимаю, мой установщик должен установить для свойства ALLUSERS значение 1 для установки на компьютере и "" (пустая строка) для индивидуальной установки.

Моя проблема в том, что я пробую, ALLUSERS всегда установлен на 1. Даже когда я его вообще не устанавливаю!

Вот несколько вещей, которые я пробовал:

<?xml version="1.0" encoding="UTF-8"?>
      <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="{95B5E9E1-AB21-4947-A047-74C169B1D1F2}" Name="Xproduct" Language="1033"  Version="1.0.0.0" Manufacturer="X Limited" UpgradeCode="af9969f2-fb9c-44c7-b207-e89f1d900a91">


<Package Id="*"
     InstallerVersion="301"
     Languages="1033"
             Compressed="yes"

             Manufacturer="X Limited"
             Description="Install"
             Keywords="Installer, MSI"
             Comments="(c) 2013 NCCD X Limited"        
     SummaryCodepage="1252"/>
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
   <Property Id="ALLUSERS" Secure="yes" Value="1" />
      <Property Id="ASSISTANCE_USERS" Value="all"/>
   </Product>
</Wix>

InstallScope.wxs

<Control  Id = "UserSelection" 
     Type = "RadioButtonGroup" 
     X = "26" 
     Y = "115" 
     Width = "305" 
     Height = "45" 
     Property = "ASSISTANCE_USERS" 
     Text = "ASSISTANCE_USERS" > 
<RadioButtonGroup  Property = "ASSISTANCE_USERS" > 
    <RadioButton  Value = "cur" 
                 X = "0" 
                 Y = "0" 
                 Width = "295" 
                 Height = "16" 
                 Text = "Just me"  /> 
    <RadioButton  Value = "all" 
                 X = "0" 
                 Y = "20" 
                 Width = "295" 
                 Height = "16" 
                 Text = "Everyone"  /> 
</RadioButtonGroup> 

and then setting the ALLUSERS based on ASSISTANCE_USERS,but I don't know where to put it;

<Publish Property="ALLUSERS"
       Value="{}">ASSISTANCE_USERS = "cur"</Publish> <!-- set null value -->

 <Publish Property="ALLUSERS"
       Value="1">ASSISTANCE_USERS = "all"</Publish>

скажите, пожалуйста, как изменить этот код, чтобы реализовать функцию?


person user3802816    schedule 22.07.2014    source источник


Ответы (1)


Поместите этот код в код пользовательского интерфейса вашего решения. Вы можете публиковать свойства в самих тегах управления кнопками. См. Следующий код о том, как публиковать свойства при нажатии кнопки.

<Control Id="InstallScopeNext" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="(loc.WixUINext)">
<Publish Property="ALLUSERS" Value="{}">ASSISTANCE_USERS = "cur"</Publish> <!-- set null value -->
<Publish Property="ALLUSERS" Value="1">ASSISTANCE_USERS = "all"</Publish>
</Control>
person Nilaksha Perera    schedule 26.09.2016