2012-08-23 88 views
0

我構建一個運行安裝文件的應用程序,並在安裝完成後自動修補它。C#找到應用程序的安裝目錄

我使用此註冊表項HLKM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall但某些應用程序沒有此密鑰。

我如何找到安裝目錄?

+1

您正在嘗試修補第三方應用程序嗎?沒有要求任何記錄由安裝位置組成。也就是說,如果它不添加卸載密鑰,這是一個非常糟糕的應用程序。 –

+0

是的,我嘗試修補第三方應用程序,其中一半以上沒有註冊表項來保存安裝目錄! – sma6871

回答

1

如果您正在使用VS安裝項目爲您的安裝,那麼你可以利用Custom Actions爲一種獲取有關安裝環境信息的方法。

就這樣說,我覺得可能有更好的方法來實現你的目標,並且有更多的信息,我想我們可以幫你達到目標。

編輯

我想我跟着你了。如果我這樣做,我會首先硬編碼我打包的每個第三方應用程序的默認安裝位置。如果用戶更改默認值,則不會找到它,然後提示他們輸入新的路徑。請記住,您可以使用Environment.SpecialFolder來獲取程序文件(或其他系統文件夾)的實際位置,而不是假定C:\。對於大概99.9%的安裝和用戶,該方法將在沒有任何額外用戶交互的情況下完成。

另一種選擇是爲那些相反的第三方二進制文件創建自己的安裝程序。當然,你也必須保持更新,但聽起來你已經在使用你的補丁做類似的事情了。

+0

有多個安裝文件可由各種安裝程序構建器構建 – sma6871

0

您可以使用systemapplication類。

Application.ExecutablePath 

例如,你可以得到包含你可執行文件的目錄的完整名稱如下:

string executableName = Application.ExecutablePath; 
FileInfo executableFileInfo = new FileInfo(executableName); 
string executableDirectoryName = executableFileInfo.DirectoryName; 
相關問題