Elurair (RO Patcher Lite+ROCred Merge) (c) 2012-2024 Ai4rei/AN
Universal auto-patcher for all your updating needs combined with a launcher, which is fully skinnable, highly customizable and easy on resources. Both the patcher and launcher parts can be also used separately. It is free of any cost and works on every 32-bit and 64-bit Microsoft* Windows* platform.
News
[2024-11-25] Release 2.17.0.457
This release adds th_TH localization, various new settings and support for EH/3 archives. It also fixes bunch of other things.
[2024-08-11] Release 2.16.2.434
This release adds a developer menu and fixes wrong saving of the "save" checkbox (CheckSave).
[2024-07-28] Release 2.16.1.424
This release fixes various wild crashes and removes telemetry.
[2024-07-17] Release 2.16.0.412
This release adds support for 7-Zip archives, custom zlib implementations and some experimental features, and fixes few other things.
[2024-05-14] Release 2.15.0.393
This release adds popup buttons and fr_FR localization, and fixes, among others, whatever went wrong in 2.14.0.
[2024-04-24] Notice about pulling release 2.14.0
During routine testing of the next release, an issue was found in the rsulib3 library, that could cause updated or deleted files in GRF archives to be updated incorrectly. The only affected version, 2.14.0, has thus been pulled. If you use this version in production, you are advised to downgrade to version 2.13.2 to mitigate the issue until a new version is available.
Apologies for any harm or inconvenience caused.
[2024-04-14] Release 2.14.0.369
This release adds 64-bit releases, support for custom toggles and improves loading performance of game archives containing millions of files.
[2023-12-31] Release 2.13.2.354
This release fixes problems when background media is paused on Windows Vista or newer.
Older entries
Can be found in the news archives.
Download
Do not provide mirrors for the downloads below. Do not hot-link to the downloads either. Link to this section. Thank you.
Latest release
This build is clean and ready for configuration. It will not work on its own.
2.17.0.457 (553 KB, 32-bit)
2.17.0.457 (616 KB, 64-bit)
Demo
This build is pre-configured to the sample configuration.
2.17.0.457 (292 KB, 32-bit)
2.17.0.457 (337 KB, 64-bit)
Previous versions
Use of these is at your own risk. They are mainly for archaeological research.
Documentation
The sample configuration elurair.default.ini is currently the only available documentation. If someone is willing to write a human-friendly guide, feel free to do so and let me know.
; ------------------------------------------------------------------ ; Elurair ; (c) 2012-2024 Ai4rei/AN ; ; ------------------------------------------------------------------ ; -*- UTF-8 -*- ; Lines starting with a semicolon (;) are comments and can be ; removed before embedding the config. ; Lines starting with [ and ending with ] are sections or groups of ; settings. All keys below a section belong to that section, until ; the start of the next section. ; Values that need to be fully enclosed in quotes ("), such as paths ; with spaces, need to escape the quotes with "". ; Numbers are always considered decimal (base 10) unless stated ; otherwise. ; Text is assumed to be UTF-8, some fields may be interpreted as ; system code page (ACP/ANSI). ; Note: The migration to full UTF-8 support is in progress. ; When a color value is required, it can be in one of the following ; CSS-like formats: ; #rgb hexadecimal (short) ; #rrggbb hexadecimal (long) ; rgb(r,g,b) decimal or hexadecimal ; rgb(r%,g%,b%) percentage ; When using compiled config, comments are removed automagically. [ROCred] ; Identifies this specific Elurair setup. This may be anything that ; uniquely describes the publisher of this setup, such as the server ; name. ; Note: This is needed for the password saving feature to work and ; allows for different games to have separately saved ; passwords. ;ConfigID=nachtwolke.ai4rei.com/sakray ConfigID= ; Whether or not username is remembered. ; Values: ; 0: No ; 1: Yes CheckSave=0 ; Whether or not password is remembered in addition to the username. ; Values: ; 0: No ; 1: Yes CheckSavePassword=0 ; Remembered user name. ; Note: If the password saving feature is enabled and active, this ; value is not used and the user name saved with the password ; is used instead. UserName= ; Minimum allowed length for user name input. UserNameMin=4 ; Minimum allowed length for password input. PassWordMin=4 ; Whether or not password should be MD5 hashed. ; Values: ; 0: Plaintext ; 1: MD5 hash ; Note: Depending on server-software, you may need to disable ; server-side hashing, to prevent the MD5 hashes from being ; rehashed before comparison with stored hashes. HashMD5=0 ; Salt pattern, when MD5 password hashing is used. ; Note: The user password is indicated with {password} and it may ; appear anywhere in the salt. ; Note: To use arbitrary byte values in the salt, use C-style ; escaping characters. ; Note: Using salted hashes may improve password safety against pre- ; computed attacks, but may require additional changes to the ; server software. ; Note: To not use salty MD5 hashes, leave the value blank. ; Example: ; \x8A\x16\x38\x73\x6B\x15\x73\x58\x4C\x13\x57\x1D\x6A\xA8\xE4\x31\x00\xEE\xB7\xA1\xA6\x6C\xA5\xBB\x41{password}\x38\xEC\xF7\xD3\xD6\xA8\x7E\x49\x89\x9C\x84\x98\x41\x87\x14 HashMD5Salt= ; Whether second instances are allowed or not. ; Values: ; 0: No ; 1: Yes ; Note: This setting is not meant as measure to prevent double ; clienting. SecondInstance=0 ; Whether or not the checkbox for remembering user name is ; available. ; Values: ; 0: Available ; 1: Unavailable PolicyNoCheckSave=0 ; Whether or not the notification icon is displayed when in ; background waiting for the client to complete. ; Values: ; 0: Display ; 1: Hide PolicyNoTrayIcon=0 ; Whether or not password is kept during a session when in ; background waiting for the client to complete. ; Values: ; 0: Kept (Convenience) ; 1: Not kept (Security) PolicyNoSessionPassword=0 ; Whether or not the credentials (user name and password) are ; requested when launching an application as client (ActionTypes 4 ; and 6). ; Values: ; 0: Launcher with user name and password input ; 1: Launcher without user name and password input (user ; authenticates through other means, ex. in the client) ; Note: When enabled, user name, password and save check box ; controls are not displayed and the MiscInfo setting has no ; effect. PolicyNoCredentials=0 ; Whether or not launching an application as client (ActionTypes 4 ; and 6) is allowed, when the patch process does not complete for ; whatever reason. ; Values: ; 0: All patch processes must complete successfully (Safer) ; 1: All patch processes must complete (Debugging) ; Note: Failure of a patch process is not a catastrophic failure. If ; the reason for the failure is removed (reconnect internet, ; free up space on disk, or close client or files in use), re- ; starting Elurair will reattempt the all previously failed ; patches to restore all files to a known state, which is ; Safer in the sense, that the client starts with consistent ; data. PolicyNoCheckPatchRotten=0 ; Semicolon-separated (;) list of configuration keys that cannot be ; overriden by an external user configuration. ; Note: Currently only keys from [ROCred] section are supported. ; Note: This setting only makes sense, if you use an embedded ; configuration file and should then contain at least the keys ; `PolicyNoUserConfigList` and `DevMode`. ; Note: Keys starting with underscore (_) cannot be restricted. PolicyNoUserConfigList= ; Font face of the dialog. ; Note: This should be one of the commonly installed type faces, ; such as Tahoma or Segoe UI. To use a custom font, embed it ; as a "TTF" resource type (resource name can be anything). ; For example the font "Angelina" may come as file "angel.ttf" ; and embedded as TTF/ANGEL/0, but `FontFace` must still be ; set to "Angelina". ; Note: If left empty, default UI font will be used. While this may ; make the UI style unpredicable to certain extent, it may be ; needed for non-latin scripts. FontFace=Tahoma ; Font size of buttons and edit controls in points. FontSize=9 ; Font size of status bar in points. FontSize2=9 ; Provides miscellaneous client information to the server as part of ; the password/hash data. The password/hash is provided as "key". ; Bitmask: ; &1: Hardware address of the network adapter (mac). ; Internet-bound adapters are searched first, otherwise ; the first available is picked. If the MAC address cannot ; be retrieved, "000000000000" is passed. ; Note: The user receives an agreement prompt the first time they ; provide the data to the server (privacy). ; Note: The server must be modified to support the data format. ; Example: mac=112233445566&key=mypwd123 ; Note: Password is always the last key-value pair and is not ; urlencoded. ; Note: Has no effect when PolicyNoCredentials is set. MiscInfo=0 ; Semicolon-separated (;) list of command line arguments to pass to ; applications run as client (button action type 4 and 6). ; Note: Argument references can be either named (key-value) or ; positional (zero-based). ; Example: 1;3;-key ; Command Line: elurair.exe xyz Aaa11Aa user -key deadf00d ; ^0 ^1 ^2 ^3 ^4 ^5 ; Button Action: ragexe.exe xyz user -key deadf00d 1rag1 ; ^1 ^3 ^key ^value ^other ; Example: -key;3;1 ; Command Line: elurair.exe xyz Aaa11Aa user -key deadf00d ; ^0 ^1 ^2 ^3 ^4 ^5 ; Button Action: ragexe.exe -key deadf00d user xyz 1rag1 ; ^key ^value ^3 ^1 ^other ; Note: Named arguments are case-sensitive. ; Note: Missing arguments are skipped. ; Note: Elurair-specific options starting with `-elurair:` are ; excluded from processing, thus do not count towards ; positional references and cannot be referenced by name. ; Note: This may be useful to pass-through external SSO ; authentication tokens to the client. If you use it for SSO ; you may want to set ROCred.PolicyNoCredentials setting to 1. ; DevMode Runes: ; N: Positional argument not found (code: list index) ; K: Named argument not found (code: list index) ; V: Named argument value not found (code: list index) ExternalArgs= ; Whether or not to invoke the default button action when all patch ; processes complete successfully (progress splash screen mode). ; Values: ; 0: Off ; 1: Auto-click default button after successful patching ; 2: Auto-click default button after successful patching; ; display errors in a message box and close Elurair ; afterwards (useful for skins such as "cat graffiti") ; Note: The default button is the one whose name is followed by #1. ; Note: This is meaningful, if Elurair should look like a splash ; screen, where no user interaction is expected. The only ; elements expected are: ; - Zero-sized button that responds to ENTER key by default ; - Status bar (1) or zero-sized status bar (2) ; - Close button to allow the user to abort without having to ; resort to the Task Manager. ; - Progress bar, which may span the whole window area ; - `PolicyNoCredentials` set to 1 for `ActionType` 4 and 6 AutoEnter=0 ; Name of a named mutex to serve as an indication to the client, ; that the patcher is running and finished successfully. ; Note: This can be used to deter starting the client directly ; instead of through the patcher. ; Note: This works best with `ActionType` 0 and 4. ;LaunchMutex=MAGICCOOKIE!8fa80e21! LaunchMutex= ; Developer mode. ; Values: ; 1298493303: Enabled ; 1466920806: Enabled, dump effective config on start ; Note: This setting enables some additional messages or features ; that can be useful during development, but may considered ; disturbing in production. DevMode=0 ; Define this to 1. ; Values: ; 0: Elurair is not configured. ; 1: Elurair is configured. ; Note: This setting is to prevent starting an uninitialized ; configuration that would result in broken, unusable UI. ConfigIsReady=0 ; Visual Customization (skinning) ; ; Note: This adjusts the visual aspects of the main window, such as ; control positions and sizes. All values are in pixels, so be ; sure to test the configuration on high-DPI systems. ; Note: Background picture is taken from bgskin.png, which can also ; be embedded (BGSKIN). Transparent color is assumed to be ; #ff00ff (magenta). ; Note: Buttons skins do not use transparent color, unless enabled ; separately, otherwise use the underlying background for ; non-button areas to simulate it. ; The image contains the three states of a button: normal, ; focus and clicked (in that order). The resulting button size ; can be of any size, but the total width must be divisible ; by 3. ; Note: Mouse cursor can be customized with default.cur, button.cur ; and edit.cur, which can also be embedded (DEFAULT, BUTTON ; and EDIT respectively). This has no effect on browsers, use ; the CSS 'cursor' property for that. ; Directory containing skin files. ; Note: This is only needed when your skin files are not embedded. ;SkinDirectory=skin SkinDirectory=. ; Username text box IDC_USERNAME.X=44 IDC_USERNAME.Y=69 IDC_USERNAME.W=391 IDC_USERNAME.H=23 ; Password text box IDC_PASSWORD.X=44 IDC_PASSWORD.Y=149 IDC_PASSWORD.W=391 IDC_PASSWORD.H=23 ; Save check box ; Note: The skin for this control contains total of 6 sprites. One ; set for unchecked state and one set for checked state. ; Note: Same skin rules apply to buttons designated as 'toggle'. IDC_CHECKSAVE.X=52 IDC_CHECKSAVE.Y=209 IDC_CHECKSAVE.W=17 IDC_CHECKSAVE.H=17 ; Note: See description for DisplayName in ROCred.Buttons.* for more ; information. IDC_CHECKSAVE.DisplayName=#103 ; Status bar IDC_STATUSBAR.X=44 IDC_STATUSBAR.Y=210 IDC_STATUSBAR.W=391 IDC_STATUSBAR.H=23 ; Progress bar ; Note: The skins for this control are PROGRESSBG, PROGRESSLEFT, ; PROGRESSCENTER and PROGRESSRIGHT. ; Note: PROGRESSLEFT and PROGRESSRIGHT are optional, but ; recommended, unless you want the progress indicator to cover ; the whole width of the control. ; Note: PROGRESSLEFT and PROGRESSRIGHT are not supported for ; circular progress bars. IDC_PROGRESSBAR.X=44 IDC_PROGRESSBAR.Y=234 ; Whether or not buttons use hot-tracking. ; Note: Enabling this setting adds two more states to the button ; image: hot-normal and hot-focus (in that order), so the ; width must be divisible by 5 then. ; Note: The save check box and other 'toggles' are also a button, so ; this setting and all consequences also apply to it. ; Values: ; 0: Buttons do not react to mouse passing over them. ; 1: Buttons change state when mouse passes over them. ButtonHotTrack=0 ; Whether or not buttons use transparent color. ; Values: ; 0: Buttons are all opaque. ; 1: Buttons use #ff00ff (magenta) for transparency. ButtonTransparency=0 ; Whether or not the text boxes are transparent. ; Values: ; 0: System default ; 1: Reserved ; 2: Custom foreground and background colors. EditBackground=0 ; Text box background color. ; Note: EditBackground must be set to 2 for this setting to have ; any effect. EditBackgroundColor=#fff ; Text box foreground (text) color. ; Note: EditBackground must be set to 2 for this setting to have ; any effect. EditForegroundColor=#000 ; Whether or not the text boxes have a frame. ; Values: ; 0: System default ; 1: Without frame ; Note: Frameless edit controls are typically used, when the ; background skin provides some atypical shape for the edit ; controls (such as rounded corners/ends). EditFrame=0 ; Controls the way the progress indicator center piece is drawn. ; Values: ; 0: Left-aligned clip (bar revealed left to right) ; 1: Right-aligned clip (bar grows left to right) ; 2: Stretch ; 3: Tile ; 4: Circular ; Note: Clip (values 0 and 1) and Circular (value 4) requires the ; center piece image to be as wide as the background without ; the left and right ends. ProgressCenterMode=0 ; Sets the center piece origin angle for circular mode in degrees. ; Values: ; 0: Origin east, counterclockwise ; Note: Positive values set counterclockwise operation, negative ; values clockwise. ; Note: To specify east origin, clockwise, use -360. ProgressCenterModeOrigin=0 ; Sets the dead area angle for circular mode in degrees. ; Note: Dead area angle refers to the part of the center piece that ; shall be excluded from progress calculations, centered on ; the origin angle. Use it with progress indicators that do ; not span whole 360 degrees. ProgressCenterModeDeadArea=0 ; Whether or not to show the native window caption and frame. ; Values: ; 0: Hide caption, skin covers entire window ; 1: Show caption, skin covers only client area ; Note: Even when the caption is hidden, you can provide minimize ; and close actions with custom buttons. ShowWindowCaption=0 ; Sets how window corners are displayed. ; Value: ; 0: System default ; 1: Square corners ; Note: Unless the background picture contains transparent pixels, ; corners are rounded on Windows 11 and square on all versions ; prior to Windows 11. ; Note: To have rounded corners on all Windows versions, add them to ; the background picture. WindowCornerStyle=0 ; Whether or not the status bar is transparent. ; Values: ; 0: System default ; 1: Transparent ; 2: Custom foreground and background colors. StatusBackground=0 ; Status bar background color. ; Note: StatusBackground must be set to 2 for this setting to have ; any effect. StatusBackgroundColor=#fff ; Status bar foreground (text) color. ; Note: StatusBackground must be set to 1 or 2 for this setting to ; have any effect. StatusForegroundColor=#000 ; Status bar (text) alignment. ; Values: ; 0: Center ; 1: Left ; 2: Right StatusTextAlign=0 ; Media file to use as background. ; Supported rendering engines: ; - Media Foundation (Vista or newer) ; - DirectShow ; Note: Setting this option will degrade performance and may cause ; the patch process to fail on slow computers. ; Note: The video should have the same size as the background ; picture. If the video has incorrect size, it is stretched to ; fit the background picture. ; Note: If the video cannot be played back, the background picture ; is displayed instead. Ideally the background image should be ; the first frame of the video to avoid glitches. ; Note: You can use audio-only media. ; Note: Use the correct file extension for the media, some renderers ; are picky about it. ; Note: Buttons with ActionType 14 may not work correctly when video ; is used as background media (known issue). ;MediaBackground=skin/bkgnd.avi ;MediaBackground=skin/music.mp3 MediaBackground= ; Flags to control behavior of background media. ; Bitmask: ; &1: Do not auto-start playback ; &2: Do not pause when minimized ; &4: Pause when inactive MediaBackgroundFlags=0 ; Flags to control behavior of foreground media. ; Bitmask: ; &1: Finish playing hover/click sounds before closing. MediaForegroundFlags=0 ; Remembered foreground media mute status. ; 0: Not Mute ; 1: Mute MediaForegroundMute= ; Action Buttons ; ; You can register buttons to appear on the user interface, that ; will do a predefined action. Each section in the format ; ROCred.Buttons.<your button identifier>, possibly followed by a ; hash (#) and a digit 1 or 2, will create a new button. ; The button identifier may consist of A-Z, 0-9 and _ (underscore), ; must be unique (among other custom buttons) and also serves as ; name for skins (see skinning section for more details on button ; skinning). The amount of buttons is only limited by available ; memory and GDI resources. ; Note: Sound when mousing/hovering a button can be specified with ; hover.wav, which can also be embedded (HOVER). ; Note: Sound when invoking/clicking a button can be specified with ; click.wav, which can also be embedded (CLICK). ; Start button ; Note: If you specify a button skin (btnstart.png / BTNSTART) ; W and H members will be ignored and taken from the image. ; Note: The #1 after the button name indicates, that this is the ; action to invoke when pressing ENTER. [ROCred.Buttons.BTNSTART#1] X=219 Y=239 W=75 H=23 DisplayName=#1005 ActionType=4 ActionData=ragexe.exe 1rag1 ActionHandler= ; Close button ; Note: If you specify a button skin (btnclose.png / BTNCLOSE) ; W and H members will be ignored and taken from the image. ; Note: The #2 after the button name indicates, that this is the ; action to invoke when pressing ESC. [ROCred.Buttons.BTNCLOSE#2] X=339 Y=239 W=75 H=23 DisplayName=#1006 ActionType=2 ActionData= ActionHandler= ; Sample button ; Note: Do not specify a hash (#) tail on every button, types other ; than 1 and 2 are reserved for future use. [ROCred.Buttons.CUSTOM1] ; Position of the button. X=7 Y=43 ; Size of the button. ; Note: If you specify a button skin, values will be ignored and ; taken from the image. W=75 H=23 ; Text to be displayed on the button. ; Note: If you specify a button skin, this becomes a tool tip for ; the button. ; Note: To refer to a string table entry, use #<number> (ex. #123). DisplayName=Website ; Action to invoke when the button is pressed. ; Values: ; 0: Launch application or website ; 1: Launch application or website, and close Elurair ; 2: Close Elurair ; 3: Display a message box (uses C-style escaping characters) ; 4: Launch application as client (with credentials and other ; stuff); this allows running alternative clients ; 5: Minimize Elurair window ; 6: Launch application as client (with credentials and other ; stuff), and close Elurair; this allows running ; alternative clients ; 7: Play/Resume background media ; 8: Stop/Pause background media ; 9: Create shortcut link (.lnk) on desktop ; 10: Unsupported (was: telemetry prompt) ; 11: Toggle background media playback (toggle button) ; 12: Toggle foreground media playback (toggle button) ; 13: Toggle custom setting/functionality (toggle button). ; 14: Pop-up buttons on click (toggle button). ActionType=0 ; Data associated with button's action type. ; ActionType: ; 0, 1: URL or local file (executable or document). ; 3: C-Escaped message. ; 4, 6: Local executable file. ; 9: Shortcut link specification, see notes. ; 13: Local executable, see notes. ; 14: Semicolon-separated (;) list of button identifiers, see ; notes. ; Note: To refer to a string table entry, use #<number> (ex. #123). ; Note: If you specify arguments for action 4 or 6, they will be ; concatenated with the credential arguments. ; Note: Action 9 takes parameters (encoded as query string): ; - displayname (name of the shortcut link) ; - target (not implemented) ; For example "displayname=Game%20Client&target=game.exe" will ; create a shortcut called "Game Client" on desktop, which ; will open "game.exe" from Elurair folder. ; If the target is blank or missing, it defaults to the ; running Elurair instance. ; Note: Action 13 allows launching applications that track state of ; something and presents it as a two-state toggle. This could ; be, for example, a toggle between low-res and hi-res game ; data. The application should exit quickly, otherwise it will ; impair user's UI experience. Elurair does not keep track of ; the last state, the application is expected to do so. ; To retrieve the current state, Elurair calls the application ; without arguments and expects the exit-code to be 0 or 1, ; any other value will disable the toggle. ; To set a new state, Elurair calls the application with ; an argument of 0 or 1, and expects the same value as exit- ; code. If the exit-code is 0 or 1, but not equal to the ; argument, the toggle will be reverted, any other value will ; disable the toggle with an error message (not implemented). ; Note: Action 14 changes one or more buttons into pop-up (menu) ; items, which are initially hidden and are only shown when ; this button is clicked. Then next click after that will hide ; the associated buttons again (clicks in the browser may be ; ignored). All pop-up buttons must be defined before this ; button. While this is primarily meant to construct pop-up ; menus, the only limit to the pop-up button positioning is ; your creativity. If the button identifier is followed by a ; hash (#), specify only the part before the hash. ; Hint: Common URL schemes are 'http', 'https', 'file' and 'mailto'. ;ActionData=ragexeRE.exe 1sak1 ActionData=http://nn.ai4rei.net/ ; Handler associated with button's action type. ; ActionType: ; 0, 1: See the documentation of SHELLEXECUTEINFO::lpClass as to ; what values this setting may take. When the value is ; empty, the handler is inferred. ; You can use this to specify the file extension to use ; when running a file which has a different extension or ; none at all. Specify ".exe" if you want to run an ; executable that has the extension ".bin" for example. ; 4, 6: Ignored, always assumed to be ".exe" type. ; 13: Same as 0, but it has to be executable, that is ".exe" or ; or ".bat", or equivalent. ; Note: The only handlers for ActionType 0 and 1 supported on ; Windows XP and earlier are file extensions, file classes ; and GUIDs. ActionHandler= ; Web Browsers ; ; You can register (web) browsers to appear on the user interface to ; display local or remote HTML resources. Each section in the format ; ROCred.Browsers.<your browser identifier> will create a new ; browser. The browser identifier may consist of A-Z, 0-9 and ; _ (underscore) and must be unique (among other custom controls). ; The amount of browsers is only limited by available memory and GDI ; resources. For seamless integration into the skin, following CSS ; styles may come handy: ; html { border-width:0; } /* disables frame* around the browser */ ; body { background-attachment:fixed; } /* static background */ ; html { overflow:hidden; } /* IE6: disable scrollbars */ ; body { overflow:hidden; } /* IE7+: disable scrollbars */ ; Note: If disabling frame does not work, specify following tag in ; <head> tag: ; <meta http-equiv="X-UA-Compatible" content="IE=edge"> ; Sample Browser [ROCred.Browsers.CUSTOM2] ; Position of the browser. X=7 Y=7 ; Size of the browser. W=210 H=120 ; URL/Website to open in the browser. ; Note: This is not restricted to internet locations, a local file ; may also be specified. ; Note: Supported protocols are: ; - relative/path/file.htm ; Urls missing a protocol specficiation (ex. relative ; paths) are transformed to file: protocol. ; - http://domain.tld/path/to/file.htm ; Recommended. Works on all Windows versions. ; - https://domain.tld/path/to/file.htm ; May not work on older versions with certain server ; configurations. ; - res://file/id or res://file/type/id ; Content stored as a resource (inside an EXE or DLL). ; Note: To refer to a string table entry, use #<number> (ex. #123). Url=http://ai4rei.net/p/skal ; Patch Configurations ; ; You can register patch processes to run before ActionTypes 4 and 6 ; button actions can be executed. Each section in the format ; ROCred.Patcher.<your config identifier> will create a separate ; patch process. The config identifier must be unique (among other ; patch configs), but is otherwise meaningless. Patch processes run ; sequentially in given order. The amount of patch configs is only ; limited by available memory. ; Each downloaded file is processed by a file type handler, that may ; or may not post-process it. By default the application comes with ; the follwing handlers: ; - *.gpf (merged into archive defined in PakFile) ; - *.rgz (unpacked) ; - *.zip (unpacked) ; - *.7z (unpacked) ; - *.* (will save unhandled files as is) ; When at least one patch process is registered, the patcher can be ; updated by distributing the updated version as "elurair.new". This ; name is constant, no matter what the patcher is named. The updated ; patcher will have the name of the old patcher. [ROCred.Patchers.Main] ; Local file name to record patch progress in. ; Note: The file records the last processed counter from the patch ; list stored as a 32-bit unsigned integer in little-endian ; byte-order (see doc/inffile-spec.txt for details). ; Note: Patch process will fail, if this file is missing or contains ; invalid data, that means, it is NOT automagically created ; and initialized the first time you run Elurair. This is to ; prevent corruption of unrelated files from patching inside ; a wrong directory. InfFile=main.inf ; Local file name for archive-style patches. Actual meaning depends ; on the archive handler in use. ; Note: Archive handler *.gpf takes optional parameters (encoded as ; query string): ; - zlibdll (name of an alternative zlib (un)compress DLL) ; - zlcname (name of an alternative `compress` export) ; - zluname (name of an alternative `uncompress` export) ; - upgrade (whether (1) or not (0) to allow archive upgrades) ; For example "pdata.grf?zlibdll=cps.dll&zlcname=compr" ; will use `cps.dll` instead of the built-in zlib library and ; will use the export `compr` instead of `compress` for ; compressing data. For uncompression, `uncompress` is used. ; The function signatures must exactly match those of a ; vanilla zlib DLL. Archive upgrades are disabled by default. PakFile=main.grf ; Remote file name that contains list of patches to download and ; apply. Each line corresponds to one patch. Use only characters ; from the ASCII character set. Empty lines and lines starting with ; // are ignored. ; Format: ; <incremental counter> <patch file name> ; RegExp: ; /^(\d{2,}|[1-9])[ \t]+([^\r\n]+)$/m ; Example: ; 1 20XX-07-04SetupFix.rgz ; 2 20XX-07-05PatchFix.rgz ; //3 20XX-07-11Event.gpf ; 4 20XX-07-11Event2.gpf ; 5 weather/summer.gpf ; Note: If you use sub-directories (paths) in the patch list, the ; file will be downloaded from there, but it's local name will ; be without that path. If you need to put files into sub- ; directories, pack them into an archive. ; Note: If you do not want the list to mingle among patches, you can ; specify a path along the file name, which can be a parent ; directory as well. ;WebList=meta/patch_main.txt ;WebList=../patch_main.txt WebList=patch_main.txt ; Patch list (WebList) format version. ; Values: ; 0: Default WebList. ; 1: Like 0, with additional 3rd parameter that specifies modifier(s). ; Format: ; <incremental counter> <patch file name> [<modifier>] ; RegExp: ; /^(\d{2,}|[1-9])[ \t]+([^ \t\r\n]+)(?:[ \t]+([a-z]+(?:,[a-z]+)*))?$/m ; Example: ; 1 20XX-07-04SetupFix.rgz ; 2 20XX-07-05PatchFix.rgz stop ; //3 20XX-07-11Event.gpf ; 4 20XX-07-11Event2.gpf delete ; 5 weather/summer.gpf ; Modifiers: ; stop: stop patch process (e.g. for Elurair update) ; delete: remove files or subtract patch from archive ; - *.gpf (subtractive) ; - *.rgz (not supported) ; - *.zip (delete local files) ; - *.7z (delete local files) ; - *.* (delete unhandled local files) ; Note: Using version 1 for 3rd party patch servers is HIGHLY UNSAFE ; and should be avoided, unless you know what you are doing. ; Note: Using the delete modifier with unhandled file types is risky ; and should be avoided in favor of ZIP files with stub files. WebListVer=0 ; Path on the patch server that will be used when downloading remote ; files. WebPath=/web/patch/main/ ; Patch server IP/domain name that will be used when downloading ; remote files. ; Note: To specify a server port different from 80, append it after ; a double-colon (:). ; Note: To specify separate hosts for WebList and other remote ; files, separate them with a semicolon (;). The first host ; will be used for WebList, the remaining ones (up to 2) will ; be picked at random for other remote files. ;WebSite=patch.example.com:8001 ;WebSite=meta.example.com;patch.example.com:8001;patch2.example.com WebSite=patch.example.com ; Protocol to use when downloading remote files. ; Values: ; http ; Note: There is no 'https' support for patches. WebProt=http ; Flags to control communication with the patch server. ; Bitmask: ; &1: Allow dynamic content (experimental) ; Will accept files, even if they do not provide a ; Content-Length header. The progress bar will be ; indeterminate. WebFlag=0 ; Patch progress to start patching at. ; Note: This is meant to begin patch progress at a desired point in ; case of 3rd party patch servers. ;InfPatchMin=123 InfPatchMin= ; Patch progress to stop patching at (i.e. up to including). ; Note: This is meant to limit patch progress to a desired point in ; case of 3rd party patch servers. ;InfPatchMax=2411 InfPatchMax= ; Whether to designate the following patch process as a fallback or ; mirror, which will run if this patch process fails. There is no ; limit to the amount of fallbacks, the first one to succeed will ; cause the remaining ones to be skipped. ; Note: The last fallback in the chain has this value set to zero to ; indicate, that the next process is a regular patch process. TryNext=0 ; Sample secondary patcher [ROCred.Patchers.PK] InfFile=pk.dat PakFile=pk.pak WebList=patch_pk.txt WebPath=/ WebSite=pkpatch.example.com WebProt=http ; Patch Rename List ; ; You can register files, that will be renamed on-sight after all ; patch processes finish. This may be useful to control the ; appearance of undesired 3rd party files. If the destination name ; already exists, it will be overwritten. ; Each key is a file to look for and it's value is the name to ; rename it to. [ROCred.PatchRenameList] ;Sakup.exe=Sakray.exe
Extras
These are additional resources for specific and/or unreasonable use scenarios.
GRF Normalizer Middleware
Ensures that archives containing same content have deterministic disk layout for hashing purposes.
1.0.1.27 (64-bit)
This work is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License.