作者:傲慢与偏见
原文标题:利用Inno Setup在VS编译时自动构建安装包
原文链接:https://www.cnblogs.com/chonglu/p/17566940.html

欢迎网友们投稿技能类文章,题材不限,没有稿费...
很多C/S开拓领域的同学或多或少都可能会碰着须要制作安装包的场景,打包的工具也是五花八门,例如有NSIS、InstallShield、Wix Toolset、ClickOnce等等,这里以Inno Setup为例大略演示下如何构建安装包,以及在Visual Studio中编译程序时自动去构建这个安装包。
2. 操作演示Tips:如果是想自动化构建,建议先从文章尾部开始看起,前面只是大略演示如何手动构建
2.1. 辞官网下载Inno Setup打包工具点击 Inno Setup Downloads[1] 下载:
下载完手动放进Inno Setup安装目录下的Languages目录下即可
Application main executable file: 运用程序主程序
Other application files: 主程序所依赖的项目或第三方依赖等,这里建议直接选择输出目录
若你程序用不上这个功能一样平常不用勾选。
2.8. 运用程序快捷办法创建官方默认是不供应中文措辞包的,但官网上有第三方用户供应和掩护了中文包,有须要的可以在 Inno Setup Translations[3]下载,然夹帐动放进Inno Setup安装目录下的Languages下即可,链接前面也提到过。
2.12. 安装包设置至此,一个大略单纯的安装包制作完成。
但....这并不是本篇的主题。显而易见,如果每次程序有改动,就须要去Inno Setup的编辑器手动实行编译一下天生安装包,有些繁琐。
3. 自动化构建安装包3.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 \"大众Inno SetupSample.exe\公众#define MyAppVersion GetVersionNumbersString(\公众..\output\Inno SetupSample.exe\"大众)[Setup]; #define MyAppVersion GetVersionNumbersString(\"大众E:\01-项目代码\YZS\KJT\trunk\KJT\bin\KJT.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}\KJTDefaultGroupName={#MyAppName}DisableProgramGroupPage=yes; Uncomment the following line to run in non administrative install mode (install for current user only.);PrivilegesRequired=lowestOutputBaseFilename=KJTStepSetupIconFile=AppICon.icoCompression=lzmaSolidCompression=yesWizardStyle=modernOutputDir=..\Publish[Languages]Name: \"大众Chinese\"大众; MessagesFile: \"大众compiler:Languages\中文简体.isl\公众[Files]Source: \"大众..\bin\{#MyAppExeName}\公众; DestDir: \"大众{app}\"大众; Flags: ignoreversionSource: \公众..\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
3.2. 把Inno Setup的安装目录拷贝一下放到工程目录
里面有些无用的可以删掉,减小体积,可以参考以下
参考命令:
IF \公众$(ConfigurationName)\"大众 == \公众Release\"大众 (\"大众$(SolutionDir)DevOps\InnoSetup\ISCC.exe\"大众 \"大众$(SolutionDir)DevOps\InnoSetup\KJTStep.iss\公众 start explorer /select,\"大众$(SolutionDir)DevOps\Publish\\"大众)
为防止影响调试,可以加个判断,只有Release模式编译项目则实行命令,该命令的意思便是通过调用办理方案下的ISCC程序传入安装包脚本从而构建编译出一个最新的安装包,末了再调起文件资源管理器打开安装包目录。
4. 效果演示每次须要发布新版本时,将办理方案切换为Release模式编译,F6 Build一下,安装包就自动天生出来了,这里只是抛砖引玉给个思路,可以多阅读下官方文档实现出更为完美的安装包。
Tips:为避免编写代码调试时编译速度过慢,最好还是要在天生后事宜中加上Release模式的判断,当办理方案中有很多个项目时,或编译目录依赖文件过多的情形下,Inno Setup构建的会有点慢。
5. 结语Visual Studio中的天生事宜实在是一个很实用的东西,可以在编译前、编译后自动化实行一些常常须要人为手工操作的事,比如还可以利用天生后事宜进行代码稠浊,本篇文章就暂时不展开细说了。
如果在实际操作中碰着缺点或有疑问,以及更好的建议可以在评论中互换..
6. 附录Inno Setup官网:https://jrsoftware.org/
Inno Setup编辑器:https://jrsoftware.org/isdl.php
Inno Setup措辞包:https://jrsoftware.org/files/istrans/
Inno Setup文档:https://jrsoftware.org/ishelp/
Inno Setup Downloads: https://jrsoftware.org/isdl.php
[2]Inno Setup Translations: https://jrsoftware.org/files/istrans/
[3]Inno Setup Translations: https://jrsoftware.org/files/istrans/