2013-05-07 4 views
3

У меня есть многоязычный установщик с использованием WiX. Я запускаю установщик из командной строки, используя команду "msiexec /i myinstaller.msi TRANSFORMS=":1041", и она работает нормально. Теперь я создал диалог выбора языка, используя bootstrapper. Как передать выбранный язык моему установщику WiX для запуска по выбранному языку? Я получил эту идею из следующих ссылок:диалог выбора языка с использованием WiX

  1. Can we localize WIX msi and bundle using language selection UI at runtime?
  2. http://wix.tramontana.co.hu/tutorial/transforms/morphing-installers

Мой пучок имеет <MsiPackage SourceFile="myinstaller.msi" DisplayInternalUI="yes" >

У меня есть этот экран в результате моего пользовательского интерфейса с использованием Ожог от WiX набор инструментов:

enter image description here

Я хочу как-то выполнить команду msiexec /i myinstaller.msi TRANSFORMS=":1041", если я выберу японский или msiexec /i myinstaller.msi TRANSFORMS=":1031", если я выберу немецкий и нажмите ОК.

Скажите, пожалуйста, что я должен сделать для этой проблемы. Есть ли другой способ сделать это? Если да, то, пожалуйста, скажите мне. Некоторая выборка кода будет лучшей помощью.

ответ

4

Наконец-то я получил решение. Пользовательский интерфейс Bootstrapper для выбора языка может быть создан, как описано here. После этого я написал следующий код в моем случае нажатия кнопки для запуска MSI на выбранном языке:

Bootstrapper.Engine.StringVariables["CommandArgs"] = ":1031"; 
Bootstrapper.Engine.Plan(Wix.LaunchAction.Install); 
break; 
.... 
.... 
this.Close(); //outside of switch statement 
break; 

Приведенный выше код будет использовать CommandArgs как MSI property.Then я добавил следующий код, чтобы мои bundle.wxs файл

<MsiPackage Id="mypackage" SourceFile="myinstaller.msi" DisplayInternalUI="yes"> 
    <MsiProperty Name="TRANSFORMS" Value="[CommandArgs]"/> 
</MsiPackage> 

Работала так, как хотела. Этот код так же, как запуск из MSI командной строки, используя следующую команду

msiexec /i myinstaller.msi TRANSFORMS=":1031" 

Единственная проблема в том, что она занимает некоторое время, чтобы запустить MSI после выбора языка сверху UI.

+0

Не могли бы вы отобразить диалог выбора языка? – bgplaya

+0

Я не могу понять, как создать исполняемый файл для запуска диалогового окна выбора, а затем msi – bgplaya

+0

Это диалоговое окно можно создать с помощью загрузчика. Скриншот размещен под вопросом. Вы хотите знать, как использовать загрузчик для запуска MSI? – Durgesh

3

К сожалению, преобразование должно применяться при открытии MSI. Это означает, что вам понадобится этот загрузочный блок, чтобы передать соответствующую командную строку установщику Windows, чтобы применить правильное преобразование. (? Выпадающий или что-то)

После того, как пользовательский интерфейс в загрузчике, чтобы спросить у пользователя, какой язык для отображения, я бы, вероятно, просто сделать ShellExecute() и форматировать аргументы командной строки, как:

("/i myinstaller.msi TRANSFORMS=\":%d\", dwLanguageIdFromComboBox) 

Это запустило бы установщик с правильным пользовательским интерфейсом, и ваш загрузчик мог уйти.

+0

Спасибо за ответ Роб. Я действительно хочу знать, как я могу запустить вышеуказанную команду из моего bootstarpper? Я могу запустить диалоговое окно языка с загрузчика, который запускает мой установщик после кнопки ОК этого диалога. Я не знаю, как запустить LOCALIZED installer после OK. – Durgesh

+0

Может у вас, пожалуйста, отправьте пример кода для этого же? – Durgesh

+0

Я все еще не уверен, как я могу запустить эту команду в комплекте, так как кнопка «ОК» вызывает «LaunchAction.Install». Каким образом это можно запустить? – Durgesh

 Смежные вопросы

  • Нет связанных вопросов^_^