现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

Inno Setup 打包工具总结

2013-09-17 22:29 工业·编程 ⁄ 共 1245字 ⁄ 字号 暂无评论

最近打包用到了Inno setup,在这个过程中容易犯一些低级错误,特别写出来已提醒自己

1.打包文件夹

打包文件按照向导来一般没什么问题,但文件夹就不一样了。向导生成的打包文件夹的代码如下:
Source: "D:MyProject/XX/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 

它解压时直接把XX目录下的所以文件拷贝到安装目录下,而没有生成XX目录,程序如果要引用XX目录下的文件就会出现错误。

我改成这样就不会有事了(也许向导可以生成,我还不清楚)

[plain] view plaincopy
Source: "D:MyProject/XX/*"; DestDir: "{app}/XX"; Flags: ignoreversion recursesubdirs createallsubdirs 

2.桌面图标

向导默认生成的代码不会给你的应用程序加上图标,同时也不会在开始程序菜单里加上卸载程序的快捷方式
Name: "{group}/XX"; Filename: "{app}/XX.exe"  
Name: "{group}/{cm:UninstallProgram,XX}"; Filename: "{uninstallexe}"  
Name: "{commondesktop}/XX"; Filename: "{app}/XX.exe";IconFileName:"{app}/res/XX.ico"; Tasks: desktopicon 

 

在Icons下添加这些代码就可以做到。

3.安装程序时要注册某些ocx控件或DLL

我自己的做法是些一个bat脚本来注册ocx或者dll,放在自动Run下,在程序运行之前运行它。当然Inno setup里面也有这样的脚本代码

4.如果程序运行需要一些组件支持,比如.NetFrameWork,在解压时就要检测系统是否安装了.NetFrameWork
[code]  
function CheckDotNet4_0():boolean;  
begin  
Result:=not RegKeyExists(HKLM, 'SOFTWARE/Microsoft/.NETFramework/policy/v4.0');  
end;  
 
function InitializeSetup(): Boolean;  
var Path:string;  
ResultCode: Integer;  
begin  
if CheckDotNet4_0() then  
begin  
ExtractTemporaryFile('dotNetFx40_Full_x86_x64.exe');  
Exec(ExpandConstant('{tmp}/dotNetFx40_Full_x86_x64.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);  
end  
end;  

给我留言

留言无头像?