Локализация WiX - ярлык в меню «Рабочий стол» / «Программа» не обновляется при обновлении - PullRequest
1 голос
/ 29 марта 2012

Недавно мы включили поддержку локализации для упрощенного Chiense (zh-cn) в установщике Windows с использованием WIX 3.5.Текущая версия нашего продукта - 1.3.0, а в старой версии (1.2.0) у нас нет поддержки локализации.

Мы также изменили код продукта для 1.3.0, чтобы выполнить значительное обновление,И использовал преобразование MSI (используя Wisubstg.vbs и Wilangid.vbs) для интеграции поддержки локализации в единый MSI без использования Bootstrapper.

Когда мы тестируем это в упрощенной китайской сборке в режиме обновления, ярлыки меню рабочего стола и прпограммыне были заменены, но дублированы с текстом на китайском языке.

Сокращенный код WiX находится здесь.

<Shortcut Id="StartServiceShortcut" Icon="StartServiceIcon" 
     Name="!(loc.STR_StartServiceName)" 
     Description="!(loc.STR_StartServiceDesc)"  
     Target="[INSTALLLOCATION]bin\myapp.exe" Arguments="-s" 
     WorkingDirectory="INSTALLLOCATION"/>

product.Wxl

<String Id="STR_StartServiceName">Start Service</String>
<String Id="STR_StartServiceDesc">Start Services</String>
  • Установлено 1.2 build withРусская версия Windows 7
  • Изменил региональные настройки на упрощенный китайский, а затем запустил установщик версии 1.3.
  • Просмотр мастера установки Windows, отображающего содержимое на упрощенном китайском языке.
  • Установка былауспешный.Но меню рабочего стола / программы дублируются новым китайским текстом.
  • Оба сочетания клавиш работают без каких-либо проблем.Но при удалении не удалялись оба среза.

Продукт удаления не удаляет срезы.Я также видел, что две записи в списке программ / функций.Также видно, что есть две разные записи реестра.Имя продукта и значения Publisher локализованы, все остальные свойства совпадают с этими в ключах реестра.

Куда я скучаю?

Заранее благодарен за любую помощь!

Обновление:

После изменения языка обновления на «0», я все еще получаю ту же проблему.Кажется, эта новая версия 1.3 была установлена ​​как совершенно новый продукт.Любая помощь!
После изменения языка обновления на «0», я все еще получаю ту же проблему.Кажется, эта новая версия 1.3 была установлена ​​как совершенно новый продукт.Любая помощь!

    <Package InstallerVersion="300" Compressed="yes" InstallPrivileges="elevated" />

    <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />


    <Upgrade Id="$(var.UpgradeCode)">
        <UpgradeVersion Minimum="$(var.ProductVersion)"
                        IncludeMinimum="no"
                        OnlyDetect="yes"
                        Language="0"
                        Property="NEWPRODUCTFOUND" />

        <UpgradeVersion Minimum="$(var.RTMProductVersion)"
                        IncludeMinimum="yes"
                        Maximum="$(var.ProductVersion)"
                        IncludeMaximum="no"
                        Language="0"
                        Property="UPGRADEFOUND" />

    </Upgrade>
    <Product Id="$(var.ProductID)" Name="!(loc.STR_ProductName)" Language="!loc.STR_Language)" Version="$(var.ProductVersion)" Manufacturer="!(loc.STR_Manufacturer)" UpgradeCode="$(var.UpgradeCode)" >

1 Ответ

1 голос
/ 30 марта 2012

Наконец я понял.Благодаря блогу Алекса Шевчука От MSI до WiX, часть 8 - Основное обновление .

Действие FindRelatedProducts последовательно просматривает каждую запись таблицы обновления и сравнивает код обновления.версия продукта и язык в каждой строке для продуктов, установленных в системе.

Итак, после изменения моего кода на что-то вроде ниже, обновление прошло успешно.Может быть полезным для других.

Любые комментарии приветствуются!

  <Product Id="$(var.ProductID)"
  Name="!(loc.STR_ProductName)"
  Language="0"
  Version="$(var.ProductVersion)"
  Manufacturer="!(loc.STR_Manufacturer)"
  UpgradeCode="$(var.UpgradeCode)">

<Package InstallerVersion="300" Compressed="yes" InstallPrivileges="elevated" Languages="0" Manufacturer="!(loc.STR_Manufacturer)"  />

<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />


<Upgrade Id="$(var.UpgradeCode)">
  <UpgradeVersion Minimum="$(var.ProductVersion)"
                  IncludeMinimum="no"
                  OnlyDetect="yes"
                  Language="0"
                  Property="NEWPRODUCTFOUND" />

  <!-- For UPGRADEFOUND Property, the Language attribute should be set to 1033 as previous version supports only English -->
  <UpgradeVersion Minimum="$(var.RTMProductVersion)"
                  IncludeMinimum="yes"
                  Maximum="$(var.ProductVersion)"
                  IncludeMaximum="no"
                  Language="1033"
                  Property="UPGRADEFOUND"  />

</Upgrade>
...