1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Inno Setup制作安装包教程

Inno Setup制作安装包教程

时间:2021-11-01 19:22:20

相关推荐

Inno Setup制作安装包教程

Inno Setup Compiler汉化版启动软件后的界面:

选择“创建新的空白脚本文件”,点击【新建】空白脚本

直接【下一步】:

填好各项目内容然后【下一步】

在应用程序基本目的目录的下拉选项里包括:【程序应用文件夹】和【自定义】,可自定义安装路径;程序应用文件夹就是将文件安装到: C:\Program Files\,其他的就相应的填.然后【下一步】

这一步要注意,在图中的1处填上主程序文件(建议用浏览的方法),然后按添加文件,添加要安装在C:\Program Files\ePSXe里的文件.再按添加目录(只能一个个添加,要是子目录多就烦了).把要安装的目录全部添加完后,记住一定要编辑所添加的目录,要不全部文件都会安装在C:\Program Files\ePSXe里!步骤是:在2里选添加的目录后按编辑

这里可以取消[允许用户在安装完成后启动应用程序],使程序安装完成后不自动运行;若要使程序在安装完成后自动运行,须在制作生成安装包前修改InnoSetup的编译脚本,否则程序首次自运行时会出错!具体脚本编译见下文

在1处填上子止录的名称,在2里还有其它选择,可以将其它的一些文件安装在WINDOWS,SYSTEM等其它目录里

其它的目录同样方法设置好,接着【下一步】

【下一步】

填好就【下一步】

【下一步】

【下一步】

然后按【完成】,程式问你是否对脚本进行编译,要你觉得可以了,那就让它编译,就会生成一个SETUP.EXE文件,大功就告成了!若你想修改修改那就按否,可以对脚本进行修改(比如在注册表加信息,在程序组加一个选项等等),当然就要知道它的语法了!一听到语法也许你就怕,其实它的语法是不难的,在帮助里一下就能看明白.只要你学过一点点编程.再说,大部分的东东已自动生成了.正好,我这个例子要在程序组里加一个英文版的快捷方式,且要修改快捷方式的工作目录!要不然,程序在用快捷方式启动后工作不了!(因为此程序要在快捷方式的工作目录里找其它文件!建议制作安装程序都修改工作目录,以免不正常)

脚本修改完成后,【编译】,然后会在之前指定的程序生成路径中生成安装文件!

至於语法,可在【帮助】的Inno Setup帮助资料里找到;

脚本编译相关的问题:

1、要在程序组里加一个英文版的快捷方式,且要修改快捷方式的工作目录!要不然,程序在用安装完成后自启动用快捷方式启动时工作不了!(因为此程序要在快捷方式的工作目录里找其它文件!建议制作安装程序都修改工作目录,以免不正常)

修改前:

...

[Icons]

Name: "{group}\ePSXe 1.50 汉化版"; Filename: "{app}\p-epsxe.exe"

Name: "{userdesktop}\ePSXe 1.50 汉化版"; Filename: "{app}\p-epsxe.exe"; MinVersion: 4,4; Tasks: desktopicon

...

修改后:

...

[Icons]

Name: "{group}\ePSXe 1.50 汉化版"; Filename: "{app}\p-epsxe.exe"; WorkingDir: "{app}"

Name: "{group}\ePSXe 1.50 英文版"; Filename: "{app}\epsxe.exe"; WorkingDir: "{app}"

Name: "{userdesktop}\ePSXe 1.50 汉化版"; Filename: "{app}\p-epsxe.exe"; MinVersion: 4,4; Tasks: desktopicon; WorkingDir: "{app}"

...

2、要在注册表加信息

...

[Registry]

Root: HKCU; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty

Root: HKCU; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey

Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty

Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey

Root: HKLM; Subkey: "Software\My Company\My Program"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"

...

3、使安装64位程序的默认路径为C:\Program Files\而不是C:\Program Files(X86)\

只要在inno setup的脚本中加入【ArchitecturesInstallIn64BitMode=x64 】

4、安装的程序在卸载时,如何判断该应用程序是否运行

InnoSetup 提供变量AppMutex,用来保存应用程序的Mutex名称。现在很多应用程序都是唯一实例运行。这样避免配置文件被错误修改以及其他很多衍生问题。通常都会用WindowsAPI CreateMuex来创建一个Mutex;安装包卸载时会判断AppMutex是否已经被占用。如果被占用则等待并提示用户关闭应用程序;如果应用程序正在运行,通常该exe文件和被使用的dll是不会被删除的,卸载不完全。

在Inno Setup Compile 配置中,将MyProgramsMutexName 定义为 "应用程序名-A75DEC53-783F-4425-8431-24D83BD4CE5F" 该字符串需要在被打包的EXE文件中使用。

#define MyProgramsMutexName "应用程序名-A75DEC53-783F-4425-8431-24D83BD4CE5F"

[Setup]

AppMutex={#MyProgramsMutexName}

5、安装的程序在卸载时,删除相关的文件和文件夹

if CurUninstallStep = usUninstall 判断是否正在卸载

MsgBox('Do you want to delete all config files and log files?', mbConfirmation, MB_YESNO) 用于弹出消息框,提示用户选择是否删除文件。

ExpandConstant 用于获取变量值

FileExists 用于判断文件是否存在

DeleteFile 用来删除文件

DirExists 用于检查目录是否存在

DelTree 用于删除目录和里面的文件

用法:

//删除整个安装目录文件夹,包括文件夹中的所有文件和文件夹

[Code]

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);

begin

if CurUninstallStep = usUninstall then begin

//if MsgBox('Do you want to delete all config files and log files?', mbConfirmation, MB_YESNO)=IDYES then

DelTree(ExpandConstant('{app}'), True, True, True);

end;

end;

[Code]

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);

begin

if CurUninstallStep = usUninstall then begin

//删除安装目录文件夹中的指定文件,但安装目录文件夹自身不会删除

if FileExists(ExpandConstant('{app}') + '\pass.log') then DeleteFile(ExpandConstant('{app}') + '\pass.log');

if FileExists(ExpandConstant('{app}') + '\user.log') then DeleteFile(ExpandConstant('{app}') + '\user.log');

//删除安装目录文件夹中的指定文件夹,但安装目录文件夹本身不会删除

if DirExists(ExpandConstant('{app}') + '\Users\') then DelTree(ExpandConstant('{app}') + '\Users\', true, true, true);

end;

end;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。