Подтвердить что ты не робот

Создание локализованных загрузочных машин WIX 3.6.

Я создал проект WIX в Visual Studio 2010 более года назад. Он создает файл MSI и bootstrapper setup.exe. Фактически, он создает пару файлов на двух языках - английском и французском. Я только сейчас интегрирую этот проект в наши сборники TFS CI. У меня возникли проблемы с созданием CI-сборки для создания файлов setup.exe bootstrapper.

Недавно мы обновили Wix на всех наших серверах сборки до Wix 3.6 RC. Итак, я подумал, что дам Burn попробовать вместо того, чтобы использовать старый стиль bootstrapper. Я добавил в проект новый проект Bootstrapper. Проект bootstrapper включает в себя простой пакет bundle.wxs, который просто загружает MSI, сгенерированный моим старым проектом MSI. Однако, когда я пытаюсь построить, я получаю следующую ошибку:

error LGHT0103: система не может найти файл "C:\Tf\Advantage\Dev\Solution\Configuration\LaunchPad.Wix\Bin\Release\фр-фр\LaunchPad.msi; C:\Tf\Advantage\Dev\Solution\Configuration\LaunchPad.Wix\Bin\Release\EN-US\LaunchPad.msi".

Ссылка на мой пакет в комплекте выглядит следующим образом:

<MsiPackage Id="MyApplication" SourceFile="$(var.LaunchPad.Wix.TargetPath)" />

LaunchPad.Wix - это название проекта Wix MSI. Если я изменю проект LaunchPad.Wix, чтобы построить только один язык, тогда он отлично работает. Мне кажется, что тип проекта bootstrapper просто не поддерживает файлы настройки здания для нескольких языков. Это правда? Любые предложения об обходном пути?

Edit

При дальнейших исследованиях мне интересно, поддерживают ли проекты bootstrapper поддержку локализации. Я попытался настроить мой проект Wix MSI для создания только fr-fr. Файл setup.exe, созданный моим загрузочным файлом с английского. Когда я редактирую свойства проекта для проекта bootstrapper, поле "Культуры для сборки" заблокировано и пустое. Как мне создать не-английский загрузчик? Возможно ли это еще?

4b9b3361

Ответ 1

Здесь происходит несколько вещей:

  • Если вы используете несколько культур, вы не можете использовать TargetPath в чем-то вне MSBuild, который ожидает одно имя файла. Как вы нашли, TargetPath - это список локализованных файлов, которые были созданы. Однако вы можете использовать TargetPath, если вы соответствуете языку вывода пакета .msi: <MsiPackage SourceFile="$(var.TestMsi.en-US.TargetPath)" Id="MsiEnUs" />

  • Если вы хотите создать один загрузочный носитель, который может установить оба /en -US и fr-FR, вам нужно будет перечислить каждый .msi-пакет отдельно в своем собственном элементе MsiPackage.

  • Если вы хотите создать два загрузочных файла, один из en-US и один fr-FR, вам нужно будет дважды запустить bootstrapper.wixproj один раз для каждого языка. Bootstrappers не поддерживают "трюк" Cultures - это проблематично для создания двух выходов из одного вызова MSBuild (свидетельствуйте о проблеме TargetPath).

Если вы используете WixStandardBootstrapperApplication, он автоматически пытается локализовать пользовательский интерфейс на основе пользовательского интерфейса пользователя, вернуться к языку пользовательского интерфейса системы и, наконец, вернуться на английский язык. Он ищет локализованные строки в каталогах, названных в честь LCID, поэтому у вас будут такие полезные нагрузки:

<Payload Name="1033\thm.wxl" SourceFile="..." />
<Payload Name="1036\thm.wxl" SourceFile="..." />

К сожалению, строки WixStandardBootstrapperApplication доступны в настоящее время только для en-US. Именно поэтому загрузочный загрузчик fr-FR отображает пользовательский интерфейс на английском языке. Вам нужно будет локализовать исходный файл WiX HyperlinkTheme.wxl или RtfTheme.wxl(в зависимости от темы, которую вы используете). Оба этих файла находятся в файле src\ext\BalExtension\wixstdba\Resources.

Ответ 2

хорошо. он работает, как сказал Боб Арнсон.

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

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
      <Payload Name="2052\thm.wxl" SourceFile="2052\thm.wxl" />
</BootstrapperApplicationRef>

если вы измените имя на другое. bootstrapper не будет локализован.