首页 > 其他分享 >利用InnoStep在VS编译时自动构建安装包

利用InnoStep在VS编译时自动构建安装包

时间:2023-07-19 22:22:19浏览次数:49  
标签:InnoStep 目录 编译 VS Inno 安装包 Setup

摘要

很多同学在C/S开发领域或多或少都可能会遇到需要制作安装包的场景,打包的工具也是五花八门,例如有NSIS、InstallShield、Wix Toolset、ClickOnce等等,这里以Inno Setup为例简单演示下如何构建安装包,以及在Visual Studio中编译程序时自动去构建这个安装包。

操作演示

Tips:如果是想自动化构建,建议先从文章尾部开始看起,前面只是简单演示如何手动构建

1、去官网下载Inno Setup打包工具 Inno Setup Downloads

image-20230719204144401

如果有中文需求,则需下载个中文包,下载地址:Inno Setup Translations

image-20230719211435241

下载完手动放进InnoStep安装目录下的Languages下即可

image-20230719211634130

2、创建打包项目

image-20230719204600561

3、填写应用基本信息

image-20230719204650988

4、填写应用安装目录

image-20230719204733394

5、在VS中右键项目属性,更改项目输出路径,有多个项目则都改为同一个

image-20230719210202893

6、选择应用需要打包的文件

image-20230719210432376

Application main executable file:应用程序主程序

Other application files:主程序所依赖的项目或第三方依赖等,这里建议直接选择输出目录

7、应用文件类型关联

image-20230719210650630

若你程序用不上这个功能一般不用勾选

8、应用程序快捷方式创建

image-20230719210828337

9、应用协议许可文件

image-20230719210924816

10、安装模式选择

image-20230719210939884

11、安装包语言选择

image-20230719212029357

官方默认是不提供中文语言包的,但官网上有第三方用户提供和维护了中文包,有需要的可以在 Inno Setup Translations下载,然后手动放进InnoStep安装目录下的Languages下即可

12、安装包设置

image-20230719212442389

13、设置完了就会生成一个脚本

image-20230719212730969

14、编译完成,则会在目录生成一个exe文件,双击就可以进行安装

image-20230719212951486

15、安装效果

image-20230719213038649

至此,一个简易的安装包制作完成。

但....这不是本篇的主题。显而易见,如果每次程序有改动,就需要手动来Inno的编辑器手动执行一下生成安装包,有些繁琐。

自动化构建安装包

1、修改刚才创建安装包时生成的脚本文件,输出目录相关的一些,主要是将绝对路径改为相对路径,避免其它同事/电脑编译时报错,可以参考下我的脚本

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "傲慢与偏见"
#define MyAppPublisher "版权信息"
#define MyAppURL "https://www.cnblogs.com/chonglu"
#define MyAppExeName "InnoStepSample.exe"
#define MyAppVersion GetVersionNumbersString("..\output\InnoStepSample.exe")

[Setup]
; #define MyAppVersion GetVersionNumbersString("..\output\InnoStepSample.exe")
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{72EC6D66-B10E-4E61-920F-86852D3FFA91}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\KJT
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputBaseFilename=KJTStep
SetupIconFile=AppICon.ico
Compression=lzma
SolidCompression=yes
WizardStyle=modern
OutputDir=..\Publish

[Languages]
Name: "Chinese"; MessagesFile: "compiler:Languages\中文简体.isl"

[Files]
Source: "..\bin\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\bin\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

2、把InnoStep的安装目录拷贝一下放到工程目录,里面有些无用的可以删掉,减小体积,可以参考以下

image-20230719214313689

3、设置项目主程序生成后事件

image-20230719214534299

参考命令:

IF "$(ConfigurationName)" == "Release" (
    "$(SolutionDir)DevOps\InnoSetup\ISCC.exe" "$(SolutionDir)DevOps\InnoSetup\KJTStep.iss"
    start explorer /select,"$(SolutionDir)DevOps\Publish\"
)

为防止影响调试,可以加个判断,只有Release模式编译项目则执行命令,该命令的意思就是通过调用解决方案下的ISCC程序传入安装包脚本从而构建编译出一个最新的安装包,最后再调起文件资源管理器打开安装包目录

效果演示

1

每次需要发布新版本时,将解决方案切换为Release模式编译,F6 Build一下,安装包就自动生成出来了,这里只是抛砖引玉给个思路,可以多阅读下官方文档实现出更为完美的安装包。

Tips:为避免编写代码调试时编译速度过慢,最好还是要在生成后事件中加上Release模式的判断,当解决方案中有很多个项目时,或编译目录依赖文件过多的情况下,InnoStep构建的会有点慢。

结语

Visual Studio中的生成事件其实是一个很实用的东西,可以在编译前编译后自动化执行一些经常需要人为手工操作的事,比如还可以利用生成后事件进行代码混淆,本篇文章就暂时不展开细说了。

如果在实际操作中遇到错误或有疑问以及更好的建议可以在评论中交流..

附录

InnoStep官网:https://jrsoftware.org/

InnoStep编辑器:https://jrsoftware.org/isdl.php

InnoStep语言包:https://jrsoftware.org/files/istrans/

InnoStep文档:https://jrsoftware.org/ishelp/

标签:InnoStep,目录,编译,VS,Inno,安装包,Setup
From: https://www.cnblogs.com/chonglu/p/17566940.html

相关文章

  • 文心一言 VS 讯飞星火 VS chatgpt (63)-- 算法导论6.5 2题
    文心一言VS讯飞星火VSchatgpt(63)--算法导论6.52题二、试说明MAX-HEAP-INSERT(A,10)在堆A=(15,13,9,5,12,8,7,4,0,6,2,1)上的操作过程。文心一言:MAX-HEAP-INSERT(A,10)是将元素10插入到堆A中并保持堆性质的函数。下面是在堆A=(15,13,9,5,12,8,7,4,0,6,2,1)上执行MAX-......
  • Windows下将“使用VSCode打开”添加至右键菜单“
    Windows下将“使用VSCode打开”添加至右键菜单"本文转载自 Windows下将“使用VSCode打开”添加至右键菜单",特此记录收藏一下。问题:Windows上面安装VisualStudioCode编辑器后,常常会因为安装的时候忘记勾选等原因,没有将OpenwithCode(右键快捷方式)"添加到鼠标右键菜单里,所......
  • CocosCreator + Vscode + Ts 代码注释生成文档,利用typedoc
    需求:脚本的代码注释,生成为文档基本搭建环境:(cocoscreator2.4.x+vscode+ts)、(nodejs+npm)步骤:1、安装typedoc:npminstall-gtypedoc2、项目根目录添加/创建typedoc.json文件3、然后再项目tsconfig.json文件加入(4步骤报错可选)"downlevelIteration":true4、......
  • vscode import 点击ctrl + 右键 进入当前文件
    项目根目录:jsconfig.jsonimportimportTablefrom"./importTable";//.vue点击不进去,.js可以点击进去,需要带上./importTable.vue{"compilerOptions":{"target":"es6","baseUrl":".","paths":......
  • uniapp专栏 —— vscode报错 'uni' is not defined.
    写在前面这些内容基于通过cli搭建的uniapp项目,使用了vite4,ts4.9,vue3(组合式API,setup语法糖)。如果有版本不一致,请谨慎参考。正文uni是一个全局变量,但是eslint没有识别到。避免这个错误报错在.eslintrc.js文件中加上配置globals:{uni:true},......
  • Vscode Python Workspace 设定流程
    这里记录一下,使用vscode编写一个Python项目时,个人觉得比较舒服的配置方法:预先准备首先保存项目文件夹为工作区,获得xxx.code-workspace文件,以后通过它打开工作区。禁用不需要的插件。Python虚拟环境使用虚拟python环境可以把项目的依赖项安装到项目文件夹下,不会“污......
  • 文心一言 VS 讯飞星火 VS chatgpt (62)-- 算法导论6.5 1题
    文心一言VS讯飞星火VSchatgpt(62)--算法导论6.51题一、试说明HEAP-EXTRACT-MAX在堆A=(15,13,9,5,12,8,7,4,0,6,2,1)上的操作过程。文心一言:HEAP-EXTRACT-MAX是堆排序算法中的一部分,用于从堆中提取最大值并保持堆的性质。下面是在堆A=(15,13,9,5,12,8,7,4,0,6,2,1)上执行H......
  • 文心一言 VS 讯飞星火 VS chatgpt (62)-- 算法导论6.5 1题
    文心一言VS讯飞星火VSchatgpt(62)--算法导论6.51题一、试说明HEAP-EXTRACT-MAX在堆A=(15,13,9,5,12,8,7,4,0,6,2,1)上的操作过程。文心一言:HEAP-EXTRACT-MAX是堆排序算法中的一部分,用于从堆中提取最大值并保持堆的性质。下面是在堆A=(15,13,9,5,12,8,7,4,0,6,2,1)上执......
  • C语言多文件编译(vs.code)
    C语言多文件编译(vs.code)1.保证已经进行完第一步:配置C语言环境如果还未进行,建议来这里查看2.在扩展商店下载插件C/C++ProjectGeneratorCMakeCMakeTools3.修改settings.json也可以直接用快捷键ctrl+,搜索coderunner并找到ExecutorMap在settings.json中编辑找到......
  • .Net Framework 离线安装包
    .NETFramework2.0ServicePack1x86:https://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exex64:https://download.microsoft.com/download/9/8/6/98610406-c2b7-45a4-bdc3-9db1b1c5f7e2/NetFx20SP1_x64.exe.NETFram......