Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WIX-是否可以为多个MSI创建语言无关的修补程序?_Wix_Windows Installer_Patch - Fatal编程技术网

WIX-是否可以为多个MSI创建语言无关的修补程序?

WIX-是否可以为多个MSI创建语言无关的修补程序?,wix,windows-installer,patch,Wix,Windows Installer,Patch,我们为不同的语言提供了多个MSI,因此每个MSI都有自己的产品代码和升级代码。使用英文MSI,我们在中使用Aaron的方法创建了一个补丁,例如蜡烛/灯光/火炬/火焰 使用以下Patch.wxs: <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Patch AllowRemoval="yes"

我们为不同的语言提供了多个MSI,因此每个MSI都有自己的产品代码和升级代码。使用英文MSI,我们在中使用Aaron的方法创建了一个补丁,例如蜡烛/灯光/火炬/火焰 使用以下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 Installer服务无法安装升级修补程序,因为要升级的程序可能已丢失,或者升级修补程序可能会更新程序的其他版本。请确认要升级的程序存在于您的计算机上,并且您有正确的升级修补程序

所以我的问题是,, 是否可以创建一个可以在任何语言上使用的修补程序(MSP)?
如果是,需要做什么

我认为您应该尝试使用元素,它是PatchBaseline的子元素,以及torch.exe命令行的验证标志。正确的位组合将允许您安装修补程序

谢谢严给了我一个正确的方向。我使用“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>
...

...