2016-05-13 52 views
0

我正在開發一個Windows應用程序(使用vb.net),可以安裝各種版本的運行時,如vC++,Direct X,.net框架等一臺PC。我的程序必須能夠在後臺一次運行一個運行時安裝程序(msi & exe),並執行以下操作:如何捕捉安裝進度和vb.net中的安裝程序的返回值

1.檢查天氣運行時是否已安裝(以前)。
2.在程序主窗體的進度條中顯示安裝進度。
3.最後從安裝程序獲取返回碼(退出代碼)以指示安裝是否成功。

執行上述任務需要哪些代碼?

另外我想知道安裝程序可以返回的所有可能的返回代碼(值)。

回答

2

所有這些redistributable可能有不同的命令行選項,所以它不可能是一切的一個答案。

目前尚不清楚如何獲得安裝進度。這幾乎肯定不可能或非常困難。你問的是如何運行一個程序來「竊取」其他一些程序的輸出,而且在很多情況下這將是Windows Installer。如果我有一個啓動Windows Form程序的程序,那麼你就會問「如何獲取該程序的內容並竊取輸出消息」。這不是一個安裝問題,它是一個Windows消息/ Windows消息循環問題。

這些設置使用的檢測方法在內部編碼(或配置爲內部數據),因此您還要問所有這些程序中的代碼是如何檢測未安裝依賴項的(在多個操作系統版本和32位和64位),其中一些可能在網絡上可用,但它不太可能適用於每個可再發行組件。

您可能也有EULA的問題。有些可再發行組件需要EULA才能被接受,並且除非它被接受,否則可能不會安裝,或者某些可再發行組件可能包含類似ACCEPTEULA = 1的命令行選項(僅作爲示例)。

基本上你應該:

  1. 可以找到所有這些再分發,看看他們是否有一個顯示只有進步的一個選項的命令行選項,然後讓他們顯示。

  2. 同樣,看看他們是否有文件,告訴你,如果退出代碼意味着成功與否。

  3. 不要打擾試圖找到所有檢測方法 - 只需運行redist,如果目標已經安裝,它將不會執行任何操作。

最後,你正在重新發明車輪。 WiX,Bootstrap Manifest Generator,InstallShield,Advanced Installer(等等)都提供了引導程序,這些程序已經成爲安裝軟件的先決條件。由於存在現有解決方案,因此沒有人再編寫代碼來執行此操作。

相關問題