如何使用VB編寫自動反安裝的程序

發表于:2007-07-14來源:作者:點擊數: 標簽:
如果您安裝了某一個軟件之后,想要反安裝,您有二個方法: 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 可能必須改變!

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97