打包成 exe 安装程序的工具有:innoSetup、HofoSetup、NSIS 等。
innoSetup:用过
NSIS:没用过
HofoSetup:简单方便,但是收费
Inno Setup 编程技术:https://blog.csdn.net/u011287646/article/details/81629252
一、基本概念:https://blog.csdn.net/wulei0605/article/details/7244708
1、段:每个段控制一个不同方面的安装程序部分。每个段用包含在括号 [] 中的段名开始,每个段里面是一些相关的条目。
2、常量:脚本中的项目大部分可以嵌入常量。这些预定义的字符被包含在括弧 { } 中。
a、{app} :目录常量
b、{win} :系统的 Windows 目录
c、{sys} :系统的 Windows System 目录
d、{src} :安装程序文件所在目录
e、{sd} :Windows 系统所在的驱动器。一般来说是“C:”。
等等。。。
3、
二、inno Setup 基础配置:【inno Setup 5.xx 和 6.xx 有的配置有点不一样的】 https://www.cnblogs.com/barrysgy/archive/2011/11/15/2249783.html 或 https://www.cnblogs.com/yplong/p/3721334.html
1、宏定义 常量:
#define MyAppName "我的app"
2、配置:
;这儿以行来分 不区分大小写 [Setup] ;AppName的值会出现在 安装开始界面 "欢迎使用AppName安装向导" AppName=InnoExample ;AppVerName的值会出现在 安装开始界面 "现在将安装AppVerName到你的电脑中." 如果没这个字段就会用AppName值代替 ;AppVerName 与 AppVersion 最少要有一个 AppVerName=My Inno Example Version 1.0 ;AppVersion设置应用程序版本号 因为应用程序里面可能有好多个程序 整体有个版本, 在卸载程序时有版本号就是这个版本了 可不填写 AppVersion=1.0.0.0 ;版权 要设置windowvisible才能在右下角看到 ;AppCopyright=版权所有(C) 2011, sgy.com ;windowvisible会在安装程序背后设置一个大的窗口 而不是对话框形式 ;WindowVisible=true ;下面三个都是在添加删除程序时才能看到的信息 ;AppPublisher=heromyth ;AppPublisherURL=http://www.sgy.com ;AppContact=barrysgy@yahoo.com.cn ;defaultdirname是默认安装的文件 {pf}表示为c:programe files DefaultDirName={pf}MyCompanyInnoExample ;DefaultGroupName是默认组的名字(开始菜单里面的名字) ;后面用{group}引用 设置开始菜单里面文件夹名文件名 DefaultGroupName=MyCompanyInnoExample ;outputbasefilename是安装文件的文件名 扩展名自动为.exe OutputBaseFilename=InnoExample_setup ;compression是压缩算法 lzma2是lzma的改进版, 是7-zip的算法 如果不指定算法 默认用lzma2/max Compression=lzma2 ;安装的图标 SetupIconFile={app}pic.ico ;安装文件鼠标放上去时显示的版本号(应该是指安装版本) VersionInfoVersion=1.0.0.0 ;公司名 VersionInfoCompany=mycompany ;版本信息描述 VersionInfoDescription=example Setup ;右击安装文件->属性->版本->产品版本 所显示的版本号(指里面软件版本吧) VersionInfoTextVersion=1, 0, 0, 0 ;安装时左侧的图 只能用bmp格式的位图 jpg矢量图不行 164x314 不是这么大小的, 会缩放拉伸 WizardImageFile={app}dog.bmp ;下面这个componets是选择安装(如果不用选择安装,可以不要) ;先这边声明, 后面在[Files]里面, 加个componets:名字 就能设置他在这个组件里面了 [components] ;name随便取了, 到下面关键字componets后面再引用 ;types可以填写full compact custom ;flags是标记 fixed是安装时必选 Name: main; Description:"主程序(必选)"; Types:full compact custom; Flags: fixed Name: help; Description:"帮助文件"; Types: full Name: "helpenglish"; Description: "English"; Types: full Name: "helpchinese"; Description: "简体中文"; Types: full ;用户定制任务 [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked ;选择了组件才会出现的定制任务 ;Name: "Tasks_3" ; Description:"用户自定义任务";Components: helpenglish; Flags: unchecked [files] ;source表示源 destdir表示安装目的, ;flages是个多选可填的ignoreversion就是不查看目的路径的版本号, 全部替换. ;flages里面可以控制如果版本号比当前高是否替换, 或卸载时 有些mfc共享dll是否删除等等 Source: "{app}cmd.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "{app}配置.ini"; DestDir: "{app}"; Flags: ignoreversion ;Components是设置安装时属于哪个组件 如果前面没选就不会安装了 Source: "{app}英文帮助.txt"; DestDir: "{app}"; Flags: ignoreversion; components:helpenglish Source: "{app}中文帮助.txt"; DestDir: "{app}"; Flags: ignoreversion; components:helpchinese ;isreadme可以用来安装完再设置 ;Source: "{app} eadme.txt"; DestDir: "{app}"; Flags: ignoreversion isreadme; Source: "{app} eadme.txt"; DestDir: "{app}"; Flags: ignoreversion ;封装整目录及子目录里面的文件 ;Source: "{app}*.*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs; ;run在安装结束前运行 [Run] ;postinstall 是显示一个checkbox, shellexec是调用shell执行, 如果不是可执行文件可以调用 ;skipifsilent 告诉程序如果安装程序在后台运行 则跳过这个条目 ;run时要等上一个处理结束才处理下一个, nowait才继续下一个 Filename: "{app} eadme.txt"; Description: "查看自述文件"; Flags: postinstall shellexec skipifsilent Filename: "{app}cmd.exe"; Description: "运行应用程序"; Flags: postinstall nowait skipifsilent unchecked ;Filename: "http://www.cnblogs.com"; Description: "访问cnblogs"; Flags: postinstall shellexec skipifsilent ;在安装目录下面新建一个文件夹可以用来放数据什么的 ;[dirs] ;Name: "{app}data" ;icon是设置快捷方式的 包括桌面, 开始菜单, 快速启动栏 [Icons] ;name是快捷方式名字, iconfilename可以是ico或exe或dll, Commnet是鼠标放上去时的提示 Name: "{group}打开cmd"; Filename: "{app}cmd.exe"; Comment:"我的快捷方式" Name: "{group}打配置"; Filename: "{app}配置.ini"; Name: "{group}{cm:UninstallProgram, InnoExample}"; Filename: "{uninstallexe}"; ;WorkingDir是目标起始位置 Name: "{userdesktop}打开cmd"; Filename: "{app}cmd.exe"; WorkingDir: "{app}"; Tasks: quicklaunchicon ;这是调用custommessages的 Name: "{group}{cm:NameAndVersion, 我的, 是吗?}"; Filename: "{app}cmd.exe"; ;只有选择了任务才会执行 Name: "{userappdata}MicrosoftInternet ExplorerQuick LaunchMyCmd"; Filename: "{app}cmd.exe"; Tasks: quicklaunchicon ;语言选择 ;[languages] ;Name: "cn"; MessagesFile: "compiler:Default.isl" ;Name: "en"; MessagesFile: "compiler:LanguagesEnglish.isl" ;用户自定消息(字符串) 用时可以用{cm:名字, 第一个参数, 第二数...} ;%1与后面空格到调用时也会显示为空格的 [CustomMessages] ;如果上面定义了语言中文为cn 英文为en 自己定义消息时可以加个言前缀 ;cn.NameAndVersion=%1 版本 %2 ;en.NameAndVersion=%1 copyright %2 NameAndVersion=%1 版本 %2 AdditionalIcons=附加快捷方式: CreateDesktopIcon=创建桌面快捷方式(&D) CreateQuickLaunchIcon=创建快速运行栏快捷方式(&Q) ProgramOnTheWeb=%1 网站 UninstallProgram=卸载 %1 LaunchProgram=运行 %1 AssocFileExtension=将 %2 文件扩展名与 %1 建立关联(&A) AssocingFileExtension=正在将 %2 文件扩展名与 %1 建立关联... 下载inno setup例子 inno setup汉化 5.31 Inno Setup Unpacker 网上找, 可以解压inno setup安装包
3、补充配置:
inno 默认配置 外 添加 功能的配置:
1、安装时写入注册表:https://www.cnblogs.com/wainiwann/p/10724696.html
[registry] ;本段处理程序在注册表中的键值 Root:HKCR64;Subkey:party;ValueType: string;ValueData:"party";Flags: uninsdeletevalue Root:HKCR64;Subkey:party;ValueType: string; ValueName:URL Protocol;ValueData:{app}electron-vue.exe;Flags: uninsdeletevalue Root:HKCR64;Subkey:partyshellopencommand;ValueType: string;ValueData:"""{app}electron-vue.exe"" ""%1""";Flags: uninsdeletevalue
2、先卸载 再 安装:https://www.cnblogs.com/liujx2019/p/10516255.html
3、