2016-05-03 10 views
1

У меня есть настройки загрузчика, который принимает параметры командной строки, как указано в this ссылке и, как указано ниже:как обрабатывать аргументы командной строки с страницы пользовательского интерфейса в загрузчике в WiX

<Wix> 
    <Bundle> 
    <Variable Name="CommandLineArg" bal:Overridable="yes"/> 
    <Chain> 
     <MsiPackage> 
     <MsiProperty Name="CommandLineArg" Value="[CommandLineArg]"/> 
     </MsiPackage> 
    </Chain> 
    </Bundle> 
</Wix> 

Я использую эту аргумент командной строки для условно запустить пользовательское действие. Это отлично работает, если я запускаю это через командную строку, то есть, если я передаю параметр, выполняется произвольное действие, а если нет, то он не запускается. Но я хочу, чтобы пользователь инициировал его через пользовательский интерфейс, т. Е. Дважды щелкнув пакет, пользователю будет показана страница EULA, и если пользователь примет его, тогда будут выполняться все пользовательские действия, включая тот, который имеет условие, основанное на аргумент командной строки. Как я могу убедиться, что, поскольку прямо сейчас происходит то, что пользовательское действие не запускается при инициализации установки из командной строки.

Любые предложения приветствуются. Дайте мне знать, если мой вопрос не ясен.

ответ

0

Добавьте значение по умолчанию к вашей переменной.

Например:

<Wix> 
    <Bundle> 
    <Variable Name="CommandLineArg" bal:Overridable="yes" Type="string" Value="hello"/> 
    <Chain> 
     <MsiPackage> 
     <MsiProperty Name="CommandLineArg" Value="[CommandLineArg]"/> 
     </MsiPackage> 
    </Chain> 
    </Bundle> 
</Wix> 

Таким образом CommandLineArg всегда будет иметь значение, даже если пользователь дважды нажимает на инсталлятор.