杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2038|回复: 0

Inno Setup多语言版本

[复制链接]
发表于 2017-2-26 14:19:41 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. ; 安装程序制作脚本
  2. ; 每次打包要更改: [Setup]/OutputBaseFilename, #Include 包含文件。
  3. ; 增加语言包之后只需要修改 ISS_EN文件。

  4. [Setup]
  5. AppName= xxx
  6. VersionInfoDescription = xxx
  7. DefaultDirName= {code:myInstallPath}
  8. DisableProgramGroupPage= yes
  9. LicenseFile= License.txt
  10. UninstallDisplayIcon= {app}\xxx
  11. OutputDir= D:\
  12. PrivilegesRequired = admin

  13. ; 每次发布时需修改的文本 开始 <<<<<<<<<<<<<<
  14. AppVerName= xxx
  15. VersionInfoVersion = 1.2.3.4

  16. ; #include "ISS_EN.txt"
  17. #include "ISS_CN.txt"
  18. ; #include "ISS_TW.txt"


  19. ; 每次发布时需修改的文本 结束 >>>>>>>>>>>>>>

  20. Source: "License.txt";        DestDir: "{app}"
  21. Source: "xxx.exe";      DestDir: "{app}"; Flags:ignoreversion
  22. Source: "service\a.exe"; DestDir: "{app}"; check: TestService

  23. [Run]
  24. ; 英文 ===============
  25. Filename: "{app}\xxx.exe"; Description:"&Launch xxx";   Flags:postinstall nowait skipifsilent; Check: GetSysLang_EN
  26. Filename: "hh.exe"; Parameters:"{app}\xxx.chm::/QuickStart.htm"; Description:"&Read Quick Start Guide now"; Flags:postinstall nowait skipifsilent unchecked; Check: GetSysLang_EN
  27. ; 中文 ===============
  28. Filename: "{app}\xxx.exe"; Description:"运行xxx(&L)";   Flags:postinstall nowait skipifsilent; Check: GetSysLang_CN
  29. Filename: "hh.exe"; Parameters:"{app}\xxx.chm::/QuickStart.htm"; Description:"阅读初次使用指南(&R)"; Flags:postinstall nowait skipifsilent unchecked; Check: GetSysLang_CN

  30. [Tasks]
  31. ; 英文 ===============
  32. Name: DesktopIcon; Description:"Create a &desktop icon"; GroupDescription:"Additional icons:"                               ; Check: GetSysLang_EN;
  33. Name: QuickLaunchIcon; Description: "Create a &Quick Launch icon"; GroupDescription: "Additional icons:" ; Flags:Unchecked  ; Check: GetSysLang_EN;
  34. ; 中文 ===============
  35. Name: DesktopIcon; Description:"创建桌面图标(&D)"; GroupDescription:"其它图标:"                               ; Check: GetSysLang_CN;
  36. Name: QuickLaunchIcon; Description: "创建快速启动栏图标(&Q)"; GroupDescription: "其它图标:"; Flags:Unchecked  ; Check: GetSysLang_CN;

  37. [Icons]
  38. Name: "{commonprograms}\xxx\xxx"; Filename: "{app}\xxx.exe"
  39. Name: "{commonprograms}\xxx\Help"; Filename: "{app}\xxx.chm"
  40. Name: "{commonprograms}\xxx\Uninstall xxx"; Filename: "{uninstallexe}"
  41. Name: "{userdesktop}\xxx"; Filename: "{app}\xxx.exe"; Tasks:desktopicon
  42. Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\xxx"; Filename: "{app}\xxx.exe"; Tasks:QuickLaunchIcon

  43. [Registry]
  44. Root: HKLM; SubKey: "SoftWare\xxx"; Flags: createvalueifdoesntexist
  45. Root: HKLM; Subkey: "Software\xxx"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"


  46. ;卸载程序时删除服务。用 remove 参数防止出现提示信息。
  47. [UninstallRun]
  48. Filename: "{app}\xx.exe"; Parameters: "/remove"; Flags: runhidden

  49. [UninstallDelete]
  50. Type: files; Name: "{app}\aabbcc"



  51. ;===========================================================
  52. ;以下为安装脚本 & 代码
  53. ;===========================================================

  54. [Code]
  55. var
  56.   bServiceRunning,bStopService: boolean;
  57.   sdir: string;
  58.   
  59. const
  60.   SC_MANAGER_CONNECT             = $0001;
  61.   SC_MANAGER_CREATE_SERVICE      = $0002;
  62.   SC_MANAGER_ENUMERATE_SERVICE   = $0004;
  63.   SC_MANAGER_LOCK                = $0008;
  64.   SC_MANAGER_QUERY_LOCK_STATUS   = $0010;
  65.   SC_MANAGER_MODIFY_BOOT_CONFIG  = $0020;
  66.   STANDARD_RIGHTS_REQUIRED = $000F0000;
  67.   SC_MANAGER_ALL_ACCESS          = (STANDARD_RIGHTS_REQUIRED or
  68.                                     SC_MANAGER_CONNECT or
  69.                                     SC_MANAGER_CREATE_SERVICE or
  70.                                     SC_MANAGER_ENUMERATE_SERVICE or
  71.                                     SC_MANAGER_LOCK or
  72.                                     SC_MANAGER_QUERY_LOCK_STATUS or
  73.                                     SC_MANAGER_MODIFY_BOOT_CONFIG);
  74.   SERVICE_QUERY_CONFIG           = $0001;
  75.   SERVICE_CHANGE_CONFIG          = $0002;
  76.   SERVICE_QUERY_STATUS           = $0004;
  77.   SERVICE_ENUMERATE_DEPENDENTS   = $0008;
  78.   SERVICE_START                  = $0010;
  79.   SERVICE_STOP                   = $0020;
  80.   SERVICE_PAUSE_CONTINUE         = $0040;
  81.   SERVICE_INTERROGATE            = $0080;
  82.   SERVICE_USER_DEFINED_CONTROL   = $0100;
  83.   SERVICE_ALL_ACCESS             = (STANDARD_RIGHTS_REQUIRED or
  84.                                     SERVICE_QUERY_CONFIG or
  85.                                     SERVICE_CHANGE_CONFIG or
  86.                                     SERVICE_QUERY_STATUS or
  87.                                     SERVICE_ENUMERATE_DEPENDENTS or
  88.                                     SERVICE_START or
  89.                                     SERVICE_STOP or
  90.                                     SERVICE_PAUSE_CONTINUE or
  91.                                     SERVICE_INTERROGATE or
  92.                                     SERVICE_USER_DEFINED_CONTROL);
  93.   SERVICE_CONTROL_STOP           = $00000001;
  94.   SERVICE_RUNNING                = $00000004;

  95.   SM_DBCSENABLED = 42;

  96.   
  97. type
  98.   _SERVICE_STATUS = record
  99.     dwServiceType: DWORD;
  100.     dwCurrentState: DWORD;
  101.     dwControlsAccepted: DWORD;
  102.     dwWin32ExitCode: DWORD;
  103.     dwServiceSpecificExitCode: DWORD;
  104.     dwCheckPoint: DWORD;
  105.     dwWaitHint: DWORD;
  106.   end;
  107.   TServiceStatus = _SERVICE_STATUS;

  108. function OpenSCManager(lpMachineName, lpDatabaseName: PChar; dwDesiredAccess: DWORD): DWORD;
  109. external 'OpenSCManagerA@advapi32.dll stdcall delayload setuponly';
  110. function OpenService(hSCManager: DWORD; lpServiceName: PChar; dwDesiredAccess: DWORD): DWORD;
  111. external 'OpenServiceA@advapi32.dll stdcall delayload setuponly';
  112. function ControlService(hService: DWORD; dwControl: DWORD; var lpServiceStatus: TServiceStatus): BOOL;
  113. external 'ControlService@advapi32.dll stdcall delayload setuponly';
  114. function QueryServiceStatus(hService: DWORD; var lpServiceStatus: TServiceStatus): BOOL;
  115. external 'QueryServiceStatus@advapi32.dll stdcall delayload setuponly';
  116. function CloseServiceHandle(hSCObject: DWORD): BOOL;
  117. external 'CloseServiceHandle@advapi32.dll stdcall delayload setuponly';
  118. function StartService(hService: DWORD; dwNumServiceArgs: DWORD; var lpServiceArgVectors: PChar): BOOL;
  119. external 'StartServiceA@advapi32.dll stdcall delayload setuponly';

  120. function GetSystemMetrics(nIndex: Integer): Integer;
  121. external 'GetSystemMetrics@user32.dll stdcall setuponly';
  122. function GetACP: LongWord;
  123. external 'GetACP@kernel32.dll stdcall setuponly';



  124. Function TestService: boolean;
  125. begin
  126.   if UsingWinNT then
  127.     result:= not bServiceRunning or bStopService
  128.   else
  129.     result:= true;
  130. end;


  131. { 安装开始时初始化变量 }
  132. function InitializeSetup(): Boolean;
  133. begin
  134. end;


  135. { 点击下一步按钮 }
  136. function NextButtonClick(CurPageID: Integer): Boolean;
  137. begin
  138.   case CurPageID of
  139.     wpSelectTasks:
  140.     begin
  141.     end;
  142.   end;
  143.   result:= true;
  144. end;


  145. procedure DeinitializeSetup();
  146. var
  147.   retcode: integer;
  148. begin
  149.   if not UsingWinNT then exit;
  150. end;


  151. { 获取注册表中保存的默认安装路径 }
  152. function myInstallPath(Default: string): string;
  153. var
  154.   mypath: string;
  155. begin
  156.   mypath:= '';
  157.   RegQueryStringValue( HKLM, 'SoftWare\xxx', 'InstallPath', mypath );
  158.   if mypath = '' then
  159.     mypath := ExpandConstant('{pf}') + '\xxx' ;
  160.   result:= mypath;
  161. end;


  162. { ===================================================================== }


  163. { 用 PASCAL 脚本实现的类条件编译。}
  164. Function GetSysLang_CN: boolean;
  165. begin
  166.   result:= (GetSystemMetrics(SM_DBCSENABLED) > 0) and ( GetACP = 936 );
  167. end;

  168. Function GetSysLang_TW: boolean;
  169. begin
  170.   result:= true;
  171. end;

  172. Function GetSysLang_EN: boolean;
  173. begin
  174.   result:= not GetSysLang_CN;
  175. end;

  176. ISS_CN.txt

  177. ;[Setup]
  178. OutputBaseFilename= setup2

  179. [Files]
  180. Source: "..\Help_CN\x.chm";   DestDir: "{app}";

  181. [Languages]
  182. Name: "cn"; MessagesFile: "compiler:Languages\ChineseSimp.isl"

  183. [Files]

  184. ISS_EN.txt

  185. OutputBaseFilename= setup1

  186. [Files]
  187. Source: "..\Help\x.chm";      DestDir: "{app}";

  188. ISS_TW.txt

  189. ;[Setup]
  190. OutputBaseFilename= setup3

  191. [Files]
  192. Source: "..\Help_TW\x.chm";   DestDir: "{app}";
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-19 12:31 , Processed in 0.102379 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表