Как да зададете 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)


Поставете този код в персонализирания UI код във вашето решение. Можете да публикувате свойствата в самите тагове за управление на бутоните. Моля, вижте следния код за това как да публикувате свойства при щракване на бутон.

<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