2014-04-19 107 views
0

我有這個引導項目需要檢測,如果SQL Server安裝或不。如果已安裝,則跳過安裝。如果不是,它應該安裝SQL Express 2012.然而,當我測試安裝程序時,exe安裝程序編譯得很好,我總是遇到這個錯誤,我找不到任何錯誤的原因。我正在測試的機器安裝了SQL服務器,但它仍然檢測不到安裝的SQL。然後繼續安裝,但得到錯誤0x858c0014:進程返回的錯誤: 無法執行EXE程序包。無法配置每臺機器的EXE軟件包。什麼是錯誤的Wix我的Bootstrap與SQL Server Express 2012

這裏是我的WXS文件:

<?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=&quot;NT AUTHORITY\NETWORK SERVICE'&quot; /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 &lt; 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 &gt; v11.0.0.0) AND (SqlVersion &lt; v11.0.3000.0))"> 
    <ExitCode Value ="3010" Behavior="forceReboot" /> 
    </ExePackage> 
</PackageGroup> 
</Fragment> 
</Wix> 

回答

0

配置SQL是一個相當複雜的工作。

我剛剛爲我的項目開始研究Wix Packaging。 我真的把你的配置開始,並對配置做了一些調整。 我也在處理基於系統類型的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=&quot;NT AUTHORITY\NETWORK SERVICE&quot; /AGTSVCACCOUNT=&quot;NT AUTHORITY\NETWORK SERVICE&quot; /ASSYSADMINACCOUNTS=BUILTIN\Administrators /SQLSYSADMINACCOUNTS=BUILTIN\Administrators /BROWSERSVCSTARTUPTYPE=Disabled /ADDCURRENTUSERASSQLADMIN=true /TCPENABLED=1" 
      Permanent="yes"/> 
    <ExePackage Id="SQL2012Updatex64" 
       InstallCondition="VersionNT64 AND (SQL2012x64InstanceInstalled AND SQLx64Version &lt; 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=&quot;NT AUTHORITY\NETWORK SERVICE&quot; /AGTSVCACCOUNT=&quot;NT AUTHORITY\NETWORK SERVICE&quot; /ASSYSADMINACCOUNTS=BUILTIN\Administrators /SQLSYSADMINACCOUNTS=BUILTIN\Administrators /BROWSERSVCSTARTUPTYPE=Disabled /ADDCURRENTUSERASSQLADMIN=true /TCPENABLED=1" 
       Permanent="yes"/> 
    <ExePackage Id="SQL2012Updatex86" 
       InstallCondition="NOT VersionNT64 AND (SQL2012x86InstanceInstalled AND SQLx86Version &lt; 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> 

希望它可以幫助你。

- Naga Sreenivas Gupta V

相關問題