什么
如何根据32位/ 64位PackageGroupRef
,MsiPackage
包含多个ExePackage
或Detect/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>