📄 updatescripttemplatee.iss
字号:
; 脚本用 Inno Setup 脚本向导生成。
; 查阅文档获取创建 INNO SETUP 脚本文件详细资料!
[Setup]
AppName=Voyagecentury International Updater
AppVerName=Voyagecentury International Updater
LicenseFile=license.txt
DisableProgramGroupPage=yes
DisableDirPage=yes
DefaultDirName={pf}\Voyagecentury International
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_International') then
begin
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\SnailGame\Voyage_International', 'InstallDir', mInstallDir ) then
//MsgBox('InstallDir: ' + mInstallDir, mbInformation, MB_OK)
else
mVersionFlag := 1;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\SnailGame\Voyage_International', 'ver', mVersionNum ) then
begin
{MsgBox('ver: ' + mVersionNum, mbInformation, MB_OK); }
end
else
mVersionFlag := 1;
mDirSelectTip := 'Update program has find <<Voyagecentury International>> install path:'+mInstallDir+'. Press next button the continue.';
end
else
begin
mVersionFlag := 1;
//MsgBox('没有找到注册信息', mbInformation, MB_OK);
mDirSelectTip := ' Update program cannot find the install path,if you have installed <<Voyagecentury International>>, please select the install path manually';
//mInstallDir := 'f:\app';
end
//更新包的版本号比游戏版本号相同
if( mVersionFlag = 0 ) and ( vertoint(mVersionNum) = vertoint(mToVersion )) then
begin
mFailedInfo := 'Your game version is'+mToVersion+'! reinstall the game?';
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 := 'Patch version is lower than game version, It is not suggested to install the patch, are you sure to continue?';
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 := 'Client version is lower than'+mFromVersion+',please fullly update the game after installtion, before you start?';
if MsgBox( mFailedInfo, mbInformation, MB_YESNO) = IDNO then
begin
Abort;
end
else
begin
mVersionFlag := 2;
end
end
//
{ 创建页面 }
DataDirPage := CreateInputDirPage(wpSelectDir,
'Select install directory', 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_International'+mLargestVersionName;
end;
{是否从注册表里读出安装信息:安装目录和客户端版本}
function IsFindInstallInfo(Param: String): Integer;
var
mInstallDir: String;
mVersionNum: String;
begin
if RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\SnailGame\Voyage_International') then
begin
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\SnailGame\Voyage_International', 'InstallDir', mInstallDir ) then
MsgBox('InstallDir: ' + mInstallDir, mbInformation, MB_OK);
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\SnailGame\Voyage_International', '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_International"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\SnailGame\Voyage_International"; ValueType: string; ValueName: "InstallDir"; ValueData: "{code:GetDataDir}"
Root: HKLM; Subkey: "Software\SnailGame\Voyage_International"; ValueType: string; ValueName: "ver"; ValueData: "{code:GetVersion}"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -