2013-02-10 282 views
0

我在VS2010中創建了一個用於安裝我的應用程序的安裝程序,但它有一些第三方的先決條件,如python。 我試圖將其他安裝程序作爲嵌入式資源,將它們解壓縮爲文件並運行它們(作爲自定義操作)。它可以工作,但似乎同時運行2個安裝程序是不可能的,所以當從安裝程序安裝這些安裝程序時,出現錯誤。在C#安裝程序中安裝第三方應用程序

如何在我的應用程序安裝過程中安裝這些第三方應用程序? (屬性頁面中的'先決條件'沒有幫助,因爲它們只與.NET和sql server等ms之類的東西有關...)

謝謝!

+0

也許這就是答案你正在尋找:http://stackoverflow.com/questions/8432858/how-to-install-3rd-party-prerequisites-on-c-sharp-msi(第二個答案) – bas 2013-02-10 10:14:17

+0

感謝您的答覆。作爲我對下一個答案的回覆,引導過程就是我正在尋找的過程,但在嘗試使用日誌消息進行安裝時似乎失敗了:「使用命令'C:\ Windows \ SysWOW64 \ msiexec.exe'進行安裝以及參數'-I'C:\ Users \ WINVM〜1 \ AppData \ Local \ Temp \ VSD5254.tmp \ MySoft_Installer \ python-2.7.3.m si「-q'將嘗試提升進程。包安裝'MySoft先決條件''InstallFailed'「 任何想法爲什麼它會失敗? – 2013-02-10 12:14:09

+0

所以我設法運行先決條件安裝,但我想我得到一個錯誤,因爲他們需要用戶交互以便安裝。我如何設置安裝程序在安裝過程中與用戶交互?(不使用在日誌中看到的自動使用的-q標誌) – 2013-02-13 09:35:23

回答

1

您可以使用System.Diagnostics.Process。它可以在給定的路徑上執行文件,例如MySQL服務器安裝程序。 see this然而,您將需要提供可執行文件。正如Ramhound在他的評論中建議的那樣,請查看商業產品以編寫您的安裝程序。包括我個人最喜歡的高級安裝程序在內的幾個版本提供了可以滿足您最初需求的免費版本的工具。

根據打包的先決條件的方式(MSI或EXE),MSI可能無法直接安裝prereq,而無需使用自定義操作或引導程序來搜索目標系統的prereq並安裝它它不存在於目標系統上。除此之外,我與Advanced Installer沒有任何聯繫,除了我幾年前一直是付費客戶的事實外。除了堅實的產品之外,他們的服務也非常出色。

+0

我打算提到類似於提到的引導,它似乎工作,但安裝失敗,並在日誌中的消息是: 安裝使用命令'C:\ Windows \ SysWOW64 \ msiexec.exe'和參數'-I'C:\ Users \ WINVM〜1 \ AppData \ Local \ Temp \ VSD5254.tmp \ MySoft_Installer \ python-2.7.3.msi「-q ' 將嘗試提升進程。 用代碼0退出的進程 安裝後的「MySoft先決條件」包的狀態爲「InstallFailed」 – 2013-02-10 12:11:47

0

我剛剛遇到了同樣的問題。我使用Bootstrapper Manifest Generator來創建我的引導程序包,然後在我的安裝項目中選擇這些作爲先決條件。其中一個先決條件是Python。根據安裝日誌,Python安裝將以代碼0和狀態「InstallFailed」退出。

我發現安裝實際上成功了,但是沒有被識別爲成功的退出代碼。我在「安裝文件」屬性中修復了BMG。有一個退出代碼選項卡,您可以在其中手動輸入退出代碼和結果。我用Success的結果添加了0,重新構建了包,將它複製到bootstrapper包文件夾,最後重建了我的安裝項目。之後,安裝工作正常。下面是我的BMG設置的截圖:

enter image description here

如果你不使用BMG,你可以手動編輯與此類似的Product.xml的命令節點:

<Commands Reboot="Defer"> 
    <Command PackageFile="python-2.7.5.msi" Arguments="/q /norestart"> 
     <ExitCodes> 
     <ExitCode Value="0" Result="Success" /> 
      <DefaultExitCode Result="Fail" String="Anunexpectedexitcodewasr" FormatMessageFromSystem="true" /> 
     </ExitCodes> 
    </Command> 
</Commands> 
相關問題