首页 > 代码库 > 以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用
以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用
原文: 以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用
; Script generated by the Inno Setup 脚本向导.; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!; 为1的时候表示定义成试用版本#define VERSION_TYPE ReadIni(‘Setup.ini‘, ‘SetupType‘, ‘type‘, ‘0‘)#if VERSION_TYPE == "2" #define LIVE_VERSION #define MyAppName "流媒体系统(PMS)" #define MyAppId "1954A698-2322-46F1-B732-8DDF96693DA5" #define MyOutputBaseFilename "live_server_setup"#elif VERSION_TYPE == "1" #define VOD_VERSION #define MyAppName "流媒体系统(PMS)" #define MyAppId "DA255679-F103-4170-8B75-B9A7EF4CBC1B" #define MyOutputBaseFilename "vod_server_setup"#else #define FULL_VERSION #define MyAppName "流媒体系统(PMS)" #define MyAppId "4AC618B5-8C69-4D47-918A-261AA895B6D7" #define MyOutputBaseFilename "full_server_setup"#endif#define RegUrl "http://www.xxx.net"#define MyAppVersion "1.0"#define MyAppPublisher "XXX科技有限公司"#define MyAppURL "http://www.xxx.net"#define MyAppExeName "InstanceConfig.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={{{#MyAppId}}AppMutex={{{#MyAppId}}AppName={#MyAppName}AppVersion={#MyAppVersion}AppPublisher={#MyAppPublisher}AppPublisherURL={#MyAppURL}AppSupportURL={#MyAppURL}AppUpdatesURL={#MyAppURL}DefaultDirName={pf}\xxx\media serverDefaultGroupName={#MyAppName}AllowNoIcons=yesLicenseFile=license.txtOutputDir=outputOutputBaseFilename={#MyOutputBaseFilename}SetupIconFile=setup.icoCompression=lzmaSolidCompression=yesVersionInfoVersion={#MyAppVersion}VersionInfoCompany={#MyAppPublisher}VersionInfoCopyright=Copyright (C) 2010-2013VersionInfoProductName={#MyAppName}VersionInfoProductVersion={#MyAppVersion}[Languages]Name: cn; MessagesFile: compiler:Languages\chinese.isl[Files]; NOTE: Don‘t use "Flags: ignoreversion" on any shared system files; 用来检测安装程序中输入的注册码是否有效Source: ..\build\register_help.dll; Flags: dontcopySource: ..\build\libeay32.dll; Flags: dontcopySource: ..\build\vcredist2008_x86.exe; Flags: dontcopy#ifdef FULL_VERSIONSource: ..\build\server.conf; DestDir: {app}Source: ..\build\media_service.exe; DestDir: {app}Source: ..\build\libmysql.dll; DestDir: {app}Source: ..\build\libeay32.dll; DestDir: {app}Source: ..\build\zlib1.dll; DestDir: {app}Source: ..\build\register_check.exe; DestDir: {app}Source: ..\build\QtCore4.dll; DestDir: {app}Source: ..\build\QtGui4.dll; DestDir: {app}Source: ..\build\mglobal.dll; DestDir: {app}Source: ..\build\msvcp100.dll; DestDir: {app}Source: ..\build\msvcr100.dll; DestDir: {app}Source: ..\build\initconfig.exe; DestDir: {app}Source: ..\build\InstanceConfig.exe; DestDir: {app};Source: ..\build\php-fpm.exe; DestDir: {app}Source: ..\build\管理统计页面.url; DestDir: {app}Source: ..\build\示例页面.url; DestDir: {app}Source: ..\build\launchlist; DestDir: {app};Source: ..\build\phpcgi; DestDir: {app}Source: ..\build\lighttpd.conf; DestDir: {app}\lmp\lighttpd\conf; Flags: ignoreversionSource: ..\build\my.ini; DestDir: {app}\lmp\mysql; Flags: ignoreversion; web服务器整套目录Source: ..\build\lmp\*; DestDir: {app}\lmp; Flags: recursesubdirs createallsubdirs; doc文档目录Source: ..\doc\*; DestDir: {app}\help; Flags: recursesubdirs createallsubdirs; 播放器相关目录Source: ..\build\swfs\*; DestDir: {app}\swfs; Flags: recursesubdirs createallsubdirs; 播放器SDK相关目录Source: ..\build\scriptlib\*; DestDir: {app}\scriptlib; Flags: recursesubdirs createallsubdirs#endif[Dirs]Name: {app}\videos[Tasks]Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}[Icons]Name: {group}\sample\示例页面; Filename: {app}\示例页面.urlName: {group}\help\安装说明; Filename: {app}\help\安装说明.pdfName: {group}\help\功能说明; Filename: {app}\help\功能说明.pdfName: {group}\help\开发说明; Filename: {app}\help\开发说明.pdfName: {group}\help\配置说明; Filename: {app}\help\配置说明.pdfName: {group}\help\统计模块; Filename: {app}\help\统计模块.pdfName: {group}\流媒体系统(PMS)系统配置; Filename: {app}\{#MyAppExeName}Name: {group}\{cm:UninstallProgram, PMS系统配置}; Filename: {uninstallexe}Name: {group}\流媒体系统(PMS)统计管理; Filename: {app}\管理统计页面.url; IconFilename: {app}\{#MyAppExeName};Name: {commondesktop}\流媒体系统(PMS)统计管理; Filename: {app}\管理统计页面.url; Tasks: desktopicon; IconFilename: {app}\{#MyAppExeName};Name: {commondesktop}\流媒体系统(PMS)系统配置; Filename: {app}\{#MyAppExeName}; Tasks: desktopiconName: {commondesktop}\开启PMS服务; Filename: {app}\media_service.exe; Parameters: -r; IconFilename: {app}\{#MyAppExeName}; Tasks: desktopiconName: {commondesktop}\停止PMS服务; Filename: {app}\media_service.exe; Parameters: -s; IconFilename: {app}\{#MyAppExeName}; Tasks: desktopicon[Run]; 删除服务Filename: {app}\media_service.exe; Parameters: -u; Flags: runhidden; 安装服务Filename: {app}\media_service.exe; Parameters: -i; Flags: runhidden[UninstallRun]; 停止服务Filename: {app}\media_service.exe; Parameters: -s; Flags: runhidden; 删除服务Filename: {app}\media_service.exe; Parameters: -u; Flags: runhidden[CustomMessages]Key_Form_Caption=注册向导Key_Form_Description=将序列号提交给xxx以获取注册码Key_Form_codeLabel_Caption0=序列号:Key_Form_keyLabel_Caption0=注册码:Domain_Form_Caption=域名设置Domain_Form_Description=配置当前服务器域名[Messages]BeveledLabel=xxx网络科技[Code]var codeLabel: TLabel; keyLabel: TLabel; key: TMemo; code: TMemo; keyPage: TWizardPage; domainEdit: TNewEdit; domainPage: TWizardPage;// 获取序列号function getCode(szCode: PChar; inLen: Integer): Integer;external ‘getCode@files:register_help.dll,libeay32.dll,msvcr100.dll stdcall setuponly delayload loadwithalteredsearchpath‘;// 进行检查function regCheck(const regKey: PChar): Boolean;external ‘regCheck@files:register_help.dll,libeay32.dll,msvcr100.dll stdcall setuponly delayload loadwithalteredsearchpath‘;// 进行注册function regSave(const regKey, regPath: PChar): Boolean;external ‘regSave@files:register_help.dll,libeay32.dll,msvcr100.dll stdcall setuponly delayload loadwithalteredsearchpath‘;// 清理注册procedure regClear(const regPath: PChar);external ‘regClear@files:register_help.dll,libeay32.dll,msvcr100.dll stdcall setuponly delayload loadwithalteredsearchpath‘;function OpenSCManager(const machine: LongInt; const dbName: LongInt; access: Dword):LongInt;external ‘OpenSCManagerA@Advapi32.dll stdcall‘;function OpenService(svcMgr: LongInt; const svcName: pchar; access: Dword):LongInt;external ‘OpenServiceA@Advapi32.dll stdcall‘;function CloseServiceHandle(svc: LongInt):Boolean;external ‘CloseServiceHandle@Advapi32.dll stdcall‘;///判定服务是否存在function serviceExists(name: string): boolean;var SvcMgr, Svc: LongInt;begin Result := False; SvcMgr := OpenSCManager(0,0,1); if SvcMgr = 0 then Exit; Svc := OpenService(SvcMgr, PChar(name), 4); if Svc = 0 then begin CloseServiceHandle(SvcMgr); Exit; end; CloseServiceHandle(Svc); CloseServiceHandle(SvcMgr); Result := true;end;///停止服务procedure stopService;var ResultCode: Integer;begin Exec(ExpandConstant(‘{tmp}\media_service.exe‘), ‘-s‘, ‘‘, SW_HIDE, ewWaitUntilTerminated, ResultCode);end;{ Key_Form_ShouldSkipPage }function Key_Form_ShouldSkipPage(Page: TWizardPage): Boolean;var codeStr: String;begin SetLength(codeStr, 1024); getCode(PChar(codeStr), 1024); code.Text := codeStr; Result := False;end;// 注册码编辑框改变事件procedure Key_Form_KeyChange(Sender: TObject);begin// 检测注册码 if regCheck(PChar(key.Text)) then WizardForm.NextButton.Enabled := True else WizardForm.NextButton.Enabled := False;end;procedure RegURLLabelOnClick(Sender: TObject);var ErrorCode: Integer;begin ShellExec(‘open‘, ExpandConstant(‘{#RegURL}‘), ‘‘, ‘‘, SW_SHOWNORMAL, ewNoWait, ErrorCode);end;{ Key_Form_CreatePage }function Key_Form_CreatePage(PreviousPageId: Integer): Integer;var URLLabel: TNewStaticText;begin keyPage := CreateCustomPage( PreviousPageId, ExpandConstant(‘{cm:Key_Form_Caption}‘), ExpandConstant(‘{cm:Key_Form_Description}‘) ); { codeLabel } codeLabel := TLabel.Create(keyPage); with codeLabel do begin Parent := keyPage.Surface; Caption := ExpandConstant(‘{cm:Key_Form_codeLabel_Caption0}‘); Left := ScaleX(0); Top := ScaleY(0); Width := ScaleX(40); Height := ScaleY(13); end; { keyLabel } keyLabel := TLabel.Create(keyPage); with keyLabel do begin Parent := keyPage.Surface; Caption := ExpandConstant(‘{cm:Key_Form_keyLabel_Caption0}‘); Left := ScaleX(0); Top := ScaleY(82); Width := ScaleX(40); Height := ScaleY(13); end; { key } key := TMemo.Create(keyPage); with key do begin Parent := keyPage.Surface; Left := ScaleX(0); Top := ScaleY(98); Width := ScaleX(410); Height := ScaleY(106); ScrollBars := ssVertical; TabOrder := 0; OnChange := @Key_Form_KeyChange; end; { code } code := TMemo.Create(keyPage); with code do begin Parent := keyPage.Surface; Left := ScaleX(0); Top := ScaleY(16); Width := ScaleX(410); Height := ScaleY(60); ReadOnly := True; ScrollBars := ssVertical; TabOrder := 1; end; with keyPage do begin OnShouldSkipPage := @Key_Form_ShouldSkipPage; end; Result := keyPage.ID; URLLabel := TNewStaticText.Create(keyPage); with URLLabel do begin Caption := ‘获取注册码‘; Cursor := crHand; OnClick := @RegURLLabelOnClick; Parent := keyPage.Surface; Font.Style := URLLabel.Font.Style + [fsUnderline]; Font.Color := clBlue; Left := ScaleX(350); Top := ScaleY(210); end;end;{ 设置域名页面相关代码 }procedure Domain_Form_EditChange(sender: TObject);begin if domainEdit.Text = ‘‘ then WizardForm.NextButton.Enabled := False else WizardForm.NextButton.Enabled := True;end;function Domain_Form_CreatePage(PreviousPageId: Integer): Integer;var domainLabel: TNewStaticText;begin domainPage := CreateCustomPage( PreviousPageId, ExpandConstant(‘{cm:Domain_Form_Caption}‘), ExpandConstant(‘{cm:Domain_Form_Description}‘) ); domainLabel := TNewStaticText.Create(domainPage); with domainLabel do begin Parent := domainPage.Surface; Caption := ‘请确保输入的域名是有效的,并指向当前服务器IP,否则可以直接填写本机‘ + #13#10 + ‘IP地址,或者保持默认值不变‘; Left := ScaleX(0); Top := ScaleY(60); Width := ScaleX(400); Height := ScaleY(28); end; domainEdit := TNewEdit.Create(domainPage); with domainEdit do begin Parent := domainPage.Surface; Text := GetComputerNameString; Left := ScaleX(0); Top := ScaleY(90); Width := ScaleX(400); Height := ScaleY(13); OnChange := @Domain_Form_EditChange; end; end;procedure URLLabelOnClick(Sender: TObject);var ErrorCode: Integer;begin ShellExec(‘open‘, ExpandConstant(‘{#MyAppURL}‘), ‘‘, ‘‘, SW_SHOWNORMAL, ewNoWait, ErrorCode);end;// 安装初始化function InitializeSetup(): Boolean;begin if serviceExists(‘MediaSrv‘) then begin //服务存在,先停止它 if MsgBox(‘服务已经存在,要继续吗?‘, mbConfirmation, MB_YESNO) = IDNO then begin Result := False; Exit; end; ExtractTemporaryFile(‘media_service.exe‘); ExtractTemporaryFile(‘msvcr100.dll‘); ExtractTemporaryFile(‘msvcp100.dll‘); stopService; end; result := True;end;procedure InitializeWizard();var URLLabel: TNewStaticText;begin Key_Form_CreatePage(wpSelectDir); Domain_Form_CreatePage(keyPage.ID); URLLabel := TNewStaticText.Create(WizardForm); with URLLabel do begin Caption := ExpandConstant(‘{#MyAppURL}‘); Cursor := crHand; OnClick := @URLLabelOnClick; Parent := WizardForm; Font.Style := URLLabel.Font.Style + [fsUnderline]; Font.Color := clBlue; Left := ScaleX(20); Top := WizardForm.ClientHeight - ScaleY(30); end;end;// 页面切换事件procedure CurPageChanged(CurPageID: Integer);var ResultCode: Integer; file: String; buf: String;begin WizardForm.BackButton.Enabled := True; if CurPageID = keyPage.ID then WizardForm.NextButton.Enabled := False else if CurPageID = wpFinished then begin /////////////////////////////////////////////////////////// // 帮助设置HOST_NAME为用户设置的域名 file := ExpandConstant(‘{app}\lmp\htdocs\sample\config.php‘); if LoadStringFromFile(file, buf) then begin StringChangeEx(buf, ‘%HOST_NAME%‘, domainEdit.Text, False); SaveStringToFile(file, buf, False); end; file := ExpandConstant(‘{app}\管理统计页面.url‘); if LoadStringFromFile(file, buf) then begin StringChangeEx(buf, ‘%HOST_NAME%‘, domainEdit.Text, False); SaveStringToFile(file, buf, False); end; file := ExpandConstant(‘{app}\示例页面.url‘); if LoadStringFromFile(file, buf) then begin StringChangeEx(buf, ‘%HOST_NAME%‘, domainEdit.Text, False); SaveStringToFile(file, buf, False); end; /////////////////////////////////////////////////////////// // 禁用完成按钮 WizardForm.NextButton.Enabled := False; // 正式写入注册文件 regSave(PChar(key.Text), WizardDirValue); // 执行自动初始化 Exec(ExpandConstant(‘{app}\initconfig.exe‘), ‘‘, ‘‘, SW_HIDE, ewWaitUntilTerminated, ResultCode); // 执行配置设置 Exec(ExpandConstant(‘{app}\InstanceConfig.exe‘), ‘-r‘, ‘‘, SW_SHOW, ewWaitUntilTerminated, ResultCode); // 启动服务 Exec(ExpandConstant(‘{app}\media_service.exe‘), ‘-r‘, ‘‘, SW_HIDE, ewWaitUntilTerminated, ResultCode); // 启用完成按钮 WizardForm.NextButton.Enabled := True; end else if CurPageID = wpInstalling then begin // 安装运行时库 ExtractTemporaryFile(‘vcredist2008_x86.exe‘); // 执行2008库安装 Exec(ExpandConstant(‘{tmp}\vcredist2008_x86.exe‘), ‘/q‘, ‘‘, SW_HIDE, ewWaitUntilTerminated, ResultCode); end else if CurPageID = domainPage.ID then begin WizardForm.BackButton.Enabled := False; end;end;// 卸载procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);begin if CurUninstallStep = usUninstall then begin DeleteFile(ExpandConstant(‘{app}\lsc‘)); end;end;// 检查重启逻辑function UninstallNeedRestart(): Boolean;begin if serviceExists(‘MediaSrv‘) then result := True else result := False;end;
以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。