2010-02-26 80 views
5

在Windows 7(即MSI 5.0)中,有一個名爲MSIFASTINSTALL的屬性可以提高安裝程序的性能。否則,您可以通過設置屬性DISABLEROLLBACK來關閉回滾選項。此屬性在MSI 5.0的早期版本中也可用。提高Wix msi安裝/卸載的性能

請分享您的知識以提高安裝體驗。另外,我無法找到正確的方法來提高卸載的性能。我們使用大量的文件/文件夾(超過70,000個)和35000等組件。它掛在文件成本計算過程中,不知道如何避免這種延遲。有時它掛超過2小時或3小時在XP或Vista計算機上卸載

編輯: 我做了一些黑客在我的荏苒具有巨大的文件集的文件夾中安裝並減少組件的大小就像克里斯托弗說。它大大提高了性能。是的,當然,我通過這個概念失去了MSI安裝程序模式,並且不推薦使用這種方法。但是,當我們想要實現這一點時,它是折衷的,並且我們的用戶真的不想在卸載/升級補丁程序時獲得文件版本的詳細信息。

回答

4

我有類似的情況,雖然文件的數量少一點,大約25K。這些文件中的大部分都是圖標,從一個版本到另一個版本從未更改。只有主要版本(每兩年一次)纔會對此區域進行一些更改。一個「快速&髒」的解決方案是壓縮這些圖標,並將該單個文件包含到安裝中(不是組件,只是與MSI並列的文件)。在安裝過程中,ZIP在後臺線程中解壓縮,RemoveFile表用於在卸載時刪除圖標。它比將這20k圖標作爲獨立組件安裝的速度更快,即使是具有許多文件的組件也是如此。一個好的和正確的解決方案是說服主要的應用程序開發人員將所有20k圖標放入20個zip壓縮文件中。現在,這20個zip文件被安裝爲常規MSI組件,並且該應用程序知道如何按需提取圖標並將其緩存。

我不建議你禁用回滾。儘管您可以節省相當多的安裝時間,但您將失去標準的保證回滾選項。

由於再次使用回滾功能,卸載需要比安裝更多的時間。按照我的理解,當您卸載時,MSI會首先創建每個文件的副本,然後卸載每個文件,並在成功時刪除每個備份的文件。因此,卸載時間大約是安裝時間的三倍。當我採用默認選項爲每個組件包含1個文件時,我遇到了同樣的問題。雖然建議,但如果您處理未決案件,您應該進行權衡。

希望這能爲你清除一些東西。

+0

嚴,我真的很感謝你的回答,它讓我更清楚這個概念。在我的情況下,回滾選項不是必需的,到目前爲止,我從來沒有遇到過這樣的情況,我需要回滾選項。無論如何,我會嘗試你所有人的建議。 – sankar 2010-02-27 07:46:49

+0

你能解釋一下如何卸載緩存的圖標文件嗎? – sky 2013-08-16 09:35:07

+0

本例中的緩存圖標文件是Windows Installer未安裝的文件,並且一無所知。因此,它可以是一組'RemoveFile' /'RemoveFolder'元素或自定義操作。我更喜歡第一個變體。 – 2013-08-16 10:48:40

2

提高應用程序性能的最佳選擇是減少文件和組件的數量。雖然您可以對MSI進行一些調整以提高性能,但過多的文件/組件數量是核心問題,並且會成爲您提高性能的門戶因素。爲什麼你需要安裝70k文件?

+0

感謝您的回覆。我會盡量減少組件因素以減少它。我需要運送如此大量的html文件和圖像作爲教程目的。 – sankar 2010-02-27 04:23:03

+2

我的典型安裝包含大約15,000個文件,這些是客戶端應用程序。在遊戲行業,安裝大量文件非常容易。在服務器端(特別是Web應用程序),很容易進入成千上萬。我曾經觀察到,僅僅在網絡客戶端添加Infragistrics增加了5500多個文件。 任何試圖收縮包裝web應用程序的人都可以很快找到高度複雜和大規模的安裝程序。按照微軟提供的「自我託管」MSDN網站的想法。 – 2010-02-27 15:00:54