簡體   English   中英

如果取消安裝,則刪除InstallShield先決條件

[英]Remove InstallShield prerequisites if installation cancelled

我們使用InstallShield 2010通過InstallScript方法安裝軟件。 可能需要安裝一些先決條件。 OnBegin回調中,我們在繼續安裝之前執行一些邏輯以驗證系統。 如果用戶此時取消安裝程序,則安裝將退出,但前提條件未卸載。 我有幾個問題。

1)是否可以在安裝必備組件之前執行我們的自定義驗證? 根據我已閱讀的所有內容,這在InstallShield 2010中似乎不可能實現,但我想確認一下。

2)如果用戶取消安裝,是否有辦法強制先決條件被卸載?

3)是否有其他方法可以允許在OnBegin回調之后安裝必備OnBegin 我閱讀了一些與特定功能綁定的先決條件的信息,但尚不清楚如何在UI中執行此操作。

1)第一個問題的答案可能也是最簡單,最合理的解決方案。 通過創建包含所有自定義驗證邏輯的自己的prq文件,您應該能夠使自定義驗證在其他先決條件之前運行。 要創建自己的.prq文件,您只需將現有的prq復制到SetupPrerequisites文件夾中,然后重命名即可。 然后在InstallShield中打開Redistributable視圖。 復制/重命名的.prq文件現在應顯示在列表中,您可以右鍵單擊並選擇Edit Prerequisite 然后更改PropertiesConditionsFiles To IncludeApplication To Run等。

例如,假設您的驗證是一個可執行文件,可根據成功運行並設置注冊表項。 您可以檢查是否存在注冊表項,作為是否運行先決條件的條件,是否在Files to IncludeFiles to Include選項卡Files to Include exe和所有依賴項,在Files to Include運行的Application to Run選項卡中運行該可執行文件,然后在“行為”選項卡中設置下拉列表如果仍然不符合啟動條件以Abort the setup會發生什么

對所有必備條件設置感到滿意之后,再次右鍵單擊並選擇“ Set prerequisite order... ,並確保自定義驗證必備條件位於列表的頂部。

2)是的,可能有一種方法可以運行一些自定義操作,這些操作將確保在回滾時卸載所有先決條件,但這似乎很復雜,我個人不建議這樣做。 如果用戶已經在計算機上安裝了必備軟件,然后中止了安裝並卸載了計算機上已經安裝的軟件,該怎么辦? 他們可能對此不太滿意。

3)對此不完全確定,但是我認為在先決條件運行之前OnBegin執行OnBegin函數。 我之所以這樣說,是因為通常至少在我的理解下,這些先決條件是由Setup.exe或類似程序在MSI執行之外啟動的。 然后,先決條件完成后將啟動MSI。 如果OnBegin作為MSI執行的一部分運行(我相信是這樣),則在啟動先決條件之前無法啟動它。

較新版本的InstallShield中可用的Suite和Suite / Advanced UI項目可以更直接地處理此問題,但是如何通過將一個InstallScript安裝包裝到另一個安裝OnBegin來將OnBegin放在OnBegin之前呢?

關於您的其他子問題...

先決條件以一種“一勞永逸”的方式處理,並且被設計為安裝可能已經存在的東西(在這種情況下,跳過安裝),因此不直接支持卸載它們。

基本MSI項目中提供了功能前提條件。 對於InstallScript項目,建議您使用包括LaunchApplication或類似方法的腳本代碼,但是如果您不只是啟動另一個InstallScript安裝,那么最終可能需要重新實現先決條件樣式的體系結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM