2013-04-17 62 views
4

我有一個MSI軟件包除了安裝程序組件外,還安裝了一個大型數據庫文件。該文件不包含在軟件包內,但在msi文件旁邊提供。到目前爲止,這個設置沒有問題。現在數據庫增長到大於2 GB的大小。這會在安裝時引發錯誤(在Win7機器上測試過):安裝超大文件

「寫入文件時出錯:[數據庫文件的路徑]。檢查您是否具有該文件夾的權限。

搜索互聯網顯示,Windows Installer似乎有一個大於2GB的文件的問題。作爲解決方案,建議不要將該文件包含在MSI中,而是將其與msi一起未壓縮。這就是我們已經在做的事情。因此建議的解決方案不起作用。

是否有任何方式使用Windows Installer安裝大於2 GB的文件?這個限制似乎對我有點過時了。

P.S:如果有幫助,安裝使用建立WIX但任何暗示什麼在MSI數據庫本身是值得讚賞

+0

另一種選擇是使用腳本生成模式,然後使用bcp導入數據。我爲我的一個安裝程序執行此操作,生成的msi對於在SqlServer上部署的數據庫大約爲60MB,大小約爲1GB。無可否認,構建需要約5小時的時間,將壓縮機壓縮設置爲高,但如果您使用mszip,則速度會快得多,但不會太小(我們只是每晚構建,所以這不是問題)。將涉及一小部分工作來遷移,但它會解決您所碰到的2GB限制(除非您有1個2GB的表!) –

回答

3

Windows安裝程序確實有它的一些舊的限制修改。 FileSize的表格定義具有2GB的限制,Windows Installer使用CAB文件來壓縮具有4GB限制的數據(儘管您可以通過使用cab分割來解決該問題)。

我敢肯定你已經在Windows Installer中達到了真正的最大值,但是如果你有更新版本的WiX工具集(v3.7 +),你可以看到cab-splitting是否適合你。要嘗試更換任何Media元素你可能有:

<MediaTemplate MaximumCabinetSizeForLargeFileSplitting='200' /> 

,將創造多達200MB櫥櫃所必需的包含你的內容。剩下的唯一問題是Windows安裝程序在大於2GB時是否理解該文件。祝你好運!

+0

感謝您的回答。我試圖玩這個新功能,但我遇到了一些其他問題。我的軟件包包含來自第三方公司的合併模塊。 標籤需要一個DiskID屬性。在編譯時,我收到錯誤「LGHT0357:應該只創建一個Media和MediaTemplate表。」互聯網搜索沒有任何幫助。因此,我甚至沒有理解數據庫可能打包的地方。從軟件包中刪除合併模塊會導致與使用的舊配置相同的錯誤:要打包的文件太大。 – Hugo

+0

很可能Merge模塊不被'MediaTemplate'支持。對於WiX工具集將是一個很好的增強。 –