wix
  • wix3.8
  • 2014-11-24 54 views 0 likes 
    0

    我正在使用WIX創建用於創建數據庫的安裝程序。但是我無法找到在升級期間運行udate腳本的方法。在升級過程中使用WIX安裝程序在現有數據庫上運行更新sql腳本

    代碼創建DB

    <Directory Id="DFDB" Name="DealFoundryDataBase" FileSource="$(var.SolutionDir)DealFoundrySetup/DataBaseScripts"> 
          <Component Id='SqlComponent_Files' Guid='{07DB58E6-5AFC-4BB0-84EC-C5EC6B0E5CA7}' KeyPath='yes'> 
          <File Id="CreateTable_sql" Name="CreateTable.sql"/> 
          <File Id="InsertStatements_sql" Name="InsertStatements.sql"/> 
          <File Id="DFCoreScript_sql" Name="DFCoreScript.sql"/> 
          </Component> 
    
          <Component Id='SqlComponent' Guid='{C5412828-84FB-4CC5-AC71-AC246B9D09E8}' KeyPath='yes'> 
           <Condition><![CDATA[NOT OLDER_VERSION_FOUND]]> </Condition> 
           <sql:SqlDatabase Id='SqlDatabase' Database='[PRO_DFDATABASE_NAME]' User='SQLUser' Server='[PRO_DFDATABASE_SOURCE]' 
           CreateOnInstall='yes' DropOnUninstall='yes' ContinueOnError='yes'> 
           <sql:SqlScript Id='CreateTable' BinaryKey='CreateTable' ExecuteOnInstall='yes' /> 
           <!--<sql:SqlScript Id='InsertStatements' BinaryKey='InsertStatements' ExecuteOnInstall='yes'/>--> 
           </sql:SqlDatabase> 
          </Component> 
    
    
    
         </Directory> 
    
    <Binary Id ='CreateTable' SourceFile='$(var.SolutionDir)DealFoundrySetup/DataBaseScripts/DFCoreScript.sql'/> 
        <Binary Id ='InsertStatements' SourceFile='$(var.SolutionDir)DealFoundrySetup/DataBaseScripts/InsertStatements.sql'/> 
        <Binary Id ='MasterData' SourceFile='$(var.SolutionDir)DealFoundrySetup/DataBaseScripts/MasterData.sql'/> 
        <util:User Id='SQLUser' Name='[PRO_DFDATABASE_USERID]' Password='[PRO_DFDATABASE_PASSWORD]' /> 
    

    上面的代碼行工作正常進行creting數據庫上安裝,但我要對現有的DB PLZ幫我升級過程中運行更新腳本。 在此先感謝。

    回答

    0

    啊...版本控制。玩得很盡興。

    首先,確保您已在安裝程序中設置了您的標籤。這是我平時做(這是相當複雜的,因爲你可能要檢查的特定版本做不同的升級腳本):

    <Upgrade Id="{YOUR GUID HERE}" > <!--never change me--> 
        <UpgradeVersion OnlyDetect="yes" Minimum="$(var.ProductVersion)" Property="NEWERPRODUCTFOUND" IncludeMinimum="no" /> 
        <UpgradeVersion OnlyDetect="no" Minimum="5.0.0" Maximum="$(var.ProductVersion)" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" RemoveFeatures="All" /> 
        <UpgradeVersion OnlyDetect="yes" Maximum="5.0.0 " Property="VERYOLDVERSIONFOUND" IncludeMaximum="no" /> 
    </Upgrade> 
    

    你可以有許多定義,只要你想,這些「版本」的,也許每個人都會爲您的數據庫運行不同的升級腳本。他們將設置此列表中定義的屬性。

    其次,維克斯定義「安裝」一個衆所周知的值,當你正在做的卸載即只使用或升級: http://msdn.microsoft.com/library/aa369297.aspx

    所以,如果你想只運行 ONLY同時進行升級,你應該使用這樣的:如果你想運行它,如果你正在做的升級或安裝

    <Condition><![CDATA[NOT Installed OR NOT VERYOLDVERSIONFOUND]]> </Condition> 
    

    ,它應該是這樣的:

    <Condition><![CDATA[(NOT Installed AND Installed) OR (NOT VERYOLDVERSIONFOUND AND VERYOLDVERSIONFOUND]]> </Condition> 
    

    這與沒有條件相同,因爲它永遠是真的。

    相關問題