2013-05-03 44 views
1

我想調用自定義操作以針對給定數據庫執行.sql文件集。我能夠做到這一點使用自定義操作代碼(在C#中),如果我硬編碼我的SQL文件可用的文件夾的路徑。WiX安裝程序 - 如何從與.msi位於相同位置的文件夾讀取sql文件內容

我想把這個sql腳本文件夾放在我的.msi所在的相同位置。如何在安裝期間從自定義操作訪問/查找此文件夾路徑?

我正在使用Wix 3.6。 我正在使用dot net bootstrapper來創建我的setup.exe。

+0

你試過SQL擴展嗎?您可以將Sql腳本作爲二進制流傳遞。更多詳情:http://wix.sourceforge.net/manual-wix2/wix_xsd_sqlscript.htm – Vinoth 2013-05-03 09:00:40

回答

2

WiX工具集中的SqlScript元素可能會執行很多你所要求的操作。它實際上將腳本作爲Binary流存儲在MSI中,而不是依賴與MSI相關的文件。這是一個重要的設計決策,因爲許多情況下您的MSI將執行但不能訪問原始源媒體,因此無法找到腳本。例如,修復操作可以從緩存的MSI包中啓動。如果您的自定義操作要修復,則需要原始媒體才能獲取腳本。這不是很理想。

如果你真的想要走這條路,那麼你會想看看使用SourceDir目錄來獲得你的MSI的「源位置」。如上所述,在這些情況下,源媒體可能並不總是可用的,並且SourceDir將是空白的。要強制設置SourceDir,您需要添加一個ResolveFiles操作。安排ResolveFiles時要小心,因爲那需要原始媒體。如果找不到,則會提示用戶再次插入。

ResolveFiles排序不好的最壞情況是當用戶嘗試卸載其產品時從源提示。用戶正試圖獲得您的機器應用程序,除非他們能夠找到它們最初安裝的方式,否則它們將被阻止。很好的方式讓你的用戶感到不安。 :)

我強烈建議您查看SqlScript元素代替或源代碼,如果你真的感興趣。它位於src \ ca \ serverca的WiX工具集中(在下面的名稱中查找帶有「sql」的文件)。

相關問題