六)打包时加入卸载功能
方法一
在打包项目中添加文件msiexecexe(一般可在c\windows\system\下找到)
在文件系统视图中选择应用程序文件夹在msiexecexe上按右键选择创建快捷方式重命名快捷方式为卸载 更改此快捷方式的Arguments 为/x {产品id}产品id的值为打包项目的ProductCode属性值
方法二(推荐)
先生成安装包记下ProductCode(选择解决方案资源管理器根目录如setup再查看属性标签不是右键中的属性)下面要用到
用VSnet建立一个新的控制台程序uninstexe文件power by landlordh for xp Module uninstall Sub Main()
Dim myProcess As Process = New Process If SystemEnvironmentOSVersionToStringIndexOf(NT ) Then myProcessStart(msiexec /X{BDACABBFB}) 改为自己的ProductCode End If myProcessClose()
End Sub End Module 将控制台程序BIN目录的exe文件加入到打包程序文件中在程序组创建uninstexe的快捷方式附installdbvb类要添加引用 systemconfigurationinstalldll Imports SystemComponentModel Imports SystemConfigurationInstall Public Class Installer Inherits SystemConfigurationInstallInstaller #Region 组件设计器生成的代码 Public Sub New()
MyBaseNew()
该调用是组件设计器所必需的
InitializeComponent()
在 InitializeComponent() 调用之后添加任何初始化End Sub Installer 重写 dispose 以清理组件列表
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then If Not (components Is Nothing) Then componentsDispose()
End If MyBaseDispose(disposing)
End Sub 组件设计器所必需的Private components As SystemComponentModelIContainer 注意 以下过程是组件设计器所必需的可以使用组件设计器来修改此过程
不要使用代码编辑器来修改它
Private Sub InitializeComponent()
components = New SystemComponentModelContainer End Sub #End Region Public Overrides Sub Install(ByVal stateSaver As SystemCollectionsIDictionary)
MyBaseInstall(stateSaver)
If Not InstallDB() Then 失败反安装MeUninstall(stateSaver)
Exit Sub End If DeleteFile(StringFormat({}DBdat MeContextParametersItem(targetdir)))
End Sub Public Overrides Sub Uninstall(ByVal stateSaver As SystemCollectionsIDictionary)
[] [] []