ApolloStudio高手之路(17):用Inno Setup打包发布你的专属“ApolloStudio”

继上一篇ApolloStudio高手之路(16):定制化你的专属ApolloStudio(OEM定制)发布之后,很多小伙伴私信问我如何将完全自定义的ApolloStudio赶紧打包发布,这里我们就一起来分析下如何快速自定义我们的ApolloStudio。

软件准备

常用的打包软件有很多,例如开源免费的Inno Setup(本文中所应用的到的)、强大到无与伦比的商用软件InstallShield等等,这里我们以笔者常用的Inno Setup为例进行讲解。

Inno Setup有其官方网站:https://jrsoftware.org/isinfo.php

介于官网所发布的版本对中文语言包需手动添加以及外网访问不便的情况,推荐进入ApolloStudio的网盘下载地址(通过文末的超链接获取)(网盘路径:.\2.ApolloStudio周边工具包\打包工具\Inno Setup v6.0.4 汉化版.exe),获取软件之后一路默认安装即可安装成功。

软件的配置

使用Inno Setup对软件进行打包可以依照其自带的向导进行自由配置,配置完成之后将会生成一个Inno Setup脚本文件,有关向导的使用可以参考这个链接:Inno Setup的安装以及向导的使用流程,在本文中我们将跳过向导自动生成的环节,直接以笔者自定义的脚本文件进行讲解。

ApolloStudio本身对安装路径没有太高要求,其默认路径(C:\Program Files (x86)\ApolloStudio)是使用Inno Setup打包后默认的安装路径,在打包之前,可以将默认路径下的ApolloStudio整个文件夹完整复制到你自定义的路径备用(例如你可以将其放置在了D:\ApolloStudio文件夹内)。

同样在网盘空间下载得到名为ApolloStudio打包脚本.iss的脚本文件,下面我们对脚本内容进行解析讲解:

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
;下面的均为宏定义,分别定义了APP的名字,版本信息,发布者,网站链接以及APP的执行文件名
#define MyAppName "ApolloStudio"
#define MyAppVersion "V20200420"
#define MyAppPublisher "GentlerMan"
#define MyAppURL "https://blog.csdn.net/tmxyz1950"
#define MyAppExeName "ApolloStudio.exe"

[Setup]
; 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={{BD41EB40-36AF-4070-AFD3-BF024D6CA7A8}
AppName={#MyAppName} 
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\{#MyAppName}
DisableProgramGroupPage=yes
; The [Icons] "quicklaunchicon" entry uses {userappdata} but its [Tasks] entry has a proper IsAdminInstallMode Check.
UsedUserAreasWarning=no
;用户许可协议,可以在对应目录进行自定义修改
LicenseFile=..\ApolloStudio\bin\Release_Finall\Document\ApolloStudio软件许可及服务协议.txt
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
;打包后的文件所存放的路径
OutputDir=..\
;打包后的文件名
OutputBaseFilename=ApolloStudio_Setup_V20200420
;打包后的文件所使用的图标
SetupIconFile=..\LogoResource\黑底透明_64.ico
;系统打包方式,请默认
Compression=lzma
SolidCompression=yes
WizardStyle=modern

[Languages]
;以下是语言信息,请默认
Name: "chinesesimplified"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"

[Tasks]
;创建快捷方式相关操作,默认即可
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 6.1; Check: not IsAdminInstallMode

 ;以下是打包的文件夹目录
[Files]
 ;这里包含了.Net Framework4.7.2的运行库,也可以精简掉
Source: "..\Runtime\NDP472.exe"; DestDir: "{tmp}"; Flags: ignoreversion; Check : CheckNetIsNeedInstall
 ;这里是设置主程序名,必须指定
Source: "..\ApolloStudio\bin\Release_Finall\ApolloStudio.exe"; DestDir: "{app}"; Flags: ignoreversion
 ;这里是设置主程序名所在的目录,必须指定(这里的路径即你之前复制ApolloStudio的文件夹路径)
Source: "..\ApolloStudio\bin\Release_Finall\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
;关于图标的一些定义,这里默认就好,系统会根据宏定义自动加载
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon

[Run]
 ;以下是根据检查CheckNetIsNeedInstall函数来判断是否需要对.Net Framework4.7.2进行静默安装
Filename: {tmp}\NDP472.exe; Parameters: "/quiet /norestart"; WorkingDir: {tmp}; Flags: skipifdoesntexist; StatusMsg: "正在安装.Net Framework 4.7.2 请稍候..." ; Check : CheckNetIsNeedInstall
;安装完成后是否立即执行主程序 
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

 ;以下是设定了2个功能函数,一个是通过注册表检测是否已安装过高于4.7的.Net Framework,另外一个函数表示在执行卸载的过程中提醒用户是否删除系统缓存空间内的文件
[Code]
function CheckNetIsNeedInstall(): Boolean;
var
  myversion: String;
begin
  myversion := '';
  if RegValueExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'Version') then
    begin
      RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'Version', myversion);
    end
  else
    begin
      Result := True;
    end;
  if StrToFloat(copy(myversion,0,3)) < 4.7 then
    begin
      Result := True;
    end
  else
    begin
      Result := False;
    end;
end;

function InitializeUninstall (): Boolean; 
begin
  if MsgBox('删除配置文件:' #13#13 '请问是否删除软件配置文件?', mbConfirmation, MB_YESNO) = idYes then
    begin
      DelTree(ExpandConstant('{localappdata}') + '\ApolloWorks', True, True, True);    
    end;
  Result := True
end;

以上只是笔者常用的一些配置,大家同样可以度娘一下Inno Setup更多高阶的操作进行更深层次的自定义,欢迎大家联系我进行沟通分享!

软件的执行

在经过以上配置文件的修改,在Inno Setup中直接进行编译即可:

ApolloStudio高手之路(17):用Inno Setup打包发布你的专属“ApolloStudio”_第1张图片

最终你将在你设定的OutputDir路径下获取得到你定制化的ApolloStudio安装程序了!(安装后同时也会自动生成卸载程序,可以在系统的程序卸载列表中看到) 

***********************************************************************************************************************************************

ApolloStudio最新版下载地址(网盘有交流群号):

(点击跳转至首页文章,见文章最底部下载链接)

你可能感兴趣的:(ApolloStudio高手之路(17):用Inno Setup打包发布你的专属“ApolloStudio”)