基于QtIFW创建程序安装包,卸载程序快捷方式创建

概述#

  • 本文将介绍如何创建桌面快捷方式
  • 本文将介绍一种卸载前监测程序运行时中断卸载流程
  • 本文演示代码基于官方的tutorial
  • 本文演示代码下载

卸载前监测程序运行#

  • 自己尝试了好多基于QtIFW的安装包,发现,软件运行时,都能顺利卸载软件
  • 实现目标:软件运行时,卸载程序启动时能提示软件正在运行,同时中断卸载流程。便有了此文。

环境#

  • QtIFW版本: 4.5.2, 下载地址
  • 操作系统: windows 11

目录结构#

  • 运行安装包一键生成.bat 即可生成安装包, 不过, 需要将 Qtifw/bin的目录设置到系统环境变量
Copy Highlighter-hljs
. │ 安装包一键生成.bat │ ├─configconfig.xml │ controlscript.js │ └─packages └─com.vendor.product ├─data │ installcontent.txt │ └─meta installscript.js package.xml

创建快捷方式#

  • 这里演示,使用Uninstaller.exe的卸载快捷方式放在桌面
  • installscript.js文件:packages\com.vendor.product\meta\installscript.js (官方先前为qs文件,自己测试改为了js)
  • 关键代码: createOperations 中创建快捷方式。
Copy Highlighter-hljs
component.addOperation("CreateShortcut", "@TargetDir@/Uninstaller.exe", "@DesktopDir@/卸载.lnk");
  • 文件内容
Copy Highlighter-hljs
function Component() { } Component.prototype.createOperations = function() { try { // call the base create operations function component.createOperations(); /// 创建快捷方式 component.addOperation("CreateShortcut", "@TargetDir@/Uninstaller.exe", "@DesktopDir@/卸载.lnk"); } catch (e) { console.log(e); } }

卸载检测是否程序是否运行#

这里演示, 检测Notepad3.exe是否运行

  • 1 切换到 config目录,
  • 2 创建名为controlscript.js脚本文件
  • 3 打开config目录下的config.xml文件,增加以下关键代码
Copy Highlighter-hljs
<MaintenanceToolName>Uninstaller</MaintenanceToolName> <ControlScript>controlscript.js</ControlScript>

此时, config.xml文件内容为

Copy Highlighter-hljs
<?xml version="1.0" encoding="UTF-8"?> <Installer> <Name>Your application</Name> <Version>1.0.0</Version> <Title>Your application Installer</Title> <Publisher>Your vendor</Publisher> <MaintenanceToolName>Uninstaller</MaintenanceToolName> <ControlScript>controlscript.js</ControlScript> </Installer>

注意, config.xml中的MaintenanceToolName值需要与 packages/com.vendor.product/meta/installscript.js中Uninstaller.exe保持一致

  • 5 编写controlscript.js文件内容并保存
Copy Highlighter-hljs
function Controller() { if (installer.isUninstaller()) { if (installer.isProcessRunning("Notepad3.exe")) { QMessageBox.critical("卸载", "提示", "Notepad3.exe正在运行,请退出软件后,再卸载"); /// 因为没有从官方QTIFW提供的文档中找到如何中途退出Maintanencetool.exe的函数, /// 但是这里又需要中断卸载流程。 /// 投机取巧, 执行一个installer不存在的函数exit,用于中断卸载流程 installer.exit(); } } }
  • 6 运行安装包一键生成.bat, 即可在与安装包一键生成.bat同级目录下生成安装包

测试#

  • 安装上面生成的安装包
  • 启动Notepad3.exe
  • 运行桌面生成的卸载快捷方式

将提示Notepad3.exe正在运行,请退出软件后,再卸载

卸载中断流程关键代码#

  • 翻遍了QtIFW的官方文档,没有提及如何中断卸载流程和相关范例。便使用取巧的方式,执行了一个installer的不存在的函数exit, 用于中断卸载流程。
  • 若看到这里的你知道如何使用Maintanencetool.exe卸载程序前检测程序运行后中中断卸载流程, 请留言交流 。 😄
  • 中断卸载流程关键代码
Copy Highlighter-hljs
/// 因为没有从官方QTIFW提供的文档中找到如何中途退出Maintanencetool.exe的函数, /// 但是这里又需要中断卸载流程。 /// 投机取巧, 执行一个installer不存在的函数exit,用于中断卸载流程 installer.exit();
posted @   mohist  阅读(661)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-06-07 VS2015 up3激活key
2021-06-07 VS2017激活key
点击右上角即可分享
微信分享提示
CONTENTS