Shared.Struct.pas 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  1. unit Shared.Struct;
  2. {
  3. Inno Setup
  4. Copyright (C) 1997-2025 Jordan Russell
  5. Portions by Martijn Laan
  6. For conditions of distribution and use, see LICENSE.TXT.
  7. Various records and other types that are shared by the ISCmplr, Setup,
  8. SetupLdr, and Uninst projects
  9. }
  10. interface
  11. uses
  12. Windows, SHA256;
  13. const
  14. SetupTitle = 'Inno Setup';
  15. SetupVersion = '6.7.1';
  16. SetupBinVersion = (6 shl 24) + (7 shl 16) + (1 shl 8) + 0;
  17. type
  18. TSetupID = array[0..63] of AnsiChar;
  19. TUninstallLogID = array[0..63] of AnsiChar;
  20. TMessagesHdrID = array[0..63] of AnsiChar;
  21. TMessagesLangOptionsID = array[1..8] of AnsiChar;
  22. TCompID = array[1..4] of AnsiChar;
  23. TDiskSliceID = array[1..8] of AnsiChar;
  24. const
  25. { SetupID is used by the Setup program to check if the Setup.0 file is
  26. compatible with it. If you make any modifications to the records in
  27. this file it's recommended you change SetupID. Any change will do (like
  28. changing the letters or numbers), as long as your format is
  29. unrecognizable by the standard Inno Setup. }
  30. SetupID: TSetupID = 'Inno Setup Setup Data (6.7.0)';
  31. UninstallLogID: array[Boolean] of TUninstallLogID =
  32. ('Inno Setup Uninstall Log (b)', 'Inno Setup Uninstall Log (b) 64-bit');
  33. MessagesHdrID: TMessagesHdrID = 'Inno Setup Messages (6.5.0) (u)';
  34. MessagesLangOptionsID: TMessagesLangOptionsID = '!mlo!670';
  35. ZLIBID: TCompID = 'zlb'#26;
  36. DiskSliceID: TDiskSliceID = 'idskb32'#26;
  37. type
  38. TSetupVersionDataVersion = packed record
  39. Build: Word;
  40. Minor, Major: Byte;
  41. end;
  42. PSetupVersionData = ^TSetupVersionData;
  43. TSetupVersionData = packed record
  44. WinVersion, NTVersion: Cardinal;
  45. NTServicePack: Word;
  46. end;
  47. TSetupHeaderOption = (shDisableStartupPrompt, shCreateAppDir,
  48. shAllowNoIcons, shAlwaysRestart, shAlwaysUsePersonalGroup,
  49. shEnableDirDoesntExistWarning, shPassword, shAllowRootDirectory,
  50. shDisableFinishedPage, shUpdateUninstallLogAppName, shDisableReadyMemo,
  51. shAlwaysShowComponentsList, shFlatComponentsList, shShowComponentSizes,
  52. shDisableReadyPage, shAlwaysShowDirOnReadyPage, shAlwaysShowGroupOnReadyPage,
  53. shAllowUNCPath, shUserInfoPage,
  54. shUninstallRestartComputer, shRestartIfNeededByRun, shShowTasksTreeLines,
  55. shAllowCancelDuringInstall, shWizardImageStretch, shAppendDefaultDirName,
  56. shAppendDefaultGroupName, shSetupLogging,
  57. shSignedUninstaller, shUsePreviousLanguage, shDisableWelcomePage,
  58. shCloseApplications, shRestartApplications, shAllowNetworkDrive,
  59. shForceCloseApplications, shAppNameHasConsts, shUsePreviousPrivileges,
  60. shUninstallLogging, shWizardModern, shWizardBorderStyled,
  61. shWizardKeepAspectRatio, shRedirectionGuard, shWizardBevelsHidden,
  62. shUnusedPadding = 56);
  63. { ^ Contains padding to raise the amount of flags to 57, ensuring the size of
  64. the set is 8 bytes (instead of less) in 32-bit builds. This prevents
  65. incompatibility with 64-bit builds, where the minimum size for a set with
  66. more than 32 flags is 8 bytes. Once the amount of actual flags reaches
  67. 57, the padding can be removed, as the set will then be naturally
  68. compatible again between 32-bit and 64-bit builds. Note that this is not
  69. necessary for sets with fewer than 32 flags, which is why only
  70. TSetupHeaderOption and TSetupFileEntry include this padding. Also see
  71. https://stackoverflow.com/questions/30336620/enumeration-set-size-in-x64 }
  72. TSetupHeaderOptions = packed set of TSetupHeaderOption;
  73. { ^ Adding more flags adds 1 byte for every 8 flags, in both 32-bit and
  74. 64-bit builds, even without specifying packed. But to be sure we specify
  75. it anyway. }
  76. TSetupLanguageDetectionMethod = (ldUILanguage, ldLocale, ldNone);
  77. TSetupCompressMethod = (cmStored, cmZip, cmBzip, cmLZMA, cmLZMA2);
  78. TSetupKDFSalt = array[0..15] of Byte;
  79. TSetupEncryptionKey = array[0..31] of Byte;
  80. TSetupEncryptionNonce = record
  81. RandomXorStartOffset: Int64;
  82. RandomXorFirstSlice: Int32;
  83. RemainingRandom: array[0..2] of Int32;
  84. end;
  85. TSetupProcessorArchitecture = (paUnknown, paX86, paX64, paArm32, paArm64);
  86. TSetupProcessorArchitectures = set of TSetupProcessorArchitecture;
  87. TSetupDisablePage = (dpAuto, dpNo, dpYes);
  88. TSetupPrivilegesRequired = (prNone, prPowerUser, prAdmin, prLowest);
  89. TSetupPrivilegesRequiredOverride = (proCommandLine, proDialog);
  90. TSetupPrivilegesRequiredOverrides = set of TSetupPrivilegesRequiredOverride;
  91. TSetupWizardDarkStyle = (wdsLight, wdsDark, wdsDynamic);
  92. TSetupWizardLightControlStyling = (wcsAll, wcsAllButButtons, wcsOnlyRequired);
  93. const
  94. SetupProcessorArchitectureNames: array[TSetupProcessorArchitecture] of String =
  95. ('Unknown', 'x86', 'x64', 'Arm32', 'Arm64');
  96. type
  97. { Should not contain strings }
  98. TSetupEncryptionHeader = packed record
  99. EncryptionUse: (euNone, euFiles, euFull);
  100. KDFSalt: TSetupKDFSalt;
  101. KDFIterations: Integer;
  102. BaseNonce: TSetupEncryptionNonce;
  103. PasswordTest: Integer;
  104. end;
  105. const
  106. SetupHeaderStrings = 39;
  107. SetupHeaderAnsiStrings = 4;
  108. type
  109. TSetupHeader = packed record
  110. AppName, AppVerName, AppId, AppCopyright, AppPublisher, AppPublisherURL,
  111. AppSupportPhone, AppSupportURL, AppUpdatesURL, AppVersion, DefaultDirName,
  112. DefaultGroupName, BaseFilename, UninstallFilesDir, UninstallDisplayName,
  113. UninstallDisplayIcon, AppMutex, DefaultUserInfoName, DefaultUserInfoOrg,
  114. DefaultUserInfoSerial, AppReadmeFile, AppContact, AppComments,
  115. AppModifyPath, CreateUninstallRegKey, Uninstallable, CloseApplicationsFilter,
  116. SetupMutex, ChangesEnvironment, ChangesAssociations,
  117. ArchitecturesAllowed, ArchitecturesInstallIn64BitMode, CloseApplicationsFilterExcludes,
  118. SevenZipLibraryName, UsePreviousAppDir, UsePreviousGroup, UsePreviousSetupType,
  119. UsePreviousTasks, UsePreviousUserInfo: String;
  120. LicenseText, InfoBeforeText, InfoAfterText, CompiledCodeText: AnsiString;
  121. NumLanguageEntries, NumCustomMessageEntries, NumPermissionEntries,
  122. NumTypeEntries, NumComponentEntries, NumTaskEntries, NumDirEntries,
  123. NumISSigKeyEntries, NumFileEntries, NumFileLocationEntries, NumIconEntries, NumIniEntries,
  124. NumRegistryEntries, NumInstallDeleteEntries, NumUninstallDeleteEntries,
  125. NumRunEntries, NumUninstallRunEntries: Integer;
  126. MinVersion, OnlyBelowVersion: TSetupVersionData;
  127. WizardSizePercentX, WizardSizePercentY: Integer;
  128. WizardDarkStyle: TSetupWizardDarkStyle;
  129. WizardImageAlphaFormat: (afIgnored, afDefined, afPremultiplied); // Must be same as Graphics.TAlphaFormat
  130. WizardImageBackColor, WizardSmallImageBackColor, WizardBackColor: Integer;
  131. WizardImageBackColorDynamicDark, WizardSmallImageBackColorDynamicDark, WizardBackColorDynamicDark: Integer;
  132. WizardImageOpacity, WizardBackImageOpacity: Byte;
  133. WizardLightControlStyling: TSetupWizardLightControlStyling;
  134. ExtraDiskSpaceRequired: Int64;
  135. SlicesPerDisk: Integer;
  136. UninstallLogMode: (lmAppend, lmNew, lmOverwrite);
  137. DirExistsWarning: (ddAuto, ddNo, ddYes);
  138. PrivilegesRequired: TSetupPrivilegesRequired;
  139. PrivilegesRequiredOverridesAllowed: TSetupPrivilegesRequiredOverrides;
  140. ShowLanguageDialog: (slYes, slNo, slAuto);
  141. LanguageDetectionMethod: TSetupLanguageDetectionMethod;
  142. CompressMethod: TSetupCompressMethod;
  143. DisableDirPage, DisableProgramGroupPage: TSetupDisablePage;
  144. UninstallDisplaySize: Int64;
  145. Options: TSetupHeaderOptions;
  146. end;
  147. const
  148. SetupPermissionEntryStrings = 0;
  149. SetupPermissionEntryAnsiStrings = 1;
  150. type
  151. PSetupPermissionEntry = ^TSetupPermissionEntry;
  152. TSetupPermissionEntry = packed record
  153. Permissions: AnsiString; { an array of TGrantPermissionEntry's }
  154. end;
  155. const
  156. SetupLanguageEntryStrings = 4;
  157. SetupLanguageEntryAnsiStrings = 4;
  158. type
  159. PSetupLanguageEntry = ^TSetupLanguageEntry;
  160. TSetupLanguageEntry = packed record
  161. Name, LanguageName, DialogFontName, WelcomeFontName: String;
  162. Data, LicenseText, InfoBeforeText, InfoAfterText: AnsiString;
  163. LanguageID: Word;
  164. DialogFontSize, DialogFontBaseScaleHeight, DialogFontBaseScaleWidth: Integer;
  165. WelcomeFontSize: Integer;
  166. RightToLeft: Boolean;
  167. end;
  168. const
  169. SetupCustomMessageEntryStrings = 2;
  170. SetupCustomMessageEntryAnsiStrings = 0;
  171. type
  172. PSetupCustomMessageEntry = ^TSetupCustomMessageEntry;
  173. TSetupCustomMessageEntry = packed record
  174. Name, Value: String;
  175. LangIndex: Integer;
  176. end;
  177. const
  178. SetupTypeEntryStrings = 4;
  179. SetupTypeEntryAnsiStrings = 0;
  180. type
  181. TSetupTypeOption = (toIsCustom);
  182. TSetupTypeOptions = set of TSetupTypeOption;
  183. TSetupTypeType = (ttUser, ttDefaultFull, ttDefaultCompact, ttDefaultCustom);
  184. PSetupTypeEntry = ^TSetupTypeEntry;
  185. TSetupTypeEntry = packed record
  186. Name, Description, Languages, CheckOnce: String;
  187. MinVersion, OnlyBelowVersion: TSetupVersionData;
  188. Options: TSetupTypeOptions;
  189. Typ: TSetupTypeType;
  190. { internally used: }
  191. Size: Int64;
  192. end;
  193. const
  194. SetupComponentEntryStrings = 5;
  195. SetupComponentEntryAnsiStrings = 0;
  196. type
  197. PSetupComponentEntry = ^TSetupComponentEntry;
  198. TSetupComponentEntry = packed record
  199. Name, Description, Types, Languages, CheckOnce: String;
  200. ExtraDiskSpaceRequired: Int64;
  201. Level: Byte;
  202. Used: Boolean;
  203. MinVersion, OnlyBelowVersion: TSetupVersionData;
  204. Options: set of (coFixed, coRestart, coDisableNoUninstallWarning,
  205. coExclusive, coDontInheritCheck);
  206. { internally used: }
  207. Size: Int64;
  208. end;
  209. const
  210. SetupTaskEntryStrings = 6;
  211. SetupTaskEntryAnsiStrings = 0;
  212. type
  213. PSetupTaskEntry = ^TSetupTaskEntry;
  214. TSetupTaskEntry = packed record
  215. Name, Description, GroupDescription, Components, Languages, Check: String;
  216. Level: Byte;
  217. Used: Boolean;
  218. MinVersion, OnlyBelowVersion: TSetupVersionData;
  219. Options: set of (toExclusive, toUnchecked, toRestart, toCheckedOnce,
  220. toDontInheritCheck);
  221. end;
  222. const
  223. SetupDirEntryStrings = 7;
  224. SetupDirEntryAnsiStrings = 0;
  225. type
  226. PSetupDirEntry = ^TSetupDirEntry;
  227. TSetupDirEntry = packed record
  228. DirName: String;
  229. Components, Tasks, Languages, Check, AfterInstall, BeforeInstall: String;
  230. Attribs: Integer;
  231. MinVersion, OnlyBelowVersion: TSetupVersionData;
  232. PermissionsEntry: Smallint;
  233. Options: set of (doUninsNeverUninstall, doDeleteAfterInstall,
  234. doUninsAlwaysUninstall, doSetNTFSCompression, doUnsetNTFSCompression);
  235. end;
  236. const
  237. SetupISSigKeyEntryStrings = 3;
  238. SetupISSigKeyEntryAnsiStrings = 0;
  239. type
  240. PSetupISSigKeyEntry = ^TSetupISSigKeyEntry;
  241. TSetupISSigKeyEntry = packed record
  242. PublicX, PublicY, RuntimeID: String;
  243. end;
  244. const
  245. SetupFileEntryStrings = 15;
  246. SetupFileEntryAnsiStrings = 1;
  247. type
  248. PSetupFileEntry = ^TSetupFileEntry;
  249. TSetupFileVerificationType = (fvNone, fvHash, fvISSig);
  250. TSetupFileVerification = packed record
  251. ISSigAllowedKeys: AnsiString; { Must be first }
  252. Hash: TSHA256Digest;
  253. Typ: TSetupFileVerificationType;
  254. end;
  255. TSetupFileEntryOption = (foConfirmOverwrite, foUninsNeverUninstall, foRestartReplace,
  256. foDeleteAfterInstall, foRegisterServer, foRegisterTypeLib, foSharedFile,
  257. foCompareTimeStamp, foFontIsntTrueType,
  258. foSkipIfSourceDoesntExist, foOverwriteReadOnly, foOverwriteSameVersion,
  259. foCustomDestName, foOnlyIfDestFileExists, foNoRegError,
  260. foUninsRestartDelete, foOnlyIfDoesntExist, foIgnoreVersion,
  261. foPromptIfOlder, foDontCopy, foUninsRemoveReadOnly,
  262. foRecurseSubDirsExternal, foReplaceSameVersionIfContentsDiffer,
  263. foDontVerifyChecksum, foUninsNoSharedFilePrompt, foCreateAllSubDirs,
  264. fo32Bit, fo64Bit, foExternalSizePreset, foSetNTFSCompression,
  265. foUnsetNTFSCompression, foGacInstall, foDownload,
  266. foExtractArchive, foUnusedPadding = 56);
  267. { ^ See TSetupHeaderOption above}
  268. TSetupFileEntryOptions = packed set of TSetupFileEntryOption;
  269. { ^ See TSetupHeaderOptions above}
  270. TSetupFileEntry = packed record
  271. SourceFilename, DestName, InstallFontName, StrongAssemblyName, Components,
  272. Tasks, Languages, Check, AfterInstall, BeforeInstall, Excludes,
  273. DownloadISSigSource, DownloadUserName, DownloadPassword, ExtractArchivePassword: String;
  274. Verification: TSetupFileVerification; { Must be first after strings }
  275. MinVersion, OnlyBelowVersion: TSetupVersionData;
  276. LocationEntry: Integer;
  277. Attribs: Integer;
  278. ExternalSize: Int64;
  279. PermissionsEntry: Smallint;
  280. Options: TSetupFileEntryOptions;
  281. FileType: (ftUserFile, ftUninstExe);
  282. end;
  283. const
  284. SetupFileLocationEntryStrings = 0;
  285. SetupFileLocationEntryAnsiStrings = 0;
  286. type
  287. PSetupFileLocationEntry = ^TSetupFileLocationEntry;
  288. TSetupFileLocationEntry = packed record
  289. FirstSlice, LastSlice: Integer;
  290. StartOffset: Int64;
  291. ChunkSuboffset: Int64;
  292. OriginalSize: Int64;
  293. ChunkCompressedSize: Int64;
  294. SHA256Sum: TSHA256Digest;
  295. TimeStamp: TFileTime;
  296. FileVersionMS, FileVersionLS: DWORD;
  297. Flags: set of (floVersionInfoValid, floTimeStampInUTC, floCallInstructionOptimized,
  298. floChunkEncrypted, floChunkCompressed);
  299. end;
  300. const
  301. SetupIconEntryStrings = 13;
  302. SetupIconEntryAnsiStrings = 0;
  303. type
  304. TSetupIconCloseOnExit = (icNoSetting, icYes, icNo);
  305. PSetupIconEntry = ^TSetupIconEntry;
  306. TSetupIconEntry = packed record
  307. IconName, Filename, Parameters, WorkingDir, IconFilename, Comment: String;
  308. Components, Tasks, Languages, Check, AfterInstall, BeforeInstall: String;
  309. AppUserModelID: String;
  310. AppUserModelToastActivatorCLSID: TGUID;
  311. MinVersion, OnlyBelowVersion: TSetupVersionData;
  312. IconIndex, ShowCmd: Integer;
  313. CloseOnExit: TSetupIconCloseOnExit;
  314. HotKey: Word;
  315. Options: set of (ioUninsNeverUninstall, ioCreateOnlyIfFileExists,
  316. ioUseAppPaths, ioExcludeFromShowInNewInstall,
  317. ioPreventPinning, ioHasAppUserModelToastActivatorCLSID);
  318. end;
  319. const
  320. SetupIniEntryStrings = 10;
  321. SetupIniEntryAnsiStrings = 0;
  322. type
  323. PSetupIniEntry = ^TSetupIniEntry;
  324. TSetupIniEntry = packed record
  325. Filename, Section, Entry, Value: String;
  326. Components, Tasks, Languages, Check, AfterInstall, BeforeInstall: String;
  327. MinVersion, OnlyBelowVersion: TSetupVersionData;
  328. Options: set of (ioCreateKeyIfDoesntExist, ioUninsDeleteEntry,
  329. ioUninsDeleteEntireSection, ioUninsDeleteSectionIfEmpty,
  330. { internally used: }
  331. ioHasValue);
  332. end;
  333. const
  334. SetupRegistryEntryStrings = 9;
  335. SetupRegistryEntryAnsiStrings = 0;
  336. type
  337. PSetupRegistryEntry = ^TSetupRegistryEntry;
  338. TSetupRegistryEntry = packed record
  339. Subkey, ValueName, ValueData: String;
  340. Components, Tasks, Languages, Check, AfterInstall, BeforeInstall: String;
  341. MinVersion, OnlyBelowVersion: TSetupVersionData;
  342. RootKey: UInt32; { Not using HKEY because it equals NativeUInt. UInt32 fits all predefined keys and utReg* use Integer to store it. }
  343. PermissionsEntry: Smallint;
  344. Typ: (rtNone, rtString, rtExpandString, rtDWord, rtBinary, rtMultiString, rtQWord);
  345. Options: set of (roCreateValueIfDoesntExist, roUninsDeleteValue,
  346. roUninsClearValue, roUninsDeleteEntireKey, roUninsDeleteEntireKeyIfEmpty,
  347. roPreserveStringType, roDeleteKey, roDeleteValue, roNoError,
  348. roDontCreateKey, ro32Bit, ro64Bit);
  349. end;
  350. const
  351. SetupDeleteEntryStrings = 7;
  352. SetupDeleteEntryAnsiStrings = 0;
  353. type
  354. TSetupDeleteType = (dfFiles, dfFilesAndOrSubdirs, dfDirIfEmpty);
  355. PSetupDeleteEntry = ^TSetupDeleteEntry;
  356. TSetupDeleteEntry = packed record
  357. Name: String;
  358. Components, Tasks, Languages, Check, AfterInstall, BeforeInstall: String;
  359. MinVersion, OnlyBelowVersion: TSetupVersionData;
  360. DeleteType: TSetupDeleteType;
  361. end;
  362. const
  363. SetupRunEntryStrings = 13;
  364. SetupRunEntryAnsiStrings = 0;
  365. type
  366. PSetupRunEntry = ^TSetupRunEntry;
  367. TSetupRunEntry = packed record
  368. Name, Parameters, WorkingDir, RunOnceId, StatusMsg, Verb: String;
  369. Description, Components, Tasks, Languages, Check, AfterInstall, BeforeInstall: String;
  370. MinVersion, OnlyBelowVersion: TSetupVersionData;
  371. ShowCmd: Integer;
  372. Wait: (rwWaitUntilTerminated, rwNoWait, rwWaitUntilIdle);
  373. Options: set of (roShellExec, roSkipIfDoesntExist,
  374. roPostInstall, roUnchecked, roSkipIfSilent, roSkipIfNotSilent,
  375. roHideWizard, roRun32Bit, roRun64Bit, roRunAsOriginalUser,
  376. roDontLogParameters, roLogOutput);
  377. end;
  378. const
  379. MaxGrantPermissionEntries = 32; { must keep in synch with Helper.c }
  380. type
  381. { TGrantPermissionEntry is stored inside string fields named 'Permissions' }
  382. TGrantPermissionSid = record { must keep in synch with Helper.c }
  383. Authority: TSIDIdentifierAuthority;
  384. SubAuthCount: Byte;
  385. SubAuth: array[0..1] of DWORD;
  386. end;
  387. TGrantPermissionEntry = record { must keep in synch with Helper.c }
  388. Sid: TGrantPermissionSid;
  389. AccessMask: DWORD;
  390. end;
  391. { A TDiskSliceHeader record follows DiskSliceID in a Setup-*.bin file }
  392. TDiskSliceHeader = packed record
  393. TotalSize: Int64;
  394. end;
  395. { A TMessageHeader record follows MessagesHdrID in a Setup.msg file }
  396. TMessagesHeader = packed record
  397. NumMessages: Cardinal;
  398. TotalSize: Cardinal;
  399. NotTotalSize: Cardinal;
  400. CRCMessages: Longint;
  401. end;
  402. { TSetupLdrOffsetTable is stored inside SetupLdr's SetupLdrOffsetTableResID
  403. RCDATA resource }
  404. PSetupLdrOffsetTable = ^TSetupLdrOffsetTable;
  405. TSetupLdrOffsetTable = record
  406. ID: array[1..12] of AnsiChar; { = SetupLdrOffsetTableID }
  407. Version: UInt32; { = SetupLdrOffsetTableVersion }
  408. TotalSize: Int64; { Minimum expected size of setup.exe }
  409. OffsetEXE: Int64; { Offset of compressed setup.e32 }
  410. UncompressedSizeEXE: UInt32; { Size of setup.e32 before compression }
  411. CRCEXE: Int32; { CRC of setup.e32 before compression }
  412. Offset0: Int64; { Offset of embedded setup-0.bin data }
  413. Offset1: Int64; { Offset of embedded setup-1.bin data,
  414. or 0 when DiskSpanning=yes }
  415. ReservedPadding: UInt32; { Not set (just provides padding) }
  416. TableCRC: Int32; { CRC of all prior fields in this record }
  417. end;
  418. { TMessagesLangOptions contains appearance settings used by the uninstaller
  419. and RegSvr, set when the .exe was last replaced, without being affected
  420. by any previously installed version. As a result, it is neither backward
  421. nor forward compatible, unlike TUninstallLogHeader. Be sure to update
  422. MessagesLangOptionsID whenever you make changes to this record. It is
  423. named TMessagesLangOptions because it is stored in the Setup.msg file,
  424. not because all options must be language-specific. }
  425. TMessagesLangOptionsFlag = (lfRightToLeft, lfWizardModern, lfWizardDarkStyleDark,
  426. lfWizardDarkStyleDynamic, lfWizardBorderStyled, lfWizardKeepAspectRatio,
  427. lfWizardBevelsHidden);
  428. TMessagesLangOptionsFlags = set of TMessagesLangOptionsFlag;
  429. TMessagesLangOptions = packed record
  430. ID: TMessagesLangOptionsID;
  431. DialogFontName: array[0..31] of Char;
  432. DialogFontSize, DialogFontBaseScaleWidth, DialogFontBaseScaleHeight: Integer;
  433. WizardSizePercentX, WizardSizePercentY: Integer;
  434. WizardBackColor, WizardBackColorDynamicDark: Integer;
  435. WizardLightControlStyling: TSetupWizardLightControlStyling;
  436. Flags: TMessagesLangOptionsFlags;
  437. end;
  438. TUninstallerMsgTail = packed record
  439. ID: Integer;
  440. Offset: Int64;
  441. end;
  442. const
  443. SetupLdrOffsetTableResID = 11111;
  444. SetupLdrOffsetTableID = 'rDlPtS'#$CD#$E6#$D7#$7B#$0B#$2A;
  445. SetupLdrOffsetTableVersion = 2;
  446. SetupExeModeOffset = $30;
  447. SetupExeModeUninstaller = $6E556E49;
  448. SetupExeModeRegSvr = $53526E49;
  449. UninstallerMsgTailID = $67734D49;
  450. implementation
  451. end.