Inno Setup 打包工具总结(转)

简介: 最近打包用到了Inno setup,在这个过程中容易犯一些低级错误,特别写出来已提醒自己 1.打包文件夹 打包文件按照向导来一般没什么问题,但文件夹就不一样了。向导生成的打包文件夹的代码如下: [plain] view plaincopy Source: "D:MyProject/XX/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs   它解压时直接把XX目录下的所以文件拷贝到安装目录下,而没有生成XX目录,程序如果要引用XX目录下的文件就会出现错误。

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

1.打包文件夹

打包文件按照向导来一般没什么问题,但文件夹就不一样了。向导生成的打包文件夹的代码如下:

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


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

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

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


2.桌面图标

向导默认生成的代码不会给你的应用程序加上图标,同时也不会在开始程序菜单里加上卸载程序的快捷方式

[plain] view plain copy
  1. Name: "{group}/XX"; Filename: "{app}/XX.exe"   
  2. Name: "{group}/{cm:UninstallProgram,XX}"; Filename: "{uninstallexe}"   
  3. 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

[plain] view plain copy
    1. [code]   
    2. function CheckDotNet4_0():boolean;   
    3. begin   
    4. Result:=not RegKeyExists(HKLM, 'SOFTWARE/Microsoft/.NETFramework/policy/v4.0');   
    5. end;   
    6.   
    7. function InitializeSetup(): Boolean;   
    8. var Path:string;   
    9. ResultCode: Integer;   
    10. begin   
    11. if CheckDotNet4_0() then   
    12. begin   
    13. ExtractTemporaryFile('dotNetFx40_Full_x86_x64.exe');   
    14. Exec(ExpandConstant('{tmp}/dotNetFx40_Full_x86_x64.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);   
    15. end   
    16. end;   
目录
相关文章
|
JavaScript
Syntax Error: Error: Cannot find module ‘node-sass‘
Syntax Error: Error: Cannot find module ‘node-sass‘
599 0
|
9月前
|
人工智能 开发框架 机器人
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
AstrBot 是一个开源的多平台聊天机器人及开发框架,支持多种大语言模型和消息平台,具备多轮对话、语音转文字等功能。
5346 38
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
|
7月前
|
存储 人工智能 JSON
AI智能体内战终结者!A2A:谷歌开源的首个标准智能体交互协议,让AI用同一种“语言”交流
A2A是谷歌推出的首个标准化智能体交互协议,通过统一通信规范实现不同框架AI智能体的安全协作,支持多模态交互和长时任务管理,已有50多家企业加入生态。
628 0
AI智能体内战终结者!A2A:谷歌开源的首个标准智能体交互协议,让AI用同一种“语言”交流
|
10月前
|
缓存 JSON 数据处理
Python进阶:深入理解import机制与importlib的妙用
本文深入解析了Python的`import`机制及其背后的原理,涵盖基本用法、模块缓存、导入搜索路径和导入钩子等内容。通过理解这些机制,开发者可以优化模块加载速度并确保代码的一致性。文章还介绍了`importlib`的强大功能,如动态模块导入、实现插件系统及重新加载模块,展示了如何利用这些特性编写更加灵活和高效的代码。掌握这些知识有助于提升编程技能,充分利用Python的强大功能。
569 4
|
JSON 网络协议 Java
通过内网穿透快速搭建公网可访问的Spring Boot接口调试环境
通过内网穿透快速搭建公网可访问的Spring Boot接口调试环境
|
存储 缓存 并行计算
DP读书:鲲鹏处理器 架构与编程(四)内存顺序模型与内存屏障
DP读书:鲲鹏处理器 架构与编程(四)内存顺序模型与内存屏障
325 1
|
Windows 程序员 Perl
汇编语言 标志位介绍
一、运算结果标志位 1、进位标志CF(Carry Flag) 进位标志CF主要用来反映运算是否产生进位或借位。
2056 0
|
Ubuntu Unix Java
ubuntu如何下载64位Intel
不同的linux发现版厂商习惯性命名64位的方式不一样: ubuntu习惯上称64位为“amd64” fedora习惯上称64位架构为“x86_64”
454 0
|
机器学习/深度学习 人工智能 Kubernetes
PAI-DLC 深度学习训练平台介绍|学习笔记
快速学习 PAI-DLC 深度学习训练平台介绍。
945 0
PAI-DLC 深度学习训练平台介绍|学习笔记
|
Ubuntu 网络协议 Linux
【VsCode远程开发】Windows SSH远程连接Linux服务器 - 无公网IP内网穿透(1)
前言 远程连接服务器工具有很多,比如XShell、putty等,可以通过ssh来远程连接服务器,但这用于写代码并不方便,可能需要现在本地写好代码后再将源代码传送到服务器运行、服务器上的图片也无法直接查看…
545 0