Локализируемый текст в пользовательской библиотеке пользовательского интерфейса WIX

У меня есть 2 проекта:

  1. InstallerUILibrary.wixlib — содержит настраиваемый диалог WIX и фрагмент пользовательского интерфейса, поэтому я могу повторно использовать его и локализуемый текст, который использует диалог.
  2. SomeInstaller.wixproj - проект установщика, который ссылается на InstallerUILibrary.wixlib, который использует пользовательский интерфейс в своем продукте установщика.

Я локализовал текст в InstallerUILibrary.wixlib с такими записями:

<Control Id="DiskCost" Text="!(loc.InstallDirDiskCostDlgDiskCost)">

И включил en-us.wxl в InstallerUILibrary.wixlib, что выглядит примерно так:

<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
    <String Id="InstallDirDiskCostDlgDiskCost">Disk Cost...</String>
</WixLocalization>

Однако SomeInstaller не видит файл wxl и, следовательно, не строится, так как локализуемый текст поврежден.

Ожидается ли это? Сделал ли я какую-нибудь ерунду, ссылаясь на файлы моего проекта? Есть ли где-нибудь переключатель, который заставит все это работать?

Должен ли я включать en-us.wxl в каждый потребляющий проект?


person JaySeeAre    schedule 25.10.2016    source источник


Ответы (1)


Опытным путем я обнаружил, что вам нужно добавить хотя бы один файл локализации в ваш проект установщика. Это не обязательно должно включать какие-либо строки, только элемент WixLocalization.

Если у вас нет файлов .wxl, текстовое поле «Культуры для создания» будет доступно только для чтения. Но как только вы добавите один, это, кажется, побудит Votive собраться и применить некоторую локализацию, о которой вы просили.

Затем вы можете «предложить» создать инвариантную культурную версию установщика, возвращающуюся к выбранному вами языку. добавив это

neutral,en-us;

Текстовое поле «Культуры для создания» в свойствах проекта, которое теперь должно быть редактируемым.

Таким образом, мои решения выглядят так:

  • InstallerUILibrary.wixproj - wixlib

    • Localization
      • customDlg_en-US.wxl - Contains the strings used in CustomDlg.wxs Culture="en-US".
    • customDlg.wxs
  • SomeInstaller.wixproj - Установщик - Культуры для сборки установлены на neutral,en-US;

    • Localization
      • invariantCulture.wxl - Contains a single empty WixLocalisationElement with Culture = "" (empty string)
    • Product.wxs — ссылки на CustomDlg

Если у кого-то есть более аккуратное решение, это было бы замечательно.

Некоторое чтение я нашел лишь слегка полезным:

person JaySeeAre    schedule 26.10.2016