如何在基于 MSI 的卸载过程中停止正在运行的进程?

2023-12-02

我在 Windows XP 上使用 Wise Package Studio 7.0 SP2。

我有一个 MSI 包装的 EXE 安装,它可以愉快地安装一些文件,然后运行安装中的其中一个文件,我们可以将其称为 app.exe。

因此,在 MSI 编辑器的“执行延迟”选项卡上,我必须添加以下行:

If Not Installed then
  Execute Installed Program app.exe (Action)
End

这确保了我的 app.exe 能够运行only在安装过程中,而不是在修改/维修/删除过程中。当 app.exe 运行时,它会方便地将自身添加到系统托盘中。

我正在寻找在移除过程中起到相反作用的东西。我想停止 app.exe 进程,从而将其从系统托盘中删除。

目前,我的删除操作删除了所有文件,但 app.exe 仍然运行并仍然显示在系统托盘中。我考虑过添加条件语句:

If REMOVE~="ALL" then
  *remove the app from the systray!*
End

条件语句只会让我在删除时执行某些操作,但是我不确定实际终止进程的最佳方法。是否有一个 MSI 命令可以让我执行此操作?我应该编写自己的 .exe 来做到这一点吗?


6 个月前,我们使用 VBScript 操作来做同样的事情,然后就在 SP3 发布的时候,objProcess.Terminate() 函数拒绝在某些机器上工作。无论我们做什么,它都冻结了。我们大约 10% 的测试机器上发生了这种情况,因此我们被迫寻找替代解决方案(谁知道它可能冻结了多少客户!)

我的第一个发现是内置的(自 Windows 2000 起)命令 TASKKILL 例如:TASKKILL /IM app.exe /F但由于这似乎使用了与我们在 VBScript 中使用的类似的方法来终止进程,因此该方法也会失败。

所以现在我们使用的是pskill.exe使用来自 sysinternals 的工具,您需要使用命令行开关来抑制许可协议提示,但除此之外,这是我发现的杀死正在运行的 EXE 的最简单的方法。

当然,如果您碰巧了解一点 C++,最好的解决方案是构建您自己的 EXE 或 DLL 来执行此操作;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在基于 MSI 的卸载过程中停止正在运行的进程? 的相关文章

  • Nuxt.js 安装错误

    我已经尝试安装 nuxt app 应用程序几次了 我已经在终端中使用 npm 和yarn 并以管理员身份在 powershell 中运行了它 我在创建应用程序时继续遇到错误 我在下面包含了错误日志以供参考 我think认为问题出在这个抛出错
  • 在 VS Toolbox 中安装自定义控件

    我们公司提供安装 Inno Setup 的第三方组件 我们用VS套餐自动将我们的组件放入 Visual Studio Toolbox 中 但有时会失败 VS 包还需要一些名为 包加载密钥 尽管我们对其进行了测试 但 Visual Studi
  • ISEXP:警告:-6248:找不到依赖文件 libc.dll,或其组件的依赖项之一

    这个问题有很多变体 但我的问题是特定的libc dll 我不关心解决依赖性 我想要一种解决方法来避免该警告 我的表格申请中有 30 个项目 当我使用 InstallshieldLE 发布设置时 我得到ISEXP warning 6248 C
  • 无法在 Emacs 中打开 plantuml 模式

    我使用的是 Emacs 24 3 1 我安装了MELPA http melpa milkbox net 的版本plantuml mode https github com zwz plantuml mode via M x package
  • 在 Windows 上静默安装 Qt55 Enterprise

    编辑 在 Qt 支持的帮助下 我已经解决了如何自动化 Qt 企业安装程序的这两个部分 下面是脚本调用 我正在尝试在 Windows 8 1 和 Windows 10 上静默安装 Qt 5 5 1 Enterprise 使用 script 开
  • 为什么安装 Ruby 1.9.3 时会出现 404 错误?

    我最近擦除了我的计算机 操作系统 Mac OS X 10 6 8 并重新安装了所有开发工具 我再次安装了RVM 但是 它不允许我安装 Ruby 1 9 3 到目前为止我已经尝试过 rvm install 1 9 3 rvm install
  • WIX 工具集 - 自定义操作命令无法正确检测 Windows 10 版本

    我有一个安装程序 可以部署并运行单独的 exe文件以将驱动程序部署到系统 不幸的是 微软似乎已经放弃了对VersionNTWindows 10 及更高版本中的宏 所以我实施了另一篇文章中建议的方法 https stackoverflow c
  • 安装后步骤未成功完成 MySQL Mac OS Sierra

    pyEnv Anants MacBook Pro litibackend anantchandra brew postinstall mysql gt Postinstalling mysql gt usr local Cellar mys
  • 在 WiX 中轻量运行时,DefaultDir 无效

    我只是想做一个安装程序 将一些文件移动到程序文件中 设置开始菜单链接 并出现在要卸载的添加 删除程序中 目前我很乐意点击开始菜单链接 因为这看起来相对简单 需要注意的是 我特别希望可以通过脚本构建它without任何类型的全局安装 这意味着
  • 如何在 C# 中找到已安装应用程序的升级代码?

    我正在使用 Windows Installer API 的 C 包装器WIX 工具集 http wixtoolset org 我用ProductInstallation类来获取有关已安装产品的信息 例如产品代码和产品名称 例如 产品名称 我
  • 手动创建 msix 包,无需 GUI 或 msi 安装程序

    谁能给我提示如何手动定义 msix 包 我的应用程序还没有 msi 包 所以我不能简单地转换它 有没有一种方法可以像配置文件一样创建 我可以手动定义哪些文件需要进入 msix 包 MSIX GUI Creator 也没有给我足够的控制权 非
  • 创建 MSI 的最佳工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是设置项目创建的新手 现在我正在使用 Visual Studio 2008 为我的项目创建安装文件 msi 我对在安装向导中创建自己的自
  • 如何说服 VS2005 msi 升级?

    我有一个使用 VS2005 用 C 编写的 Windows 服务 安装是通过一个向导调用 msiexec 来安装同样使用 VS2005 创建的 msi 文件 我在生成将从一个版本的服务升级到另一个版本的 msi 文件时遇到问题 向导程序负责
  • 使用 numpy.distutils.core.setup 之前安装 numpy

    我在用numpy distutils设置具有 fortran 模块的包 mypackage 问题是如果我这样做pip install mypackage在没有 numpy 的环境中 出现以下错误 ModuleNotFoundError 没有
  • 避免 Inno Setup 中的“无法展开 shell 文件夹常量 userdocs”错误

    我将一些示例文档安装到 Windows 上标准 我的文档 文件夹的 PerfectTablePlan 子文件夹中 这对于 99 以上的用户来说效果很好 但是 如果用户没有 我的文档 文件夹 我会收到许多以下形式的丑陋错误消息 内部错误 无法
  • Windows7上python3.5无法安装BeautifulSoup4

    我已经从下载了 beautifulsoup4 4 5 3 tar gzhttps www crummy com software BeautifulSoup bs4 download 4 5 https www crummy com sof
  • VS 2015 SSDT 安装失败

    我的计算机上安装了 Microsoft Visual Studio Professional 2015 还安装了 SQL Server 2017 我正在尝试在我的计算机上安装用于 BI 项目的 SQL Server 开发工具 我尝试安装 S
  • 在 Sublime Text 3 中安装多个包

    在 Sublime Text 3 中安装软件包时 我是否可以从列表中勾选所有我想要的软件包 然后一次性安装它们 或者对于我想要安装的每个软件包 我是否必须单击 首选项 gt 软件包控制 gt 安装软件包 例如 Notepad 有一个很好的带
  • Tensorflow 导入错误:没有名为“tensorflow”的模块

    我在 Windows Python 3 5 Anaconda 环境中安装了 TensorFlow 验证成功 有警告 tensorflow C gt python Python 3 5 3 英特尔公司 默认 2017 年 4 月 27 日 1
  • 用于检查和安装先决条件的安装项目与引导程序项目

    这是我的情况 我创建了一个普通的 WiX 安装项目 然后我尝试检查一些先决条件 例如是否安装了 NET 框架 我似乎无法从 WiX 安装项目中执行此操作 所以我创造 WiX Bootstrapper 项目 我能够检查并安装它们 先决条件 我

随机推荐

  • 使用远程 FTP 原子包和私钥发出与服务器的连接

    我正在尝试使用原子包 Remote FTP 并使用私钥连接到我的服务器 我在服务器上设置了 SSH 密钥 并且可以使用 putty 成功连接 私钥保存在我的项目文件夹中 并且我有一个现有的 ftpconfig 文件 没有私钥 当我替换文件内
  • 在两个 ggplot 直方图上显示平均值和中位数

    我是新的 stackoverflow 用户 目前无法对原始帖子发表评论来提问 我发现了以前的 stackoverflow 答案 https stackoverflow com a 34045068 11799491 我想知道如何在此图表中添
  • 的巨大高度值不会阻止截断

    我正在尝试申请
  • 检测拨出电话,使用真实设备发出问题

    我有一个奇怪的问题 为了检测拨出电话 我注册了一个广播接收器android intent action PHONE STATE 当状态变为摘机时 则开始通话 它似乎在模拟器上工作 调试器实际上达到了一些代码 但它在真实设备 Acer Liq
  • 程序集 8086 光标放置

    我想将光标放在 论文 之后 等待输入 ENTER 然后将其放在 作者 之后 这两个句子都是打印的已定义变量 insert db Insert new paper 0 0Ah 0Ah 0Ah 0Dh inserttitle db Title
  • AWS代码管道错误致命错误:接近堆限制的无效标记压缩分配失败-JavaScript堆内存不足

    我有在 aws 代码管道上运行的角度应用程序 突然它开始抛出此错误 我做了很多这样的事情 包括 node max old space size 8192 等 但没有任何方法可以解决此错误 有人可以帮我解决这个问题吗 To disable t
  • Selenium Python 在 HTTPS 网站上验证浏览器登录 pupup 对话框

    Folks 我正在开发一个每天运行一次的抓取脚本 我需要重新验证我的帐户 首先我必须登录 然后只有我才能看到该页面 就像正常的页面登录和废弃一样 这不起作用 阅读文章并按照大多数博客和论坛的建议使用下面的代码 这仍然不起作用 It s an
  • 缺少 OpenMP 功能:线程优先级

    任何人都想想吧 OpenMP 具有调整 CPU 能力来处理哑铃的功能 在我对 openmp 的研究中 我们无法设置线程优先级来以强大的力量执行块代码 5 只有一种方法 beginthreadex 或带参数的 CreateThread 函数
  • 如何在javascript中将嵌套集合转换为嵌套数组?

    有以下数据 no 1 name ELECTRONICS depth 0 no 2 name TELEVISIONS depth 1 no 3 name TUBE depth 2 no 4 name LCD depth 2 no 5 name
  • 尝试获取 singleValueExtendedProperties 时收到 400 和 500

    尝试向日历对象添加扩展属性 我可以使用以下有效负载创建日历 Ruby 语法 有效负载以 JSON 形式发送 name build calendar name singleValueExtendedProperties id String S
  • 如何使用 viewmodel 单例进行活动?

    MyApp需要在整个上下文中保存一个User对象 A B C活动的xml使用这个User对象 当A编辑User时 我想要B和C通知Change 如何使用数据绑定 livedata和viewModel处理这个问题 以前我让User class
  • Python Selenium 更改文本大小(缩放?设置?...)

    我有一个网页 我需要先截屏 然后使用 OCR 解析出里面的文本 如果放大 Mac command OCR 的性能会显着提高 所以我想知道如何在Python中使用selenium来放大 缩小 有一个类似的post但他们只有Java和C 的实现
  • 在 colorbox 中的图像下方添加 div

    使用 PHP 和 jQuery 目前使用 Colorbox 显示图像幻灯片 我想在每个图像下方包含一个 DIV 当每个图像显示新内容时会更新 可用于展示相关内容 评论功能等 四处研究但尚未找到任何答案 有人以前这样做过或有任何线索吗 我想我
  • 检测应用程序是否从应用程序“外部”启动/恢复

    我目前正在为应用程序构思一项功能 我希望有一种通用方法 方法来检测应用程序本身是否已从 启动或恢复outside 该应用程序 Outside 在这种情况下 意味着 应用程序由启动器图标启动 恢复 通过按导航栏 按键上的 应用程序按钮 来启动
  • 在 Teams 平台上更新 BotFramework v4 中的活动

    我有一个使用 NodeJS 使用 Bot Framework v4 开发的机器人 并部署在 Teams 中的多个渠道上 有没有办法更新机器人发送的消息 我尝试在 BotFrameworkAdapter 中实现 updateActivity
  • cx_Freeze-导入错误:无法导入名称设置

    我使用的是 Windows 7 机器 cx Freeze 4 3 1 和 Python 3 3 Python 和 cx Freeze 都是 32 位版本 我编写了一个 setup py 脚本 如下所示 import sys from cx
  • Javascript如何转义字符

    我想在 div 中插入一些 html 假设 div div 我在用 Sag html data 为了将数据插入到该 div 中 但这是我的数据的问题 table table
  • android 中有安装事件吗?

    是否有一些事件 接收器或用于处理安装后或安装后直接执行的首次执行 或者我需要它根据偏好进行模拟吗 有的是ACTION PACKAGE ADDED广播意图 但正在安装的应用程序不会收到此意图 因此 检查是否设置了首选项可能是最简单的解决方案
  • 按位与 (&) 运算符执行什么数学函数(JS)?

    一点背景知识 当我试图解决 javascript 问题以找到所有可能的子集时 我正在查看另一篇 SO 帖子 我不是在问 JS 挑战 而是问它为什么存在以及它有什么数学意义 这是代码的复制粘贴这个帖子 var arr 1 2 3 functi
  • 如何在基于 MSI 的卸载过程中停止正在运行的进程?

    我在 Windows XP 上使用 Wise Package Studio 7 0 SP2 我有一个 MSI 包装的 EXE 安装 它可以愉快地安装一些文件 然后运行安装中的其中一个文件 我们可以将其称为 app exe 因此 在 MSI