WIX - Возможно ли создать языковой нейтральный патч для нескольких MSI? - PullRequest
1 голос
/ 09 августа 2011

У нас есть несколько MSI для разных языков, поэтому у каждого MSI есть свой ProductCode и UpgradeCode. Используя английские MSI, мы создали патч, используя подход Аарона в http://blogs.msdn.com/astebner/archive/2007/10/26/5700191.aspx, например. свеча / свет / факел / пиро со следующим Patch.wxs:

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Patch 
        AllowRemoval="yes" 
        Manufacturer="xxx" 
        MoreInfoURL="xxx" 
        DisplayName="MyProduct First Patch" 
        Description="My Product First Patch" 
        Classification="Update Rollup" 
   >
      <Media Id="5000" Cabinet="RTM.cab" >
         <PatchBaseline Id="RTM"/>
      </Media>
      <PatchFamilyRef Id="PatchFamilyRollup"/>
   </Patch>
   <Fragment>    
      <PatchFamily Id='PatchFamilyRollup' Version='1.1.1.1' Supersede='yes'>
... 

Однако, когда мы применяем этот патч на компьютере, на котором был установлен не английский язык MSI, мы получаем следующую ошибку: «Исправление обновления не может быть установлено службой установщика Windows, поскольку обновляемая программа может отсутствовать, или исправление обновления может обновить другую версию программы. Убедитесь, что обновляемая программа существует на вашем компьютере и у вас есть правильный патч обновления. "

Итак, мой вопрос, Можно ли создать патч (MSP), который можно использовать на любом языке? Если так, что нужно сделать?

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Спасибо, Ян, за правильное направление.Я играл с элементом «Validate» и командой «torch» довольно много часов, но я получил ту же ошибку.Затем мой коллега показал мне элемент «TargetProductCode».После нескольких испытаний я, наконец, заставил его работать, хотя решение не является чисто нейтральным для языка.Ответ, который я нашел, - это сочетание элемента «Validate» и элемента «TargetProductCode».Я публикую свой собственный ответ, чтобы кто-то мог извлечь из него пользу.

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Patch 
        AllowRemoval="yes" 
        Manufacturer="xxx" 
        MoreInfoURL="xxx" 
        DisplayName="MyProduct First Patch" 
        Description="My Product First Patch" 
        Classification="Update Rollup" 
   >
      <Media Id="5000" Cabinet="RTM.cab">
         <PatchBaseline Id="RTM" >
            <Validate ProductId='no' ProductLanguage='no' ProductVersionOperator='LesserOrEqual' UpgradeCode='no' />
         </PatchBaseline>
      </Media>

      <TargetProductCodes Replace='yes'>
         <!-- list all language specific ProductCode here. -->
         <TargetProductCode Id='{xxxxx}' /> <!-- ProductCode for English -->
         <TargetProductCode Id='{yyyyy}' /> <!-- ProductCode for French -->
      </TargetProductCodes>

      <PatchFamilyRef Id="PatchFamilyRollup"/>
   </Patch>
...
1 голос
/ 10 августа 2011

Я думаю, вам следует поэкспериментировать с элементом Validate , который является дочерним для PatchBaseline, и с флагами проверки командной строки torch.exe. Правильная комбинация битов позволит вам установить ваш патч.

...