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

📄 updatescripttemplatec.iss

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