InnoSetup打包详解

▎关于打包的目的和原理

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 描述
1 R15.0 1:804 2002中文版
2 R15.0 1:409 2002英文版
3 R16.0 201:804 2004中文版
4 R16.0 201:409 2004英文版
5 R16.1 301:804 2005中文版
6 R16.1 301:409 2005英文版
7 R16.2 4001:804 2006中文版
8 R16.2 4001:409 2006英文版
9 R17.0 5001:804 2007中文版
10 R17.0 5001:409 2007英文版
11 R17.1 6001:804 2008中文版
12 R17.1 6001:409 2008英文版
13 R17.2 7001:804 2009中文版
14 R17.2 7001:409 2009英文版
15 R18.0 8001:804 2010中文版
16 R18.0 8001:409 2010英文版
17 R18.1 9001:804 2011中文版
18 R18.1 9001:409 2011英文版
19 R18.2 A001:804 2012中文版
20 R18.2 A001:409 2012英文版
21 R18.0 8001:804 AutoCAD 2010
22 R18.1 9001:804 AutoCAD 2011
23 R18.2 A001:804 AutoCAD 2012
24 R19.0 B001:804 AutoCAD 2013
25 R19.1 D001:804 AutoCAD 2014
26 R20.0 E001:804 AutoCAD 2015

▎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目录

▎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或者更高版本,无需安装该环境)。

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

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

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

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

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

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

①开始安装

②安装过程

③安装完成

④卸载界面

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

(0)

相关推荐