2012-07-13 159 views
4

我有一個應用程序在我正在實現自動更新。我有一個程序檢查的Web服務,是否需要升級它的下載並運行新的安裝程序(Visual Studio 2005安裝項目),然後程序重新啓動。一切都很好。升級應用程序時安裝到相同的路徑

但是,如何確保安裝程序中的安裝路徑默認爲用戶最初安裝該程序的路徑?

例如,如果用戶將其從程序文件更改爲C:\ SomeFolder,我將如何讓安裝程序檢測到並將其安裝路徑更改爲C:\ SomeFolder而不是程序文件?或者,如果用戶選擇將其安裝爲「當前用戶」而不是「所有用戶」?

+2

如果用戶選擇安裝的*當前用戶*只,其他用戶將必須安裝一個新的副本,因爲所有文件和註冊表項進入用戶的配置文件。這些設置對系統的其他用戶不可見,而不是* All Users *安裝。 – 2012-07-15 15:33:28

回答

12

- 右單擊安裝項目
- 查看
-Registry
- 在左側,展開HKEY_LOCAL_MACHINE和軟件,然後單擊製造商節點
- 在右側,右鍵單擊並添加註冊表字符串密鑰
- 註冊表項InstallDir
- 設置其值[TARGETDIR]

enter image description here

程序安裝,你可以看到INSTALLDIR REGKEY後包含的位置。您的更新程序可以使用相同的路徑。

enter image description here

通常「只我」和「所有人」之間唯一的區別是所創建的快捷方式的位置。您可以在安裝期間運行Process Monitor並親自查看。

編輯:

更新器應用程序可以使用INSTALLDIR的RegistryKey這些步驟。編號:How to: Use a Registry Launch Condition to Specify a Target Directory

- 右單擊更新
- 查看
- 啓動條件的安裝項目
- 添加搜索的RegistryKey
- 指定屬性爲SEARCHFORINSTALLDIR
- 指定的註冊表項來作爲SOFTWARE \ ManufacturerName
-Leave根指向HKLM
- 指定值作爲INSTALLDIR

enter image description here

- 添加啓動條件
- 指定條件爲SEARCHFORINSTALLDIR
-Leave InstallUrl和消息

enter image description here

- 右單擊安裝項目
- 查看
- 文件系統
- 選擇應用程序文件夾
- 按F4查看應用程序文件夾的屬性
- 指定的DefaultLocation爲[SEARCHFORINSTALLDIR]

enter image description here

現在,當您生成安裝包更新程序並運行它,它會給你安裝路徑的安裝目錄REGKEY值。

如果您希望禁用「文件夾文本框」和「瀏覽」按鈕以防止用戶更改更新程序安裝路徑,則可以使用Orca.exe。 Orca是一個數據庫表編輯器,用於創建和編輯Windows安裝程序包和合並模塊。然後,只要按照這個setup project, fixing the location of installed kit


另一種方法可以做到這一點是繼亞倫Stebner的How to modify the default install path in an MSI-based setup based on a registry value

+0

因此,當我運行它時,我會將目標導演傳遞給MSI?像Process.Start(「Updater.msi」,「TARGETDIR =」&InstallDir)?因爲這是我自己提出的解決方案,除了我使用應用程序的當前目錄。使用註冊表是更好的解決方案嗎? – John 2012-07-16 14:33:27

+0

嗨@John,請檢查我的編輯 - 最好做一個差異比較和雙重檢查你沒有''「[TARGETDIR] \ MyApp.exe」「'作爲它現在的[TARGETDIR]。 – 2012-07-17 04:02:00

+0

哇...非常徹底。謝謝! – John 2012-07-17 18:26:49

相關問題