Advanced Installer打包及自定义卸载

    Advanced Installer是一个windows平台下的打包软件,他可以将我们的程序打包为不依赖开发环境的安装包。接下来我简单介绍一下Advanced Installer的使用。
这里写图片描述

    上图是新建程序的选项,一般来说对于发布的程序我们使用Professional模板,如果程序比较简单可以使用Simple模板。在这里我们选择Professional。

这里写图片描述

    上图是产品详细信息的参数,包含了产品名称,产品版本号,公司名称等,建议黑每个版本添加一个版本号,当需要重新发布时修改版本号,并选择重大升级,此时便会更新产品代码。
    在新建或删除程序部分我们可以设置程序安装包的图标,并可选择禁用修改等选项。

这里写图片描述

    这一部分是产品安装参数选项,通过程序定义的变量[AppDataFolder]等选择程序的安装目录及快捷方式等安装选项。

这里写图片描述

    这一部分是针对不同的开发环境添加的一些依赖,比如我们使用VS2010编译的程序,就可以将VS2010的依赖包打包进程序中。

这里写图片描述

    文件、文件夹和快捷方式是最重要的一部分,它包含了我们的主程序的所有文件以及快捷方式,我们可以通过下图的设置文件夹同步,将每次都需要打包的文件夹进行同步,避免每次打包都需要重新导入文件夹。

这里写图片描述

    下一部分是快捷方式的设置,我们可以通过快捷方式目标指定快捷方式所指向的执行程序,并可添加不同的参数来执行

这里写图片描述

    最后我们介绍一下ini文件,我们可以在程序中将.ini文件打包,并在我们的代码中读取ini文件的内容,解析其中的变量值来执行自定义卸载等操作。以本程序的一个自定义卸载为例:
第一步:新建一个.ini文件,将其值设为 [SystemFolder]msiexec.exe /x [ProductCode]该值指向C:\WINDOWS\SysWOW64\msiexec.exe /x {492C224F-4CC7-4FBB-9398-36AC41F8A1A0}用于在Windows Install下卸载程序
第二步:新建一个快捷方式,将快捷方式目标指向我们的主程序,并附加参数uninstall
第三步:在代码中执行shell命令,代码示例如下:

def uninstall():
    if len(sys.argv) >= 2 and sys.argv[1] == 'uninstall' and os.path.exists('information.ini'):
        config = configparser.ConfigParser()
        config.read('information.ini')
        uninstall_command = config['General']['UninstallCommand']
        subprocess.Popen(uninstall_command, creationflags=0x00000008)
        return True
    return False

实际上最终的逻辑为:读取ini文件,得到shell命令–>将快捷方式指向主程序,并添加参数uninstall–>在主程序中执行从ini中得到的shell命令,执行卸载。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/wingwc/article/details/78845152
今日推荐