InnoSetup打包詳解
▎關(guān)于打包的目的和原理
VSTO插件開發(fā)完成后,為了更好的分發(fā)給用戶進(jìn)行安裝使用,需要進(jìn)行對插件打包的過程。
其中第二條,打包的時(shí)候修改注冊表。針對不同的程序,修改的注冊表內(nèi)容不同。
?Excel:修改HKEY_CURRENT_USER,Software\Microsoft\Office\Excel\Addins路徑下的內(nèi)容。比如我的插件叫Exceltools,我就要對以下條目進(jìn)行相應(yīng)修改。
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\路徑下的內(nèi)容。
比如我的插件叫CADTools,我就要對以下條目進(jìn)行相應(yīng)修改。
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的版本。根據(jù)不同的版本修改相應(yīng)的注冊表路徑。
| 序號 | 版本號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]常規(guī)參數(shù)
#define MyAppName "CADTools"#define MyAppVerName "CADTools 1.0"[Setup]//插件名AppName={#MyAppName}//版本AppVerName={#MyAppVerName}//版本號AppVersion=1.0VersionInfoProductName=CADTools//默認(rèn)安裝路徑DefaultDirName= "d:\Program Files\CADTools"DisableDirPage=noDisableProgramGroupPage=yesDefaultGroupName=CADToolsOutputDir=.//安裝包圖標(biāo)SetupIconFile=A.icoOutputBaseFilename=CADToolsWindowShowCaption=noDisableWelcomePage=no//控制面板卸載界面圖標(biāo)UninstallDisplayIcon= {app}\A.ico//安裝界面左側(cè)圖片WizardImageFile =Office2007.bmp//安裝界面右上角小logoWizardSmallImageFile=A.bmp//發(fā)布者名稱AppPublisher=VBA說//禁止64位系統(tǒng)寫入注冊表時(shí)的重定向ArchitecturesInstallIn64BitMode=x64 ia64
安裝完成之后運(yùn)行指定程序
[]Filename: "{app}\GAME.exe"; Flags: nowait skipifsilentnowait –?不等待完成就處理下一個(gè)條目。skipifsilent —?如果后臺運(yùn)行則不提示點(diǎn)擊“完成”。
安裝包使用中文
[]Name: "chinesesimplified"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"
把安裝自動注冊dll文件
dll文件放到安裝目錄下順便注冊[Files]Source: "..\x64\Release\sdUkey.dll"; DestDir: "{app}"; Flags: ignoreversion restartreplace uninsrestartdelete regserver
安裝過程靜默安裝第三方安裝包
釋放安裝包到安裝目錄后執(zhí)行安裝相關(guān)函數(shù)[Files]Source: ".\ePass3003-SimpChinese.exe"; DestDir: "{tmp}"; AfterInstall: RunInstaller執(zhí)行的函數(shù)內(nèi)容[Code]procedure RunInstaller;varResultCode: Integer;beginif not Exec(ExpandConstant(CurrentFileName), '/S', '', SW_SHOWNORMAL ,ewWaitUntilTerminated, ResultCode)thenMsgBox('Other installer failed to run!' + #13#10 +SysErrorMessage(ResultCode), mbError, MB_OK);end;?
相關(guān)目錄說明
目錄 | 目錄說明 |
{tmp} | 第三方安裝包安裝過程存放臨時(shí)文件的 |
{app} | 用戶選擇的安裝目錄 |
{sys} | 系統(tǒng)目錄system32或者sysWOW64目錄 |

▎InnoSetup打包作品欣賞
作品一:自動檢測VSTO運(yùn)行環(huán)境
VSTO插件需要兩個(gè)必備運(yùn)行環(huán)境: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(因?yàn)镋xcel2013或者更高版本,無需安裝該環(huán)境)。
下面的插件可以自動檢測以上兩個(gè)環(huán)境,如果本機(jī)未安裝,則直接網(wǎng)上下載,引導(dǎo)用戶安裝。

作品二:美化安裝界面(仿有道云筆記)
辛苦搜集到的一個(gè)美化模板,仿有道云筆記安裝過程的??梢愿鶕?jù)自己的需求更改里面的圖片素材定制。

作品三:美化安裝界面(仿QQ2013)
仿QQ2013的安裝界面,同上一個(gè)例子,修改圖片素材即可。

作品四:美化安裝界面(簡單美化)
?
①開始安裝

②安裝過程

③安裝完成

④卸載界面
知識無價(jià),時(shí)間無價(jià),需要以上InnoSetup打包模板的可私信作者付費(fèi)分享。
- 【建議收藏】VBA說歷史文章匯總
- ?批量生成條形碼,這個(gè)插件瞬間搞定
- ?VBA會被Python代替嗎?
- ?【源碼分享】VBA中一些常用的自定義函數(shù)
- ?Excel和Word數(shù)據(jù)交互讀?。ㄉ珊贤?/a>
