2013-03-07 67 views
0

性質[DATABASE_NAME][SERVER_NAME]通過在安裝用戶定義的,它似乎像,除非它們被硬編碼然後做失敗:DROP DATABASE

<Component Id="Component.Sql.Database" Guid="*"> 
    <sql:SqlDatabase 
     Id="Sql.Database" 
     Database="[DATABASE_NAME]" 
     Server="[SERVER_NAME]" 
     CreateOnInstall="yes" 
     DropOnUninstall="yes" 
     ContinueOnError="no" 
     ConfirmOverwrite="yes" /> 
</Component> 

是應該下降的分貝位爲DropOnUninstall="yes"

我發現在WiX的用戶羣提示如下的方法來對卸載刪除了數據庫後:

<Component Id="Component.Sql.DropDatabase" Guid="146CD264-1F6D-4E19-BFCC-E544F5BD2D6C"> 
    <sql:SqlString 
     Id="Sql.DropDatabase" 
     SqlDb="Sql.Master" 
     Sequence="1000" 
     ExecuteOnInstall="no" 
     ExecuteOnUninstall="yes" 
     ExecuteOnReinstall="no" 
     ContinueOnError="no" 
     SQL="DROP DATABASE [\[][DATABASE_NAME]\[]]"/> 
    </Component> 

    <Fragment> 
    <sql:SqlDatabase Id="Sql.Master" Database="master" Server="[SERVER_NAME]" /> 
    </Fragment> 

這個想法是在卸載DROP DATABASE ...命令時在服務器上的master數據庫上執行。但是,這個SQL語句永遠不會在服務器上執行。

MSIEXEC日誌似乎沒有提供任何信息,我也沒有得到任何錯誤。

有沒有人成功地實現了這個(在我寫一個自定義操作來做到這一點之前)?

我試着將數據庫名稱和服務器複製到註冊表來緩存它們,但是這並沒有幫助。

+0

你安裝,例如在任何地方緩存DATABASE_NAME和SERVER_NAME財產註冊表?您可能需要擴展卸載程序以在卸載期間從本地狀態重新讀取此屬性,否則該值將僅爲null或來自Property表的默認值,並且不起作用。 – 2013-03-11 12:50:39

+0

我試着在註冊表中緩存它們。這似乎沒有效果。 – briantyler 2013-03-11 13:12:33

回答

0
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" <!-- Need to import this --> 
    xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension"><!-- Need to import this --> 


<sql:SqlDatabase Id="SqlDatabase" 
      Database="TestDatabase" 
      Server="[SQLSERVER]" 
      DropOnUninstall="yes" 
      User="SQLUser">   

這肯定會工作.....