WIX: статусы при откате удаления не локализованы на французском

#localization #installation #wix #status

#локализация #установка #wix #Статус

Вопрос:

Я создал установку с использованием WIX V3 с локализацией на французский. Установка работает нормально, но затем мы обнаружили странную вещь:

После установки продукта мы пытаемся его удалить. Во время удаления мы нажимаем «Отмена», а затем установка выполняет откат (что нормально). Проблема в том, что во время отката статусы отображаются на английском языке…

Например:

скриншот

Я искал строки на английском и французском языках wxl, но не смог их оштрафовать.

Установка была протестирована на французской ОС.

У кого-нибудь есть идея, откуда могли взяться эти строки?

Комментарии:

1. Они находятся в таблице ActionText вашего MSI: msdn.microsoft.com/en-us/library/aa367516 (v= против85).aspx . Возможно, в Wix для них нет французских строк.

2. Спасибо за подсказку. Я поискал в исходном коде WIX английскую строку и ничего не нашел. У меня нет таблицы ActionText в моем msi… Я не понял, откуда установщик загружает локализованные строки. Мое свойство ProductLanguage правильное (1036).

Ответ №1:

Вы ссылаетесь на строки прогресса в вашей настройке?

WiX не включает их по умолчанию, поэтому вам необходимо убедиться, что вы вручную ссылаетесь на них следующим образом:

 <UIRef Id="WixUI_ErrorProgressText" />
  

Тогда, пока вы включаете французский язык в свои настройки ( fr-FR ), локализованные строки будут включены.

Ответ №2:

Таблица ActionText по умолчанию не создается.

Вы должны создать его самостоятельно, добавив элемент пользовательского интерфейса в один из ваших файлов wxs. Этот элемент пользовательского интерфейса должен содержать элементы ProgressText. Установите атрибут Id каждого элемента ProgressText равным имени стандартного действия. Внутренний текст такого элемента перезапишет строку, которая отображается для этого конкретного действия.

Элемент ProgressText также имеет атрибут Template. Взгляните на документацию для каждого стандартного действия, чтобы определить соответствующий шаблон здесь: Ссылка на стандартные действия. Я не знаю, какое конкретное действие отображает строку, которую вы ищете.

Лучше не жестко кодировать значения для каждого элемента ProgressText, а вместо этого использовать файл локализации. Создайте две строки локализации для каждого элемента ProgressText. Один для шаблона и один для фактического значения.

Пример

файл wxs

 <UI>
  <ProgressText Action="InstallFiles" Template="!(loc.InstallFilesTemplate)">!(loc.InstallFiles)</ProgressText>
  <ProgressText Action="CreateShortcuts" Template="!(loc.CreateShortcutsTemplate)">!(loc.CreateShortcuts)</ProgressText>
  <ProgressText Action="WriteRegistryValues" Template="!(loc.WriteRegistryValuesTemplate)">!(loc.WriteRegistryValues)</ProgressText>
  <ProgressText Action="RegisterUser" Template="!(loc.RegisterUserTemplate)">!(loc.WriteRegistryValues)</ProgressText>
  <ProgressText Action="RegisterProduct" Template="!(loc.RegisterProductTemplate)">!(loc.RegisterProduct)</ProgressText>
  <ProgressText Action="PublishFeatures" Template="!(loc.PublishFeaturesTemplate)">!(loc.PublishFeatures)</ProgressText>
  <ProgressText Action="PublishProduct" Template="!(loc.PublishProductTemplate)">!(loc.PublishFeatures)</ProgressText>
  <ProgressText Action="InstallFinalize" Template="!(loc.InstallFinalizeTemplate)">!(loc.InstallFinalize)</ProgressText>
</UI>
  

файл локализации

 <String Id="InstallFiles">Installazione del archivos</String>
<String Id="InstallFilesTemplate">Archivo: [1], Tamaño de archivo: [6], Directorio: [9]</String>
<String Id="CreateShortcuts">Creacion de los atajos</String>
<String Id="CreateShortcutsTemplate">Atajo [1] creado</String>
<String Id="WriteRegistryValues">Escribir en registro</String>
<String Id="WriteRegistryValuesTemplate">Camino: [1], Nombre: [2], valor: [3]</String>
<String Id="RegisterUser">Registrar a los usuarios</String>
<String Id="RegisterUserTemplate">Usario: [1]</String>
<String Id="RegisterProduct">Registrar producto</String>
<String Id="RegisterProductTemplate">Producto: [1]</String>
<String Id="PublishFeatures">Publicar las características</String>
<String Id="PublishFeaturesTemplate">Caraterística: [1]</String>
<String Id="PublishProduct">Publicar el producto</String>
<String Id="PublishProductTemplate">Producto: [1]</String>
<String Id="InstallFinalize">Finalizar la instalación</String>
<String Id="InstallFinalizeTemplate">Finalizar [ProductName]</String>
  

примечание: я не знаю испанский, я просто позволяю Google перевести его.

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

  • Действие InstallInitialize
  • Действие компонентов процесса
  • Действие InstallFiles
  • Действие CreateShortcuts
  • WriteRegistryЗначит действие
  • Действие registerUser
  • Действие RegisterProduct
  • Действие PublishFeatures
  • Действие PublishProduct
  • Действие InstallFinalize

Мои знания основаны на книге со следующим ISBN: 978-1782160427