1

我有一個Visual Studio安裝項目是非常基本的,除了一個修改。我有兩個不同的庫,我希望根據用戶的選擇進行安裝。我添加了一個複選框屏幕和條件的文件。他們可以安裝組件或兩個組件。這一切工作正常。自定義修復選項在MSI

現在爲我的要求。假設用戶安裝了MSI並僅選擇了一個組件。現在,他們需要從相同的MSI安裝第二個組件。如果他們再次運行MSI,我可以選擇修復或刪除。修復只會修復最初安裝的組件。我怎樣才能讓他們選擇通過再次顯示覆選框屏幕來安裝其他組件?

如果此功能在VS安裝項目中不可用,是否還有其他位置? WiX也許?

回答

1

我不認爲VS安裝項目支持這一點。從其他工具(如Installshield)創建的Wix或MSI可以支持此功能。處理這種情況的通常方法是創建單獨的功能併爲每個功能分配不同的組件。然後,如果MSI是使用WiX或其他工具構建的,那麼通過添加/刪除將會出現更改按鈕/選項,通過它您可以選擇修復,修改或卸載。修改,然後讓您更改您的功能選擇,而無需重新安裝。

+0

那就是我想的。我知道Visual Studio安裝項目的功能非常有限。 – Web 2009-08-20 13:40:44

1

您需要使用免費的MSI編輯器,如ORCA或SuperORCA。微軟用於在他們的服務包中提供ORCA工具。不知道他們是否繼續如此。 SuperORCA工具,你可以在http://www.pantaray.com/msi_super_orca.html找到。現在,當我有類似的任務來實現以下是我的方法。我用SuperOrca打開我的MSI文件。在修復/刪除MSI對話框屏幕中,爲「修改」添加一個單選按鈕 - 在SuperOrca - >在單選按鈕表格 - >添加條目修改單選按鈕

2]將BackButton的文本重命名爲「重新安裝」它的原始「返回」 - >在超級滾動 - >在控制表下 - >更改文本屬性重命名返回到重新安裝

3]選擇修復/刪除單選按鈕啓用完成按鈕並禁用重新安裝按鈕。在選擇修改單選按鈕啓用重新安裝按鈕並禁用完成按鈕 - 在SuperOrca - >在ControlCondition表 - >添加條目啓用/禁用「重新安裝」和「完成」按鈕爲每個修復/大小寫對話框的表單名稱是「MaintananceForm」)

4]現在來自SuperOrca工具ControlEvent表找出BackButton的conrol名稱,在我的例子中是「PreviousButton」。現在修改它的事件,參數&表中的條件條目。這些屬性的值必須與MSI文件的「歡迎」屏幕中的「下一步」按鈕屬性相同,這會重定向用戶以顯示要選擇的安裝選項。

注:這對我來說工作得很好。但是,當您再次選擇安裝選項並單擊下一步時,它不會強制安裝選定的選項。相反,它修復了MSI。我嘗試從Windows \ Installer文件夾中刪除條目,以便MSI不會選擇兌現安裝版本,但沒有運氣。如果有人正在回答如何強制MSI通過MSI安裝嚮導重新安裝,請告訴我。