WIX Создать многоязычный установщик

Я новичок в WIX и использую Wix 3.8 VS 2012. Мне удалось сгенерировать .msi в .exe с помощью этого замечательного инструмента.

Из этого руководства: http://max.zamorsky.name/node/78 мне удалось измените установщик на French. Я хотел бы сделать многоязычный установщик, который мог бы определить язык системы и приступить к установке.

Я пытался понять эту ссылку: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Localized-bundle-Picking-up-the-right-files-td7265208.html но я не мог понять.

Пожалуйста, подскажите, как я могу сделать этот тип установщика? Нужна ваша помощь и спасибо.

Комплект.WXS

<?xml version="1.0" encoding="UTF-8"?>
<?define SourceDirImages = "C:\Users\krangaraj\Documents\Visual Studio 2012\Projects\PrintUtility\SetupProjectInstaller" ?>
<?define SourceDoc = "C:\Users\krangaraj\Documents\Visual Studio 2012\Projects\PrintUtility\PrintUtilityExe" ?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
         xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
    <Bundle Name="PrintUtility" Version="1.5" Manufacturer="DNP PIE SAS" IconSourceFile="PartyPrintInstaller.ico"
          UpgradeCode="7ba74925-c154-4939-9c2e-a531eac0cd8a" >
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" >
      <bal:WixStandardBootstrapperApplication SuppressOptionsUI="yes" SuppressRepair="yes"
        LicenseFile="$(var.SourceDoc)\sample.rtf" ThemeFile="HyperlinkTheme.xml"
        LocalizationFile="HyperlinkTheme.wxl"
        ShowVersion="yes"
        LogoFile="$(var.SourceDoc)\logo.jpg" LogoSideFile="$(var.SourceDoc)\SideLogo.jpg"/>

      <!--For the French language -->
        <Payload Compressed="yes"  Name="1036\thm.wxl" SourceFile="1036\thm.wxl"/>

      <!-- I would like to add German,Greek,English,Es,It,Jp,Ru,Turkish make a common installer  

      <Payload Compressed="yes"  Name="1031\thm.wxl" SourceFile="1031\thm.wxl"/>
      <Payload Compressed="yes"  Name="1032\thm.wxl" SourceFile="1032\thm.wxl"/>
      <Payload Compressed="yes"  Name="1033\thm.wxl" SourceFile="1033\thm.wxl"/>
      <Payload Compressed="yes"  Name="1034\thm.wxl" SourceFile="1034\thm.wxl"/>
      <Payload Compressed="yes"  Name="1040\thm.wxl" SourceFile="1040\thm.wxl"/>
      <Payload Compressed="yes"  Name="1041\thm.wxl" SourceFile="1041\thm.wxl"/>

      <Payload Compressed="yes"  Name="1049\thm.wxl" SourceFile="1049\thm.wxl"/>
      <Payload Compressed="yes"  Name="1055\thm.wxl" SourceFile="1055\thm.wxl"/>-->


    </BootstrapperApplicationRef>
    <Chain>
      <!-- TODO: Define the list of chained packages. -->
      <MsiPackage  SourceFile="$(var.SourceDirImages)\Product.msi"/>
    </Chain>

  </Bundle>
</Wix>

person linguini    schedule 11.02.2014    source источник


Ответы (1)


Предполагая, что вы не планируете использовать загрузчик, который выбирает язык, а затем запускает MSI с соответствующим языковым преобразованием, вы можете использовать метод, описанный на следующем сайте: http://www.installsite.org/pages/en/msi/articles/embeddedlang/

Обратите внимание, что этот метод не поддерживается Microsoft, но у меня не было отрицательного опыта с ним. Также обратите внимание, что для определения языка используется не язык пользовательского интерфейса Windows, а стандарты и параметры формата Windows.

В основном он состоит из следующих шагов:

  • Создайте свой базовый файл MSI с базовым/резервным языком, в большинстве случаев это будет английский.
  • Создайте файлы преобразования языка, по одному для каждого языка. Если пользовательский интерфейс не изменится и вы меняете только элементы пользовательского интерфейса, вы можете повторно использовать эти файлы преобразования для дальнейших сборок.
  • Добавьте языковые преобразования в виде потоков, используя скрипт VBScript из Windows SDK.
  • Обновите языковую запись потока сводной информации, чтобы отразить включенные языки.

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

Как сказано: этот метод отлично сработал для установщика и > 20 языков.

person taffit    schedule 11.02.2014
comment
Спасибо за ваше объяснение. Как я могу использовать WIX 3.8 для добавления нескольких языков? Спасибо. - person linguini; 11.02.2014
comment
Не могли бы вы немного подробнее рассказать о своих намерениях? Вы не хотите: - person taffit; 11.02.2014
comment
Не могли бы вы немного подробнее рассказать о своих намерениях? Хотели бы вы: - Создать несколько файлов установщика Windows, по одному для каждого языка? В этом случае вы можете использовать механизм WiX с файлами локализации, как описано, например. здесь или здесь — создайте один установщик, который переключается на язык операционной системы и устанавливает его в обычном режиме. ? В этом случае используйте механизм, описанный выше. - person taffit; 11.02.2014
comment
Большое спасибо за ваши дополнительные комментарии. Я понял, как я могу это сделать. У меня есть система, в которой одна пользовательская настройка находится на французском языке, а логин администратора — на английском; в таком случае, как я могу проверить базовый язык системы Using the SystemLanguageID or UserLanguageID property. и продолжить установку? Спасибо! - person linguini; 12.02.2014
comment
В зависимости от версии установщика Windows, которую вы можете использовать, вы можете использовать ссылку SystemLanguageID-свойство или, например, прочитать пользовательский или системный язык из реестра, см., например. здесь или выполните поиск по запросу system language registry. Вы можете просто использовать тег RegistrySearch из WiX, чтобы установить соответственно свойство. - person taffit; 12.02.2014
comment
Удивительно спасибо. Нужно еще одно предложение, я запускаю стороннее приложение как prerequisites, но оно запускается за исходными окнами. Можно ли вывести его на передний план? Должен ли я опубликовать новый вопрос? Спасибо. - person linguini; 12.02.2014
comment
РЕДАКТИРОВАТЬ: Извините, не прочитал вопрос должным образом. Здесь может помочь CA 71 или запуск AutoHotkey-exe, который выводит его на передний план. --- Я здесь новичок, но, насколько я понял, это должен быть новый вопрос. В зависимости от предварительных условий вы можете либо запустить его с помощью настраиваемого действия (CustomAction-атрибут ExeCommand), либо с помощью (устаревших) настраиваемых типов действий 71 для установки и 103 для удаления. Поскольку WiX не поддерживает последние, вам придется добавлять записи с помощью VBScript. - person taffit; 12.02.2014