aurain
技术文摘
posts - 137,  comments - 268,  trackbacks - 0

IS(Inno Setup,我用的是5.2.2)是一款免费的制作安装包的工具,关于它的具体介绍和如何制作安装包(用向导一步一步很容易上手的)我就不介绍了。在这里,只介绍两个方面的内容:

1. 安装软件前,检查该软件是否正在运行,如果正在运行,则提示用户,需要先关闭,然后才能进一步按照。

2. 卸载软件的时候,检查该软件是否正在运行,如果正在运行,则要关闭才能进行卸载。

 

IS中,有[code]段,该段是用来编写pascal脚本的。

这里,主要用到FindWindowByWindowName这个函数,该函数通过窗口标题来获取其句柄,本来想用FindWindowByClassName,但现在的窗口类有些难找,用spy++,查出的是一些afx…之类的。具体用法可以查看IS帮助文档。

 

IS编写脚本中,有两个函数很重要,InitializeSetup, InitializeUninstall,大家从字面应该可以看出是什么意思了,分别是安装前,安装后执行的动作。

所以,我们的脚本应该写在这里。
另外,
[code]段可以放在IS脚本的最后部分。

这里还是直接给出代码,代码倒不怎么难,抛砖引玉了,希望大家对于安装制作有更好的方法。

[Code]

var

  HasRun:HWND;

 

function InitializeSetup():Boolean;

begin

  Result := true;

  HasRun := FindWindowByWindowName('你的窗口标题');

  while HasRun<>0 do

  begin

    if MsgBox('安装程序检测到你的应用程序正在运行。' #13#13 '您必须先关闭它然后单击“是”继续安装,或按“否”退出!', mbConfirmation, MB_YESNO) = idNO then

    begin

      Result := false;

      HasRun := 0;

    end

    else

    begin

      Result := true;

      HasRun := FindWindowByWindowName('你的窗口标题');

    end;

  end;

end;

 

function InitializeUninstall(): Boolean;

begin

  HasRun := FindWindowByWindowName('你的窗口标题');

  if HasRun<>0 then

  begin

    MsgBox('卸载程序检测到你的应用程序正在运行。' #13#13 '请先退出你的应用程序,然后再进行卸载!', mbError, MB_OK);

    Result := false;

  end

  else

    Result := true;

end;

posted on 2008-06-12 15:25 阅读(5367) 评论(2)  编辑 收藏 引用 所属分类: c/c++基础知识

FeedBack:
# re: 在Inno Setup制作的安装包中利用Pascal脚本检查安装,卸载前检查程序是否已经启动。
2013-04-15 12:23 | cv
cvb  回复  更多评论
  
# re: 在Inno Setup制作的安装包中利用Pascal脚本检查安装,卸载前检查程序是否已经启动。
2013-04-15 12:31 | cv
@cv
shenmea
  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理



<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿(17)

随笔分类(138)

随笔档案(137)

网络开发

最新随笔

搜索

  •  

积分与排名

  • 积分 - 494360
  • 排名 - 36

最新随笔

最新评论

阅读排行榜

评论排行榜