⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 updatescripttemplatee.iss

📁 本程序实现了windows环境下的安装包打包功能,具体见源码
💻 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 + -