安装包制作的一点心得
2009-01-22 13:53
204 查看
做安装包同事放假回家了,但最后一天需要修改安装包,需要在安装前先扫描一下进程,删除已经存在的进程
,(不是询问用户,而是偷偷的干掉,没有窗口)。
一年前做过这方面的安装包,现在只好硬着头皮上了。
google了一下,知道windows系统目录下自带一个程序taskkill.exe,于是,很快写下了这个方法:
function KillTestProcess():Boolean;
var
ResultCode : Integer;
begin
Result := Exec(ExpandConstant('{sys}\taskkill.exe'), '/f /im TestProcess.exe', '', SW_HIDE, ewNoWait, ResultCode);
end;
编译,安装。进程被成功杀死。于是发布。
但是,等等,很快发现有人报告安装时找不到dll:FrameDyn.dll。
还是老规拒,google一下。
差FrameDyn.dll的人还真不少,我们不知道用户那里倒底发生了什么事,会没有这一动态库,但做为一个大众软件,我
们的目标就是让用户双击,然后就一直下一步下去,然后成功安装。因为,你每弹出的一个框,都足以让一位用户颤抖
。做为程序员,我们的目标是处理每一个已知错误。
很明显,现在我们眼前有两个解决方法:
1,下载FrameDyn.dll,在安装是判断,用户的系统目录下是否存在FrameDyn.dll,如果不存在,把这个dll复制过去,然
后再利用TaskKill.exe去杀进程,当然,在做这些事前,我建议利用Denpandency工具看一下这个taskkill.exe还有没
有依赖别的动态库。
2,自己定一个SDK程序,干掉这个要删除的进程。我就使用了这一方法。然后重写KillTestProcess函数。
1function KillTestProcess():Boolean;
2var
3 ResultCode : Integer;
4begin
5 Result := false;
6 ExtractTemporaryFile('KillTestProcess.exe');
7 if Exec(ExpandConstant('{tmp}\KillTestProcess.exe'),'','', SW_HIDE, ewWaitUntilTerminated,
8
9ResultCode) then
begin
Result := true;
end;
DeleteFile(ExpandConstant('{tmp}\KillTestProcess.exe'));
end;
问题解决,安心回家过年!
,(不是询问用户,而是偷偷的干掉,没有窗口)。
一年前做过这方面的安装包,现在只好硬着头皮上了。
google了一下,知道windows系统目录下自带一个程序taskkill.exe,于是,很快写下了这个方法:
function KillTestProcess():Boolean;
var
ResultCode : Integer;
begin
Result := Exec(ExpandConstant('{sys}\taskkill.exe'), '/f /im TestProcess.exe', '', SW_HIDE, ewNoWait, ResultCode);
end;
编译,安装。进程被成功杀死。于是发布。
但是,等等,很快发现有人报告安装时找不到dll:FrameDyn.dll。
还是老规拒,google一下。
差FrameDyn.dll的人还真不少,我们不知道用户那里倒底发生了什么事,会没有这一动态库,但做为一个大众软件,我
们的目标就是让用户双击,然后就一直下一步下去,然后成功安装。因为,你每弹出的一个框,都足以让一位用户颤抖
。做为程序员,我们的目标是处理每一个已知错误。
很明显,现在我们眼前有两个解决方法:
1,下载FrameDyn.dll,在安装是判断,用户的系统目录下是否存在FrameDyn.dll,如果不存在,把这个dll复制过去,然
后再利用TaskKill.exe去杀进程,当然,在做这些事前,我建议利用Denpandency工具看一下这个taskkill.exe还有没
有依赖别的动态库。
2,自己定一个SDK程序,干掉这个要删除的进程。我就使用了这一方法。然后重写KillTestProcess函数。
1function KillTestProcess():Boolean;
2var
3 ResultCode : Integer;
4begin
5 Result := false;
6 ExtractTemporaryFile('KillTestProcess.exe');
7 if Exec(ExpandConstant('{tmp}\KillTestProcess.exe'),'','', SW_HIDE, ewWaitUntilTerminated,
8
9ResultCode) then
begin
Result := true;
end;
DeleteFile(ExpandConstant('{tmp}\KillTestProcess.exe'));
end;
问题解决,安心回家过年!
相关文章推荐
- Asp.net 2.0使用Global.asax制作网站计数器的一点心得
- 制作Web流程图的一点心得
- B/S结构JavaEE WebApp的全自动安装包制作心得
- [原创]QQ农场外挂辅助制作一点心得体会1
- Asp.net 2.0使用Global.asax制作网站计数器的一点心得
- 转---B/S结构JavaEE WebApp的全自动安装包制作心得
- 制作Web流程图的一点心得
- .Net Web项目安装包制作 (一)
- 常见的安装包制作程序installer
- J2msi 自己制作的把exe打成安装包简易GUI程序
- (转)VS制作安装包
- nsis制作启动Tomcat服务的exe安装包教程
- Windows程序安装包制作——EasySetup
- Java桌面应用安装部署、安装程序制作(exe4j + Inno Setup)——之四:使用Inno Setup制作安装包
- Android平板上开发应用的一点心得——精确适配不同的dpi和屏幕尺寸
- 转:c# 安装包制作
- CEGUI界面编程的一点心得
- 一点心得体会
- java程序打包jre以及制作安装包
- Qt自带的软件安装包制作工具