📄 updatescripttemplatec.iss
字号:
; 脚本用 Inno Setup 脚本向导生成。
; 查阅文档获取创建 INNO SETUP 脚本文件详细资料!
[Setup]
AppName=航海世纪国际版更新程序
AppVerName=航海世纪国际版更新程序
LicenseFile=license.txt
DisableProgramGroupPage=yes
DisableDirPage=yes
DefaultDirName={pf}\航海世纪国际版
SetupIconFile=AutoRun.ico
Uninstallable=no
DisableReadyMemo=yes
;设置语言选择
ShowLanguageDialog=yes
;设置源文件目录
SourceDir=F:\Work\工具集合\安装制作工具\0.43更新\0.43普通版\Voyage\RESOURCE\animation
;设置安装包文件名
OutputBaseFilename=测试0.50-0.55更新包(不压缩)
;设置安装包输出目录
OutputDir=F:\Work\工具集合\安装制作工具\
;当总文件大小超过2,100,000,000 bytes时,必须设置该选项
;DiskSpanning=yes
;分装在2张盘上
;SlicesPerDisk=2
;DiskSliceSize=1500000000
;
[Code]
var
DataDirPage: TInputDirWizardPage;
mVersionFlag: Integer;
mInstallDir: String;
mVersionNum: String;
mVersionName: String;
mLargestInstallDir: String;
mLargestVersionNum: String;
mLargestVersionName: String;
mDirSelectTip: String;
mFailedInfo: String;
mFromVersion: String;
mToVersion: String;
VersionNames: TArrayOfString;
I: Integer;
function vertoint(s: String) : Integer;
var
cpos: Integer;
retL: String;
retR: String;
begin
cpos := Pos('.', s);
retL:= Copy(s, 1, cpos-1);
retR:= Copy(s, cpos+1, Length(s)-cpos);
Result:= strtoint(retL)*65535 + strtoint(retR);
end ;
procedure InitializeWizard;
begin
//设置游戏版本号和更新版本号
mFromVersion := '0.50';
mToVersion := '0.55';
mVersionFlag := 0;
if RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\SnailGame\Voyage_国际版') then
begin
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\SnailGame\Voyage_国际版', 'InstallDir', mInstallDir ) then
//MsgBox('InstallDir: ' + mInstallDir, mbInformation, MB_OK)
else
mVersionFlag := 1;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\SnailGame\Voyage_国际版', 'ver', mVersionNum ) then
begin
{MsgBox('ver: ' + mVersionNum, mbInformation, MB_OK); }
end
else
mVersionFlag := 1;
mDirSelectTip := '更新程序搜索到<<航海世纪国际版>>的安装目录:'+mInstallDir+'. 直接选择下一步进行更新.';
end
else
begin
mVersionFlag := 1;
//MsgBox('没有找到注册信息', mbInformation, MB_OK);
mDirSelectTip := '更新程序没有搜索到<<航海世纪国际版>>的安装目录,可能是你还没有安装<<航海世纪国际版>>.如果你已经安装了<<航海世纪国际版>>,请手动选择<<航海世纪国际版>>的安装目录';
//mInstallDir := 'f:\app';
end
//更新包的版本号比游戏版本号相同
if( mVersionFlag = 0 ) and ( vertoint(mVersionNum) = vertoint(mToVersion ) ) then
begin
mFailedInfo := '您的客户端已经是'+mToVersion+'!是否重新安装?';
if MsgBox( mFailedInfo, mbInformation, MB_YESNO) = IDNO then
begin
Abort;
end
else
begin
mVersionFlag := 2;
end
end
//更新包的版本号比游戏版本号低
else if( mVersionFlag = 0 ) and ( vertoint(mVersionNum) > vertoint(mToVersion ) ) then
begin
mFailedInfo := '更新包的版本号比游戏版本号低!不建议安装,是否继续?';
if MsgBox( mFailedInfo, mbInformation, MB_YESNO) = IDNO then
begin
Abort;
end
else
begin
mVersionFlag := 2;
end
end
//版本很低
else if( mVersionFlag = 0 ) and ( vertoint(mVersionNum) < vertoint(mFromVersion ) ) then
begin
mFailedInfo := '您的客户端版本小于'+mFromVersion+',安装后还需要完全更新才可以正常进行游戏!您确定要继续安装吗?';
if MsgBox( mFailedInfo, mbInformation, MB_YESNO) = IDNO then
begin
Abort;
end
else
begin
mVersionFlag := 2;
end
end
//
{ 创建页面 }
DataDirPage := CreateInputDirPage(wpSelectDir,
'选择安装目录', mDirSelectTip,
mDirSelectTip,
False, '');
DataDirPage.Add('');
{ 设置默认值,如果可能,使用这些设置最后一次贮存 }
DataDirPage.Values[0] := mInstallDir;
end;
procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
{ 贮存你可以下次进行恢复的设置 }
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
{ 跳过不显示的页面 }
if (PageID = DataDirPage.ID) and (mVersionFlag = 2) then
Result := False
else
Result := False;
end;
{
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo,
MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
S: String;
begin
// 填写带普通设置和自定义设置的“准备演示”
S := '';
S := S + '私人信息:' + NewLine;
S := S + NewLine;
S := S + '使用模式:' + NewLine + Space;
S := S + NewLine + NewLine;
Result := S;
end;
}
function GetUser(Param: String): String;
begin
{ Return a user value }
{ Could also be split into separate GetUserName and GetUserCompany functions }
end;
function GetDataDir(Param: String): String;
begin
{ Return the selected DataDir }
if (mVersionFlag = 1) then
Result := DataDirPage.Values[0]
else
Result := mInstallDir;
end;
function GetVersion(Param: String): String;
begin
Result := mToVersion;
end;
function GetVersionName(Param: String): String;
begin
Result := 'Software\SnailGame\Voyage_国际版'+mLargestVersionName;
end;
{是否从注册表里读出安装信息:安装目录和客户端版本}
function IsFindInstallInfo(Param: String): Integer;
var
mInstallDir: String;
mVersionNum: String;
begin
if RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\SnailGame\Voyage_国际版') then
begin
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\SnailGame\Voyage_国际版', 'InstallDir', mInstallDir ) then
MsgBox('InstallDir: ' + mInstallDir, mbInformation, MB_OK);
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\SnailGame\Voyage_国际版', 'ver', mVersionNum ) then
MsgBox('ver: ' + mVersionNum, mbInformation, MB_OK);
Result := 0
end
else
Result := 1;
end;
[Languages]
;Name: "en"; MessagesFile: "compiler:Defaulte.isl"
Name: "chi"; MessagesFile: "compiler:Defaultc.isl"
[Files]
;Source: "F:\Work\setuptool\voyage0.34~0.35\boost_test.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "*"; DestDir: "{code:GetDataDir}"; Flags: createallsubdirs recursesubdirs overwritereadonly ignoreversion
; 注意: 不要在任何共享系统文件中使用“Flags: ignoreversion”
[Registry]
Root: HKLM; Subkey: "Software\SnailGame"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\SnailGame\Voyage_国际版"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\SnailGame\Voyage_国际版"; ValueType: string; ValueName: "InstallDir"; ValueData: "{code:GetDataDir}"
Root: HKLM; Subkey: "Software\SnailGame\Voyage_国际版"; ValueType: string; ValueName: "ver"; ValueData: "{code:GetVersion}"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -