InnoSetup打包详解

VBA说

共 4539字,需浏览 10分钟

 · 2021-01-27

▎关于打包的目的和原理


VSTO插件开发完成后,为了更好的分发给用户进行安装使用,需要进行对插件打包的过程。



打包的目的有两个:①对插件使用到的文件封装成exe②修改注册表,达到使插件自动加载的目的。




其中第二条,打包的时候修改注册表。针对不同的程序,修改的注册表内容不同。



▶Excel:修改HKEY_CURRENT_USER,Software\Microsoft\Office\Excel\Addins路径下的内容。比如我的插件叫Exceltools,我就要对以下条目进行相应修改。

 RegWriteStringValue(HKEY_CURRENT_USER,'Software\KingSoft\Office\ET\AddinsWL','exceltools','') RegWriteStringValue(HKEY_CURRENT_USER, 'Software\Microsoft\Office\Excel\Addins\exceltools',  'Description''exceltools'); RegWriteStringValue(HKEY_CURRENT_USER, 'Software\Microsoft\Office\Excel\Addins\exceltools',  'FriendlyName''exceltools'); RegWriteDWordValue(HKEY_CURRENT_USER, 'Software\Microsoft\Office\Excel\Addins\exceltools',  'LoadBehavior'3); RegWriteStringValue(HKEY_CURRENT_USER, 'Software\Microsoft\Office\Excel\Addins\exceltools',  'Manifest',ExpandConstant('{app}')+'\exceltools.vsto|vstolocal');


其中下面这一条是为了WPS成功加载插件

RegWriteStringValue(HKEY_CURRENT_USER,'Software\KingSoft\Office\ET\AddinsWL','exceltools','')



如果是Word插件,将上面的Excel改成Word即可。PowerPoint插件,将上面的Excel改成PowerPoint即可。




AutoCAD:修改HKEY_LOCAL_MACHINE,'SOFTWARE\Autodesk\AutoCAD\R19.1\ACAD-D001:804\Applications\路径下的内容。


比如我的插件叫CADTools,我就要对以下条目进行相应修改。

RegWriteStringValue(HKEY_LOCAL_MACHINE,'SOFTWARE\Autodesk\AutoCAD\R19.1\ACAD-D001:804\Applications\CADTools','LOADER',ExpandConstant('{app}')+'\CADTools.dll');RegWriteStringValue(HKEY_LOCAL_MACHINE,'SOFTWARE\Autodesk\AutoCAD\R19.1\ACAD-D001:804\Applications\CADTools','DESCRIPTION', '使CADTools随CAD启动!');RegWriteDWordValue(HKEY_LOCAL_MACHINE,'SOFTWARE\Autodesk\AutoCAD\R19.1\ACAD-D001:804\Applications\CADTools','LOADCTRLS', 2);RegWriteDWordValue(HKEY_LOCAL_MACHINE,'SOFTWARE\Autodesk\AutoCAD\R19.1\ACAD-D001:804\Applications\CADTools','MANAGED', 1);


其中R19.1\ACAD-D001:804代表的是AutoCad的版本。根据不同的版本修改相应的注册表路径。


序号版本号1版本号2描述
1R15.01:8042002中文版
2R15.01:4092002英文版
3R16.0201:8042004中文版
4R16.0201:4092004英文版
5R16.1301:8042005中文版
6R16.1301:4092005英文版
7R16.24001:8042006中文版
8R16.24001:4092006英文版
9R17.05001:8042007中文版
10R17.05001:4092007英文版
11R17.16001:8042008中文版
12R17.16001:4092008英文版
13R17.27001:8042009中文版
14R17.27001:4092009英文版
15R18.08001:8042010中文版
16R18.08001:4092010英文版
17R18.19001:8042011中文版
18R18.19001:4092011英文版
19R18.2A001:8042012中文版
20R18.2A001:4092012英文版
21R18.08001:804AutoCAD 2010
22R18.19001:804AutoCAD 2011
23R18.2A001:804AutoCAD 2012
24R19.0B001:804AutoCAD 2013
25R19.1D001:804AutoCAD 2014
26R20.0E001:804AutoCAD 2015




e55c037b60bd862c26566780a360c916.webp



▎InnoSetup常见语句解析



[Setup]常规参数

#define MyAppName "CADTools"#define MyAppVerName "CADTools 1.0"[Setup]//插件名AppName={#MyAppName}//版本AppVerName={#MyAppVerName}//版本号AppVersion=1.0VersionInfoProductName=CADTools//默认安装路径DefaultDirName= "d:\Program Files\CADTools"     DisableDirPage=noDisableProgramGroupPage=yesDefaultGroupName=CADToolsOutputDir=.//安装包图标SetupIconFile=A.icoOutputBaseFilename=CADToolsWindowShowCaption=noDisableWelcomePage=no//控制面板卸载界面图标UninstallDisplayIcon= {app}\A.ico//安装界面左侧图片WizardImageFile =Office2007.bmp//安装界面右上角小logoWizardSmallImageFile=A.bmp//发布者名称 AppPublisher=VBA说 //禁止64位系统写入注册表时的重定向ArchitecturesInstallIn64BitMode=x64 ia64



安装完成之后运行指定程序

[Run]Filename: "{app}\GAME.exe"; Flags: nowait skipifsilentnowait – 不等待完成就处理下一个条目。skipifsilent — 如果后台运行则不提示点击“完成”。


安装包使用中文

[Languages]Name: "chinesesimplified"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"



把安装自动注册dll文件

dll文件放到安装目录下顺便注册[Files]Source: "..\x64\Release\sdUkey.dll"; DestDir: "{app}"; Flags: ignoreversion  restartreplace uninsrestartdelete regserver



安装过程静默安装第三方安装包

释放安装包到安装目录后执行安装相关函数[Files]Source: ".\ePass3003-SimpChinese.exe"; DestDir: "{tmp}"; AfterInstall: RunInstaller执行的函数内容[Code]procedure RunInstaller;var  ResultCode: Integer;begin  if not Exec(ExpandConstant(CurrentFileName), '/S', '', SW_SHOWNORMAL   ,    ewWaitUntilTerminated, ResultCode)  then    MsgBox('Other installer failed to run!' + #13#10 +      SysErrorMessage(ResultCode), mbError, MB_OK);end



相关目录说明


目录

目录说明

{tmp}

第三方安装包安装过程存放临时文件的

{app}

用户选择的安装目录

{sys}

系统目录system32或者sysWOW64目录





e55c037b60bd862c26566780a360c916.webp






▎InnoSetup打包作品欣赏



作品一:自动检测VSTO运行环境


VSTO插件需要两个必备运行环境:Microsoft .NET Framework 或者更高Visual Studio 2010 Tools for Office Runtime。兼容性问题Microsoft .NET Framework我们一般选择4.0或者更高。



思路:

用注册表判断Framework4.0是否存在;

用注册表判断Office版本,来间接判断是否需要安装Visual Studio 2010 Tools for Office Runtime(因为Excel2013或者更高版本,无需安装该环境)。



下面的插件可以自动检测以上两个环境,如果本机未安装,则直接网上下载,引导用户安装。


17069efbc471dd428a20a609c4d1c398.webp





作品二:美化安装界面(仿有道云笔记)


辛苦搜集到的一个美化模板,仿有道云笔记安装过程的。可以根据自己的需求更改里面的图片素材定制。


c2a7db9c496013715ef599235786970c.webp




作品三:美化安装界面(仿QQ2013)


仿QQ2013的安装界面,同上一个例子,修改图片素材即可。


e42808ce19380caa8d8c702a5214fc8b.webp




作品四:美化安装界面(简单美化)


 0e7434d09d1b1403e750f60f6f1a771f.webp

①开始安装



9e1388170268ba3e4b10f7c7a19c4c49.webp

②安装过程



df121f5f29eebb8674ff2e35c0387deb.webp

③安装完成




39948f537285e6a3da186010f26f2138.webp

④卸载界面





知识无价,时间无价,需要以上InnoSetup打包模板的可私信作者付费分享。







推荐阅读:(点击下方标题即可跳转)


浏览 59
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报