; 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', '') #if VERSION_TYPE == ""
#define LIVE_VERSION
#define MyAppName "流媒体系统(PMS)"
#define MyAppId "1954A698--46F1-B732-8DDF96693DA5"
#define MyOutputBaseFilename "live_server_setup"
#elif VERSION_TYPE == ""
#define VOD_VERSION
#define MyAppName "流媒体系统(PMS)"
#define MyAppId "DA255679-F103--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 server
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
LicenseFile=license.txt
OutputDir=output
OutputBaseFilename={#MyOutputBaseFilename}
SetupIconFile=setup.ico
Compression=lzma
SolidCompression=yes VersionInfoVersion={#MyAppVersion}
VersionInfoCompany={#MyAppPublisher}
VersionInfoCopyright=Copyright (C) -
VersionInfoProductName={#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: dontcopy
Source: ..\build\libeay32.dll; Flags: dontcopy
Source: ..\build\vcredist2008_x86.exe; Flags: dontcopy #ifdef FULL_VERSION
Source: ..\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: ignoreversion
Source: ..\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}\示例页面.url Name: {group}\help\安装说明; Filename: {app}\help\安装说明.pdf
Name: {group}\help\功能说明; Filename: {app}\help\功能说明.pdf
Name: {group}\help\开发说明; Filename: {app}\help\开发说明.pdf
Name: {group}\help\配置说明; Filename: {app}\help\配置说明.pdf
Name: {group}\help\统计模块; Filename: {app}\help\统计模块.pdf Name: {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: desktopicon
Name: {commondesktop}\开启PMS服务; Filename: {app}\media_service.exe; Parameters: -r; IconFilename: {app}\{#MyAppExeName}; Tasks: desktopicon
Name: {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(,,);
if SvcMgr = then Exit;
Svc := OpenService(SvcMgr, PChar(name), );
if Svc = 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, );
getCode(PChar(codeStr), );
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();
Top := ScaleY();
Width := ScaleX();
Height := ScaleY();
end; { keyLabel }
keyLabel := TLabel.Create(keyPage);
with keyLabel do
begin
Parent := keyPage.Surface;
Caption := ExpandConstant('{cm:Key_Form_keyLabel_Caption0}');
Left := ScaleX();
Top := ScaleY();
Width := ScaleX();
Height := ScaleY();
end; { key }
key := TMemo.Create(keyPage);
with key do
begin
Parent := keyPage.Surface;
Left := ScaleX();
Top := ScaleY();
Width := ScaleX();
Height := ScaleY();
ScrollBars := ssVertical;
TabOrder := ;
OnChange := @Key_Form_KeyChange;
end; { code }
code := TMemo.Create(keyPage);
with code do
begin
Parent := keyPage.Surface;
Left := ScaleX();
Top := ScaleY();
Width := ScaleX();
Height := ScaleY();
ReadOnly := True;
ScrollBars := ssVertical;
TabOrder := ;
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();
Top := ScaleY();
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,否则可以直接填写本机' + ## + 'IP地址,或者保持默认值不变';
Left := ScaleX();
Top := ScaleY();
Width := ScaleX();
Height := ScaleY();
end; domainEdit := TNewEdit.Create(domainPage);
with domainEdit do
begin
Parent := domainPage.Surface;
Text := GetComputerNameString;
Left := ScaleX();
Top := ScaleY();
Width := ScaleX();
Height := ScaleY();
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();
Top := WizardForm.ClientHeight - ScaleY();
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等等应用的更多相关文章

  1. 以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用 (转)

    以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用 (转) ; Script generated by the Inno Setup 脚本向导. ; SEE THE DOCU ...

  2. Inno Setup自定义安装界面脚本

    ; 脚本由 Inno Setup 脚本向导 生成! ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #define MyAppName "RemoteCard&quo ...

  3. Inno Setup脚本语法大全

    Inno Setup脚本语法大全 ResourceShare Bruce 11个月前 (10-28) 6136浏览 0评论   Inno Setup 是什么?Inno Setup 是一个免费的 Win ...

  4. Inno Setup脚本

    某天夜晚一场狂风暴雨,由于办公室座位旁的窗户没关,笔记本电脑泡了一夜水,无法开机,无奈送修,里面的大量资料也不知道会不会丢失. is的脚本只有重新写了,重新研究了一下检测程序是否正在运行的判断方法,另 ...

  5. 在Unicode版Inno Setup中使用ISSkin给安装程序添加皮肤

    原文 http://www.cnblogs.com/2356/archive/2009/10/27/1590565.html 在Unicode版Inno Setup中使用ISSkin给安装程序添加皮肤 ...

  6. InstallShield自定义安装界面

    原文:InstallShield自定义安装界面 版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息. 前言: 对于一些InstallShield用户或企业,对于安装包界面除了 ...

  7. Inno Setup 脚本

    给你个我用的例子: Delphi/Pascal code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 ...

  8. INNO SETUP脚本向导创建的基本脚本

    脚本范例分析:先来看看一段用INNO SETUP脚本向导创建的基本脚本的[Setup]段: [Setup]   AppName=Premiere 6.5 汉化补丁-----------------(程 ...

  9. 【转载】inno setup 水波纹效果,检测安装vcredist_x86.exe等

    以下inno setup脚本,实现了:1.水波纹效果 2.安装时检测是否安装其他版本,并在欢迎页面添加文字提示 4.检测安装vcredist_x86.exe  3.卸载时添加提示 ; 脚本由 Inno ...

随机推荐

  1. Rest Client(Rest接口调试工具,有保存功配置功能) chrome浏览器插件

    Rest Client(Rest接口调试工具,有保存功配置功能) chrome浏览器插件 下载地址 插件的操作很简单,下面是一些简单的实例. 1.安装 在谷歌应用商城搜索postman,如下图1-1所 ...

  2. Zabbix 教程

    Zabbix 教程http://blog.csdn.net/linuxlsq/article/details/52606086 MySQL在以下几种情况会创建临时表:1.UNION查询:2.用到TEM ...

  3. windows 下svn 创建分支 合并分支 冲突

    我用的系统是win7+Subversion 1.7.4.服务器搭建就略过了,我也是从网上找的,基本上就是几个命令吧!我用的CentOs6.5 .网上找了几个命令搭建很快,基本上是: 1.# sudo  ...

  4. ASP.NET MVC 中实现View与Controller分离

    一.开篇题外话 我经常会在博客园逛来逛去,看过很多大牛们的Blog,我很少在这块技术天地活动,之前有发表过几篇日志,好像大部分是和电商有关,作为一个多年的开发人员,很少在这里分享,之前一直在CSDN上 ...

  5. [mysql] Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'loser.tank_admin.login_ip' which is not functionally dependent on columns in GROUP BY clause; this is

    执行SQL: SELECT login_name,login_ip,sex FROM tank_admin GROUP BY login_name ; 时抛出异常. Expression #2 of ...

  6. [转]LOG4J汇编教程edit Z10

    摘自:http://wucuixia.blog.sohu.com/12057602.html LOG背景 我们在编程时经常不可避免地要使用到一些日志操作,比如开发阶段的调试信息.运行时的日志记录及审计 ...

  7. jsoncpp用法通俗易懂之解析

    刚工作不久,最近遇到一个要解析一个web服务器发过来的json格式的文件,文件如下: { "global": { "renew": "true&quo ...

  8. 【jmeter】浅说 think time

    接口每天被5000个人调用,同时在线500人,每天要被调用50000次.  过了没多久测试完成写了一份报告发给项目经理: 并发 | 响应时间 | 应用服务器cpu |数据库服务器cpu |TPS | ...

  9. ASP.NET环境下配置FCKEditor并上传图片及其它文件

    文章转自:http://blog.sina.com.cn/s/blog_568e66230100hy6a.html FCKEditor于2009年被更名为新一代的CKEditor和CKFinder,见 ...

  10. SPOJ #692. Fruit Farm

    Another palindrome related problem. Actually nothing too theoretical here, but please keep following ...