杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2440|回复: 0

使用installshield12 制作的安装包在卸载时杀死正在运行的程序

[复制链接]
发表于 2017-3-1 18:23:07 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
    最近工作项目需求,要用installshield12制作安装包,实现安装注册ATL控件。与ATL一同安装的程序文件还有两个客户端,这两个客户端和迅雷等下载工具类似是在后台运行的,并没有界面显示,所以一般情况下再用户进行卸载的时候这两个程序都会在运行。然而,installshield本身并没有强制关闭正在运行的要卸载的程序。那么,只有自己处理了。

    方法一:首先在Installation Designer页面的Behavior and Logic中单击InstallScript,右击Files在弹出的快捷菜单中选择New Script file,然后新建相关函数。写脚本:

  1. #define  WINDOW    "11.exe"



  2. function OnUninstallingFile(szFile)  

  3. HWND hWnd;

  4. begin           

  5. hWnd = FindWindow (WINDOW, "");  

  6. if (hWnd != NULL) then

  7. Delay (3);

  8. SendMessage(hWnd, 0x0111, 32775, 0);

  9. Delay (3);

  10. endif;



  11. RegDBSetDefaultRoot (HKEY_LOCAL_MACHINE);

  12. RegDBDeleteValue("//SOFTWARE//Microsoft//Windows//CurrentVersion//Run","11");

  13. end;
复制代码




然后再在Behavior and Logic中单击Custom Actions, 右击Custom Actions在弹出的快捷菜单中选择Custom Action Wizard在Action Type中选择Run InstallScript code,在Insert into Sequence中的Install Execute Sequence处选择After ISSelRegisterFinalize或者After InstallFinalize都行,其余按向导提示操作。

以上只是个例子,思路就是找到运行的程序的窗口句柄,发消息通知其退出,此种方法只能针对有窗口的程序。


方法二:

编写一段VC代码,写出dll文件,加到安装文件里,用custom action来调用,就可以了。调用处和方法一相同,细节调整下就可以了。

  1. HANDLE   hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,   0);     

  2.   HANDLE   hProcess;   

  3.   PROCESSENTRY32   pe;     



  4.   pe.dwSize   =   sizeof(pe);     

  5.   BOOL   bNext=Process32First(hSnap,   &pe);     

  6.   while(bNext)     

  7.   {     

  8.   if(_tcsicmp(pe.szExeFile,   TEXT("执行档名称"))   ==   0)   

  9.   {     

  10.   hProcess   =   OpenProcess(PROCESS_ALL_ACCESS,   FALSE,   pe.th32ProcessID);   

  11.   TerminateProcess(hProcess,   0);   

  12.   }     

  13.   bNext=Process32Next(hSnap,   &pe);     

  14.   }   

  15.   CloseHandle(hProcess);   

  16.   CloseHandle(hSnap);   
复制代码


同样的方法也可以用于删除卸载残留的一些文件。

呵呵,简短的语句可能说得不够清楚,大概的思路有了,细节处还是要根据需求灵活的实现。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-9 06:43 , Processed in 0.116389 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表