inno Setup 卸载前关闭进程

莎莎 2011-07-07 03:14:41
inno Setup 卸载前关闭进程,该怎么写呢??
...全文
1964 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
幸福人生 2011-10-20
  • 打赏
  • 举报
回复
没怎么看明白,
莎莎 2011-07-12
  • 打赏
  • 举报
回复
问题解决了,原来是没有设置程序的caption,上面那个USB Mouse.exe是错误的,怪不得接收不到消息呢...还是谢谢各位!!
莎莎 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 m617105 的回复:]
引用 9 楼 wangshasha19890306 的回复:

引用 8 楼 kyotrue 的回复:
引用 7 楼 wangshasha19890306 的回复:
引用 5 楼 kyotrue 的回复:
可以这样,为你的程序增加参数,比如/uninstall,卸载的时候让inno Setup执行 你的程序.exe /uninstall。

你的程序启动时,在参数为/uninstal……
[/Quote]

那这样的话不是要在自己的程序里面加,能不能在制作安装包的时候,设置呢??
浩南_哥 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wangshasha19890306 的回复:]

引用 8 楼 kyotrue 的回复:
引用 7 楼 wangshasha19890306 的回复:
引用 5 楼 kyotrue 的回复:
可以这样,为你的程序增加参数,比如/uninstall,卸载的时候让inno Setup执行 你的程序.exe /uninstall。

你的程序启动时,在参数为/uninstall时,就检查是否有你的程序在运行,如果有就提示用户关闭,或者其他方……
[/Quote]
可以试试TerminateProcess,前提是你自己根据窗口句柄获得进程句柄。

PS:不过一般还是让用户自己来结束的好,这样友好一些。
莎莎 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 kyotrue 的回复:]
引用 7 楼 wangshasha19890306 的回复:
引用 5 楼 kyotrue 的回复:
可以这样,为你的程序增加参数,比如/uninstall,卸载的时候让inno Setup执行 你的程序.exe /uninstall。

你的程序启动时,在参数为/uninstall时,就检查是否有你的程序在运行,如果有就提示用户关闭,或者其他方法关闭掉程序。


这样的话不就和添加……
[/Quote]

我试过发送消息给程序WM_CLOSE,WM_DESTROY给程序,不知道为什么,程序还是不能关闭。
kyotrue 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wangshasha19890306 的回复:]
引用 5 楼 kyotrue 的回复:
可以这样,为你的程序增加参数,比如/uninstall,卸载的时候让inno Setup执行 你的程序.exe /uninstall。

你的程序启动时,在参数为/uninstall时,就检查是否有你的程序在运行,如果有就提示用户关闭,或者其他方法关闭掉程序。


这样的话不就和添加互斥对象是一样的么...

3楼说的,添加互斥对象的话,卸载……
[/Quote]

和3楼不一样的,3楼说的是让inno Setup来判断,我说的是在你自己的程序中写代码判断,让inno Setup调用你的程序。你自己写想干什么都可以,你可以不提示用户,直接发退出消息给你的程序,只要你的程序处理这个消息就行,或者野蛮的TerminateProcess也行。
莎莎 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kyotrue 的回复:]
可以这样,为你的程序增加参数,比如/uninstall,卸载的时候让inno Setup执行 你的程序.exe /uninstall。

你的程序启动时,在参数为/uninstall时,就检查是否有你的程序在运行,如果有就提示用户关闭,或者其他方法关闭掉程序。
[/Quote]

这样的话不就和添加互斥对象是一样的么...

3楼说的,添加互斥对象的话,卸载的时候,提示用户程序在运行,(这样的话,就不能继续卸载,除非用户自己把程序的进程Kill才可以)

有没有办法,不提示用户,直接将运行的程序关掉,然后完全卸载呢???
浩南_哥 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wangshasha19890306 的回复:]

引用 3 楼 m617105 的回复:
之前最好
1、你的程序里面用CreateMutex(NULL, FALSE, "MyProgramsMutexName");

2、然后在Inno setup中填上:
AppMutex=MyProgramsMutexName

;以上两步请查看帮助中的AppMutex。


这样有什么用呢?我只想在程序卸载的时候先将运行着的程序关闭,要……
[/Quote]
多看帮助
[Setup]:AppMutex
这个指令用于防止用户在应用程序仍在运行的情况下安装新的应用程序版本,以及防止用户卸载正在运行的应用程序。它指定一个或多个已命名互斥中的名字 (多重互斥用逗号隔开),安装程序和卸载程序在启动时检查该名字。如果没有退出,安装程序/卸载程序将显示消息: “[安装程序或卸载程序] 发现 [AppName] 当前正在运行,请现在关闭所有运行中的程序,请先关闭所有运行的窗口,然后单击“确定”继续,或按“取消”退出。”。这个值可以包含常量。
kyotrue 2011-07-07
  • 打赏
  • 举报
回复
可以这样,为你的程序增加参数,比如/uninstall,卸载的时候让inno Setup执行 你的程序.exe /uninstall。

你的程序启动时,在参数为/uninstall时,就检查是否有你的程序在运行,如果有就提示用户关闭,或者其他方法关闭掉程序。
莎莎 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 m617105 的回复:]
之前最好
1、你的程序里面用CreateMutex(NULL, FALSE, "MyProgramsMutexName");

2、然后在Inno setup中填上:
AppMutex=MyProgramsMutexName

;以上两步请查看帮助中的AppMutex。
[/Quote]

这样有什么用呢?我只想在程序卸载的时候先将运行着的程序关闭,要不然卸载不完全呀
浩南_哥 2011-07-07
  • 打赏
  • 举报
回复
之前最好
1、你的程序里面用CreateMutex(NULL, FALSE, "MyProgramsMutexName");

2、然后在Inno setup中填上:
AppMutex=MyProgramsMutexName

;以上两步请查看帮助中的AppMutex。
浩南_哥 2011-07-07
  • 打赏
  • 举报
回复
在[Code]定义一下
const WM_CLOSE=$0010;
莎莎 2011-07-07
  • 打赏
  • 举报
回复
[Code]
var
HasRun:HWND;

function InitializeUninstall(): Boolean;
begin
HasRun := FindWindowByWindowName('USB Mouse.exe');
if HasRun<>0 then
begin
SendMessage(HasRun,WM_CLOSE,0,0);
end
else
Result :=true;
end;

别人建议这样写,但是为什么报错说WM_CLOSE没有定义????

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧