0

我正在尝试将 SQL Serve CE 与我的应用程序引导包一起安装。

这是我的代码:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
   xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Bootstrapper" Version="1.0.0.0" Manufacturer="Billy"
        UpgradeCode="4a2346e9-a126-43fb-a352-05a95623e0d4">
  <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
  <Chain>

    <PackageGroupRef Id="Netfx4Full"/>
    <PackageGroupRef Id="SQLExpressCE"/>

    <!-- Install Application -->
    <MsiPackage Id="MyApplication" SourceFile="$(var.Installer.TargetPath)"/>

  </Chain>
</Bundle>

<Fragment>
  <!-- Check for .NET 4.0 -->
  <util:RegistrySearch Root="HKLM"
                       Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                       Value="Version"
                       Variable="Netfx4FullVersion" />
  <util:RegistrySearch Root="HKLM"
                       Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                       Value="Version"
                       Variable="Netfx4x64FullVersion"
                       Win64="yes" />

  <!-- Install .NEt 4.0 -->
  <PackageGroup Id="Netfx4Full">
    <ExePackage Id="Netfx4Full"
                DisplayName="Microsoft .NET Framework 4.0"
                Compressed="no"
                Cache="yes"
                PerMachine="yes"
                Permanent="yes"
                Protocol="netfx4"
                Vital="yes"
                SourceFile=".\prerequisites\dotNetFx40_Full_x86_x64.exe"
                InstallCommand="/passive /norestart"
                DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x64FullVersion)" />
  </PackageGroup>

  <!-- Install SQL Server CE -->
  <PackageGroup Id="SQLExpressCE">
    <MsiPackage
              Cache="no"
              Compressed="no"
              ForcePerMachine="yes"
              Permanent="yes"
              Vital="yes"
              SourceFile=".\prerequisites\SSCERuntime-ENU.msi"
              InstallCondition="NOT VersionNT64 AND SqlInstance AND SqlServerInstalled AND SQLServer2008R2Installed" />
    <MsiPackage
              Cache="no"
              Compressed="no"
              ForcePerMachine="yes"
              Permanent="yes"
              Vital="yes"
              SourceFile=".\prerequisites\SSCERuntime-ENU-x64.msi"
              InstallCondition="VersionNT64 AND NOT SqlInstance AND SqlServerInstalled AND SQLServer2008R2Installed" />
  </PackageGroup>

</Fragment>
</Wix>

但是 .NET 4.0 安装得很好,我面临的唯一问题SQL Server CE是没有安装包。会有什么问题?

4

1 回答 1

0

两个 SQL 包的安装条件永远不会评估为真。

首先,没有 SqlInstance、SqlServerInstalled 或 SQLServer2008R2Installed Burn 内置变量(请参阅文档以获取可用变量的完整列表)。您需要手动创建它们,就像对 Netfx4FullVersion 和 Netfx4x64FullVersion 所做的那样。

其次,条件表达式本身是错误的。只有已经安装了 SQL Server,它们才会通过。

我没有安装 SQL Server,所以我不确定您应该执行的确切搜索,但它们看起来像:

<util:RegistrySearch Root="HKLM"
                 Key="SYSTEM\CurrentControlSet\services\MSSQLSERVER"
                 Result="exists"
                 Variable="SQLServerInstalled" />

<util:RegistrySearch Root="HKLM"
                     Key="SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER"
                     Result="exists"
                     Variable="SQLServer2008R2Installed" />

然后作为您的安装条件使用大约这个:

InstallCondition="VersionNT64 AND NOT SqlServerInstalled AND NOT SQLServer2008R2Installed"

您还可以参考原始 Wix 邮件列表中的此消息以获取更完整的示例:安装 SQL SERVER 2008 R2 Express。不幸的是,由于声誉低下,我无法发布更多链接。

于 2013-11-14T14:28:38.240 回答