WiX 32位和64位单束,重复ID

时间:2013-12-17 22:27:24

标签: wix

什么
如何根据32位/ 64位PackageGroupRefMsiPackage包含多个ExePackageDetect/InstallCondition来自不同来源?

尝试:
如果省略两个MsiPackage Id或相同,我会得到重复的符号错误。

  

错误2找到重复的符号'ChainPackage:SQLSysClrTypes.msi'。这通常意味着Id是重复的。检查以确保给定类型(文件,组件,功能)的所有标识符都是唯一的。

如果两个ID设置不同,我会得到"An expected identifier was not found"

来源:

<Chain>
  <PackageGroupRef Id="NetFx45Web"/>
  <PackageGroupRef Id="Sql2012ClrTypes" After="NetFx45Web" />
  ...
</Chain>

...

<Fragment>
  <PackageGroup Id="Sql2012ClrTypes">
    <!-- x64 -->
    <!-- Unique Ids here cause 'expected id not found' error -->
    <MsiPackage DisplayName="Microsoft SQL Server 2012 CLR Types"
                Cache="yes" Compressed="yes" ForcePerMachine="yes" Permanent="yes" Vital="yes"
                SourceFile="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages\SqlClrTypes_x64\SQLSysClrTypes.msi"
                InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND VersionNT64" />

    <!-- x86 -->    
    <!-- Unique Ids here cause 'expected id not found' error -->
    <MsiPackage DisplayName="Microsoft SQL Server 2012 CLR Types"
                Cache="yes" Compressed="yes" ForcePerMachine="yes" Permanent="yes" Vital="yes"
                SourceFile="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages\SqlClrTypes_x86\SQLSysClrTypes.msi"
                InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND NOT VersionNT64" />
  </PackageGroup>    
</Fragment>

修改

我认为这有效,是否有更好的解决方案?

<Chain>
    <PackageGroupRef Id="NetFx45Web"/>

    <?if $(var.Platform) = x64 ?>
      <PackageGroupRef Id="Sql2012ClrTypes" After="NetFx45Web" />
    <?else ?>
      <PackageGroupRef Id="Sql2012ClrTypesx86" After="NetFx45Web" />
    <?endif ?>
</Chain>

...

<Fragment>
    <PackageGroup Id="Sql2012ClrTypes">
      <MsiPackage Id="Sql2012ClrTypes"
                  DisplayName="Microsoft SQL Server 2012 CLR Types"
                  Cache="yes" Compressed="yes" ForcePerMachine="yes" Permanent="yes" Vital="yes"
                  SourceFile="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages\SqlClrTypes_x64\SQLSysClrTypes.msi"
                  InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND VersionNT64" />
    </PackageGroup>
    <PackageGroup Id="Sql2012ClrTypesx86">
      <MsiPackage Id="Sql2012ClrTypesx86"
                  DisplayName="Microsoft SQL Server 2012 CLR Types"
                  Cache="yes" Compressed="yes" ForcePerMachine="yes" Permanent="yes" Vital="yes"
                  SourceFile="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages\SqlClrTypes_x86\SQLSysClrTypes.msi"
                  InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND NOT VersionNT64" />
    </PackageGroup>    
  </Fragment>

0 个答案:

没有答案