簡體   English   中英

自定義VS 2008安裝項目卸載程序

[英]Customizing the VS 2008 Setup Project Uninstaller

我有一個用於.NET應用程序的安裝項目,並且如果它們在工作時都處於靜默狀態,則兩個安裝/卸載都可以正常工作。

但是,如果有人在處理過程中取消了卸載,則回滾似乎沒有得到正確的處理,並且在以后嘗試再次卸載時,會為用戶帶來空引用異常。

我想簡化一下情況; 我想取消用戶取消正在進行的卸載的功能。 能做到嗎?

謝謝-本

是的,有可能這樣做。 MSDN列出了幾種選擇 ; 但是,僅修補由Visual Studio創建的MSI文件可能會更簡單。 這可以使用Orca完成(您可以在Windows SDK文件夾中的C:\\ Program Files \\ Microsoft SDKs \\ Windows \\ v6.0A \\ Bin \\ orca.msi下找到此工具的安裝程序)。

Orca允許您編輯MSI數據庫表。 要隱藏取消按鈕,您必須向ControlCondition表中添加一條記錄(從此處開始 ):

Dialog        | Control      | Action   | Condition
------------------------------------------------------
ProgressForm  | CancelButton | Hide     | 1

使用Orca這樣的添加記錄的手動任務可能最好用一個簡短的VBScript來完成,如下所示:

Set oMsi = CreateObject("WindowsInstaller.Installer")

' get path to msi from command line
strMsiFullPath = Wscript.Arguments(0)
' open transacted
Set oDB = oMsi.OpenDatabase(strMsiFullPath , 1)

' insert a record into the [ControlCondition][3] table
Set oView = oDB.OpenView("INSERT INTO `ControlCondition` " & _
    "(`ControlCondition`.`Dialog_`, `ControlCondition`.`Control_`," & _
     "`ControlCondition`.`Action`, `ControlCondition`.`Condition`) " & _
     "VALUES ('ProgressForm', 'CancelButton', 'Hide', '1')")

' clean up
oView.Execute: oView.Close: oDB.Commit
Set oMsi = Nothing

可以將此腳本作為構建后的步驟添加到安裝項目中(請注意,Visual Studio變量中的輸入路徑有錯字):

cscript $(ProjectDir)patch.vbs $(BuiltOuputPath)

暫無
暫無

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

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