使用SQL Server Express 2012的Wix my Bootstrap有什么问题
我有一个引导项目,需要检测是否安装了SQL Server。如果已安装,则跳过安装过程。如果不是,则应安装SQL Express 2012。exe安装程序编译得很好,但是,当我测试安装程序时,我总是遇到这个错误,我找不到任何错误的原因。我测试的机器安装了SQL server,但它仍然检测不到安装了SQL。然后继续安装,但出现错误0x858c0014:进程返回错误: 无法执行EXE包。未能配置每台计算机的EXE程序包 这是我的wxs文件:使用SQL Server Express 2012的Wix my Bootstrap有什么问题,wix,Wix,我有一个引导项目,需要检测是否安装了SQL Server。如果已安装,则跳过安装过程。如果不是,则应安装SQL Express 2012。exe安装程序编译得很好,但是,当我测试安装程序时,我总是遇到这个错误,我找不到任何错误的原因。我测试的机器安装了SQL server,但它仍然检测不到安装了SQL。然后继续安装,但出现错误0x858c0014:进程返回错误: 无法执行EXE包。未能配置每台计算机的EXE程序包 这是我的wxs文件: <?xml version="1.0" encodi
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension">
<?define InstanceName = "SQLEXPRESS" ?>
<Bundle Name="EasyLobby11 Database Setup" Version="1.0.0.0" Manufacturer="Microsoft" UpgradeCode="4f09f7d9-f894-42b2-a865-6ae460a09c7e">
<BootstrapperApplicationRef
Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<PackageGroupRef Id="Sql2012Express"/>
</Chain>
</Bundle>
<Fragment>
<util:RegistrySearch
Id="SqlInstanceKeyFound"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
Value="InstanceName"
Result="exists"
Variable="SqlInstanceKeyFound" />
<util:RegistrySearch
Id="SqlInstanceKey"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
Value="InstanceName"
Variable="SqlInstanceKey"
After="SqlInstanceKeyFound"
Condition="SqlInstanceKeyFound" />
<util:RegistrySearch
Id="SqlInstanceFound"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\[SqlInstanceKey]"
Result="exists"
Variable="SqlInstanceFound"
After="SqlInstanceKey"
Condition="SqlInstanceKeyFound" />
<util:RegistrySearch
Id="SqlVersion"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\[SqlInstanceKey]\Setup"
Value="Version"
Variable="SqlVersion"
After="SqlInstanceKey"
Condition="SqlInstanceFound" />
<PackageGroup Id="Sql2012Express">
<ExePackage
Id="Sql2012Express"
DisplayName="Installing SQL Server Express 2012"
SourceFile="SQLEXPR_x86_ENU.exe"
Name="SQLEXPR_x86_ENU.exe"
DownloadUrl="http://download.microsoft.com/download/5/2/9/529FEF7B-2EFB-439E-A2D1- A1533227CD69/SQLEXPR_x86_ENU.exe "
Compressed="no"
PerMachine="yes"
Cache ="yes"
InstallCondition="(Not SqlInstanceKeyFound) AND (NOT SqlInstanceFound)"
DetectCondition= "SqlInstanceFound"
Vital="yes"
Permanent="yes"
InstallCommand="/ACTION=Install /INSTANCENAME=$(var.InstanceName) /FEATURES=SQL /SECURITYMODE=SQL [SqlVariable] /TCPENABLED=1 /SQLSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE'" /SQLSVCSTARTUPTYPE=Manual /SQLSYSADMINACCOUNTS=BUILTIN\Administrators /ADDCURRENTUSERASSQLADMIN=FALSE /Q /HIDECONSOLE /SkipRules=RebootRequiredCheck /IAcceptSQLServerLicenseTerms"
UninstallCommand="/Action=Uninstall /INSTANCENAME=InstanceName /FEATURES=SQL /Q /HIDECONSOLE"
RepairCommand="/ACTION=Repair /INSTANCENAME=InstanceName /Q /HIDECONSOLE">
<ExitCode Value ="3010" Behavior="forceReboot" />
<dep:Provides DisplayName="Net2 SQL Server 2012 Express" Key="SQLServer2012Express,$(var.InstanceName)" Version="11.0.3000.0" />
</ExePackage>
<ExePackage Id="Sql2012ExpressUpgrade"
DisplayName="SQL Server 2012 Express Upgrade"
Cache="no"
Compressed="no"
PerMachine="yes"
Permanent="yes"
Vital="yes"
Name="SQLEXPR_x86_ENU.exe"
SourceFile="SQLEXPR_x86_ENU.exe"
DownloadUrl="http://download.microsoft.com/download/5/2/9/529FEF7B-2EFB-439E-A2D1-A1533227CD69/SQLEXPR_x86_ENU.exe "
InstallCondition="(Not SqlInstanceKeyFound) AND (NOT SqlInstanceFound)"
InstallCommand="/ACTION=Upgrade /INSTANCENAME=InstanceName /Q /HIDECONSOLE /SkipRules=RebootRequiredCheck /IAcceptSQLServerLicenseTerms"
DetectCondition="NOT (SqlInstanceFound AND (SqlVersion < v11.0.0.0))">
<ExitCode Value ="3010" Behavior="forceReboot" />
</ExePackage>
<ExePackage Id="Sql2012ExpressEditionUpgrade"
DisplayName="SQL Server 2012 SP1 Express Patch"
Cache="no"
Compressed="no"
PerMachine="yes"
Permanent="yes"
Vital="yes"
Name="SQLEXPR_x86_ENU.exe"
SourceFile="SQLEXPR_x86_ENU.exe"
DownloadUrl="http://download.microsoft.com/download/5/2/9/529FEF7B-2EFB-439E-A2D1-A1533227CD69/SQLEXPR_x86_ENU.exe "
InstallCondition="(Not SqlInstanceKeyFound) AND (NOT SqlInstanceFound)"
InstallCommand="/ACTION=Patch /INSTANCENAME=$(var.InstanceName) /Q /HIDECONSOLE /SkipRules=RebootRequiredCheck /IAcceptSQLServerLicenseTerms"
DetectCondition="NOT (SqlInstanceFound AND (SqlVersion > v11.0.0.0) AND (SqlVersion < v11.0.3000.0))">
<ExitCode Value ="3010" Behavior="forceReboot" />
</ExePackage>
</PackageGroup>
</Fragment>
</Wix>
配置SQL是一项相当复杂的工作
我最近刚开始为我的项目进行Wix打包。
实际上,我从您的配置开始,对配置做了一些调整。
我还处理基于系统类型的x86和x64打包
如果它们与您无关,您可以省略其中任何一个。
因此,我正在发布配置的工作副本,以便它可以帮助您
<Fragment>
<?define InstanceName = "SQLEXPRESS" ?>
<util:RegistrySearch Id="SQL2012x64InstanceExists"
Variable="SQL2012x64InstanceExists"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
Value="$(var.InstanceName)"
Win64="yes"
Result="exists"/>
<util:RegistrySearch Id="SQL2012x64InstanceKey"
Variable="SQL2012x64InstanceKey"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
Value="$(var.InstanceName)"
Win64="yes"
After="SQL2012x64InstanceExists"
Condition="SQL2012x64InstanceExists" />
<util:RegistrySearch Id="SQL2012x64InstanceInstalled"
Variable="SQL2012x64InstanceInstalled"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\[SQL2012x64InstanceKey]"
Result="exists"
Win64="yes"
After="SQL2012x64InstanceKey"
Condition="SQL2012x64InstanceExists" />
<util:RegistrySearch Id="SQLx64Version"
Variable="SQLx64Version"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\[SQL2012x64InstanceKey]\Setup"
Value="Version"
Win64="yes"
After="SQL2012x64InstanceKey"
Condition="SQL2012x64InstanceInstalled" />
<util:RegistrySearch Id="SQL2012x86InstanceExists"
Variable="SQL2012x86InstanceExists"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
Value="$(var.InstanceName)"
Win64="no"
Result="exists"/>
<util:RegistrySearch Id="SQL2012x86InstanceKey"
Variable="SQL2012x86InstanceKey"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
Value="$(var.InstanceName)"
Win64="no"
After="SQL2012x86InstanceExists"
Condition="SQL2012x86InstanceExists" />
<util:RegistrySearch Id="SQL2012x86InstanceInstalled"
Variable="SQL2012x86InstanceInstalled"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\[SQL2012x86InstanceKey]"
Result="exists"
Win64="no"
After="SQL2012x86InstanceKey"
Condition="SQL2012x86InstanceExists" />
<util:RegistrySearch Id="SQLx86Version"
Variable="SQLx86Version"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\[SQL2012x86InstanceKey]\Setup"
Value="Version"
Win64="no"
After="SQL2012x86InstanceKey"
Condition="SQL2012x86InstanceInstalled" />
<PackageGroup Id="SQLServer2012Express">
<ExePackage Id="SQL2012Expressx64"
InstallCondition="VersionNT64 AND NOT SQL2012x64InstanceInstalled"
SourceFile="$(var.MyDir)\SQLEXPR_x64_ENU.exe"
DisplayName="Installing Microsoft® SQL Server® 2012 - Express Edition..."
InstallCommand="/ACTION=Install /INSTANCENAME=SQLEXPRESS /FEATURES=SQLENGINE /Q /HIDECONSOLE /SkipRules=RebootRequiredCheck /IAcceptSQLServerLicenseTerms /SQLSVCSTARTUPTYPE=Automatic /SQLSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" /AGTSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" /ASSYSADMINACCOUNTS=BUILTIN\Administrators /SQLSYSADMINACCOUNTS=BUILTIN\Administrators /BROWSERSVCSTARTUPTYPE=Disabled /ADDCURRENTUSERASSQLADMIN=true /TCPENABLED=1"
Permanent="yes"/>
<ExePackage Id="SQL2012Updatex64"
InstallCondition="VersionNT64 AND (SQL2012x64InstanceInstalled AND SQLx64Version < v11.0.0.0)"
DisplayName="Upgrading SQL Server to SQL Server Express 2012..."
InstallCommand='/IACCEPTSQLSERVERLICENSETERMS /HIDECONSOLE /ACTION=Upgrade /QUIET=True /INSTANCENAME=SQLEXPRESS /SkipRules=RebootRequiredCheck'
SourceFile="$(var.MyDir)\SQLEXPR_x64_ENU.exe"
Permanent="yes"/>
<ExePackage Id="SQL2012Expressx86"
InstallCondition="NOT VersionNT64 AND NOT SQL2012x86InstanceInstalled"
SourceFile="$(var.MyDir)\SQLEXPR_x86_ENU.exe"
DisplayName="Installing Microsoft® SQL Server® 2012 - Express Edition..."
InstallCommand="/ACTION=Install /INSTANCENAME=SQLEXPRESS /FEATURES=SQLENGINE /Q /HIDECONSOLE /SkipRules=RebootRequiredCheck /IAcceptSQLServerLicenseTerms /SQLSVCSTARTUPTYPE=Automatic /SQLSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" /AGTSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" /ASSYSADMINACCOUNTS=BUILTIN\Administrators /SQLSYSADMINACCOUNTS=BUILTIN\Administrators /BROWSERSVCSTARTUPTYPE=Disabled /ADDCURRENTUSERASSQLADMIN=true /TCPENABLED=1"
Permanent="yes"/>
<ExePackage Id="SQL2012Updatex86"
InstallCondition="NOT VersionNT64 AND (SQL2012x86InstanceInstalled AND SQLx86Version < v11.0.0.0)"
DisplayName="Upgrading SQL Server to SQL Server Express 2012..."
InstallCommand='/IACCEPTSQLSERVERLICENSETERMS /HIDECONSOLE /ACTION=Upgrade /QUIET=True /INSTANCENAME=SQLEXPRESS /SkipRules=RebootRequiredCheck'
SourceFile="$(var.MyDir)\SQLEXPR_x86_ENU.exe"
Permanent="yes"/>
</PackageGroup>
希望对你有帮助
--纳加·斯雷尼瓦斯·古普塔五世