2009-06-29 66 views
2

我正在使用VS2005。鏈接到msi的應用程序

使用.msi安裝應用程序之後。每次加載該應用程序時,都會嘗試查找設置並在文件被修改後再次自行安裝。如果我刪除.msi文件,那麼應用程序甚至無法加載。

有沒有辦法刪除應用程序和MSI之間的這種聯繫?

我確定它只是一個複選框。

謝謝!

回答

1

您正在安裝Advertised Shortcut,這意味着當您雙擊運行應用程序的快捷方式時,Windows Installer會檢查以確保應安裝所有文件,註冊表項等。

由於某種原因,Windows安裝程序檢測到您的安裝已變得「損壞」,這可能意味着文件已更改,已被刪除,註冊表項丟失或其他原因。

如果您安裝非廣告的快捷方式,您將停止修復發生。但更好的解決方案是嘗試並找出爲什麼它試圖修復您的安裝。一般而言,這表明您的應用程序或安裝設計存在問題 - 組件中的任何「密鑰文件」都不允許默認更改,並且如果修改它將被「修復」。您可能在Visual Studio中沒有任何其他選項,因爲它非常有限。

我強烈建議拿起The Definitive Guide to Windows Installer的副本,它清楚地解釋了所有的Windows Installer概念,使用VS2005並展示瞭如何通過使用Orca編輯MSI來解決一些限制。

編輯:(擡起頭來的書你......),你可能需要添加DISABLEADVTSHORTCUTSProperty表的1值。我不使用VS,所以我不能說是否有複選框。

您也許可以將MSI「緩存」到Windows文件夾中,這意味着即使原始MSI被刪除,您仍然可以修復。再次,不確定如何用VS做到這一點。

+0

感謝您的信息! 在這裏,他們有一個內部升級系統,當應用程序升級時會導致這個問題。 我現在正在運行msi使用:msiexec /我Setup.msi DISABLEADVTSHORTCUTS = 1 – 2009-06-30 13:41:59

1

有一點要注意的是,微星是發佈和部署機制 - 這是走向何處安裝MSI,然後更改安裝文件之後交互測試面向 - 就像你在開發過程中這樣做。

整個技術旨在嚴格安裝什麼在MSI文件保持展開配置並保護其免受手動或意外的變化。對於手動更改作爲測試或開發的一部分執行的系統而言,這可能非常煩人,但MSI文件實際上只是「完成其工作」。

至於薩沙說,有幾種方法可以禁用或解決此問題:

  • 使用非廣告(常規)快速鍵
  • 將DISABLEADVTSHORTCUTS財產
  • 啓動EXE文件的快捷方式直接指向(這完全繞過MSI - 如果原始MSI丟失,可用於啓動應用程序)

然後有幾個更高級的opti這並不是真正的建議。例如,您可以識別可能需要手動調整的所有文件,並禁用專門針對這些文件的修復行爲。這通常通過將空白GUID設置爲該文件的主機組件來完成,或者設置組件屬性「如果存在關鍵路徑則永不覆蓋」(msidbComponentAttributesNeverOverwrite)。還有其他幾個先進的調整,但沒有什麼是真正值得推薦的。

另請注意,它不只是廣告快捷方式,可以觸發修復。 調用廣告COM服務器廣告文件擴展名也可能會觸發自我修復。

如果遇到MSI不斷要求提供源代碼的情況,只需從添加/刪除程序中卸載MSI即可擺脫系統上的程序註冊。然後你可以用新建的MSI重新安裝它。

+0

好點重新:COM服務器,我忘了那些。哦,他們過去給我造成的痛苦; – saschabeaumont 2009-07-02 00:04:28

相關問題