如何使用VB編寫自動反安裝的程序
發表時間:2024-02-19 來源:明輝站整理相關軟件相關文章人氣:
[摘要]如果您安裝了某一個軟件之后,想要反安裝,您有二個方法:1、打開【控制面板】中的【添加刪除新程序】,選擇該軟件來反安裝。2、選擇【開始】【程序集】中軟件所產生的程序組中的反安裝。上面的第一種方法,您不需要作任何處理,一般軟件在安裝完后,都會在【控制面板】中的【添加刪除新程序】多一個該軟件的選項。而第...
如果您安裝了某一個軟件之后,想要反安裝,您有二個方法:
1、打開【控制面板】中的【添加刪除新程序】,選擇該軟件來反安裝。
2、選擇【開始】【程序集】中軟件所產生的程序組中的反安裝。
上面的第一種方法,您不需要作任何處理,一般軟件在安裝完后,都會在【控制面板】中的【添加刪除新程序】多一個該軟件的選項。而第二種方法,就必須要我們編寫程序來解決了!
假設,今天我們編寫了一個程序叫 Test,當您完成 Test.exe 之后,您必須再多編寫一個自動反安裝的程序,我們將文件名稱設為 unTest.exe(先不要管如何編寫,后面會說明)。二支程序都完成后,您使用 VB 提供的應用程序安裝向導(Application Setup Wizard) 來制作安裝程序時,必須額外再加入 unTest.exe!
加入 unTest.exe 之后,使用者安裝后,安裝程序並不會在【開始】【程序集】中該系統所產生的程序組【Test】中加入這個自動反安裝程序 unTest.exe 的捷徑,安裝程序只會將unTest.exe 連同 Test.exe 一起復制到應用程序的目錄中而已!所以如果您想產生unTest.exe 的捷徑,您可能需要稍微修改一下 VB 提供的應用程序安裝向導程序!
以下我們就實際來看看 unTest.exe 程序如何編寫:
在 VB 中建立一個新文檔,取名為 unTest.vbp,表單為 unTest.frm,不需要任何控制項,在表單中加入以下程序代碼:
Private Declare Function GetWindowsDirectory Lib "kernel32" _
Alias "GetWindowsDirectoryA" _
(ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Sub Form_Load()
On Error Goto BaddUn
Dim X&
Dim buffer As String * 128
Dim UnStr As String
Dim size As Integer
Dim retval As Integer
buffer = Space$(128)
size = 128
retval = GetWindowsDirectory(ByVal buffer, ByVal size)
Me.Caption = buffer
'以下的程序代碼必須編寫在同一行中
''''''''''''''''''''''''''''''''''''''''
UnStr = Me.Caption & "\ST5UNST.EXE -n " & Chr(34) & App.Path & "\ST5UNST.LOG" & Chr(34)
''''''''''''''''''''''''''''''''''''''''
'MsgBox UnStr '可顯示可不顯示, 只是測試用
'X& = Shell("C:\WINDOWS\ST5UNST.EXE -n "
' "C:\Program Files\App Name\ST5UNST.LOG""
' ", vbNormalFocus)
X& = Shell(UnStr, vbNormalFocus)
Unload Me
Exit Sub
BaddUn:
MsgBox "for some reason UnInstall can not run."
Exit Sub
End Sub
由以上的程序代碼中,您是否發現, unTest.exe 必須和 St5unst.log 放在同一個目錄中,不過這只要和上面的程序一樣使用 App.Path 就可以解決了!
注:這個示例是使用 VB5 來做測試的,如果是其他版本的 VB,ST5UNST.LOG 可能必須改變!