Elurair: Universal Game Updater and Launcher (c) 2012-2025 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
[2025-12-06] Release 2.20.0.583
This release adds lots of new features for both the launcher and the patcher. The patcher functionality is now also available as a reusable component, called ElurNG, which allows you use to the patching functionality with a front-end of your choice (the documentation for which is currently lacking, bear with me). Check doc/history.txt for the entire list of changes.
Note: Currently this release is, for technical reasons, available in 32-bit only.
[2025-03-08] Release 2.19.0.492
This release adds support for PNG transparency and enables unsupported use of HTTPS for patching.
[2025-01-08] Release 2.18.1.484
This maintenance release fixes a minor builder bug and replaces release 2.18.0, which has been lost.
[2024-12-28] Release 2.18.0.480
This release adds it_IT localization, alternative progress display, and fixes and improves various annoying issues.
[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.
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.20.0.583 (32-bit)
Simple
Same as the regular release, except that it includes a simplified configuration to use when starting out with Elurair.
2.20.0.583 (32-bit)
Demo
This build is pre-configured to the sample configuration.
2.20.0.583 (32-bit)
ElurNG
This is stand-alone reusable patcher compoent for use in 3rd party projects.
2.20.0.583 (32-bit)
Sample skins
Demo Skin (PSD)
Latest nightly (untested)
2.20.0.562 NIGHTLY (32-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-2025 Ai4rei/AN ; ; ------------------------------------------------------------------ ; -*- UTF-8 -*- ; For best first-time understanding of the available capabilities, ; you are encouraged to read/skim through the whole configuration. ; Best-viewed in an editor that supports code-highlighting. ; This configuration file uses the standard Windows INI file format. ; In a nutshell, configuration is made up of setting names and ; values, which are organized into groups. ; A group of settings (section) starts with a line with the section ; name enclosed in square brackets ([]), and all settings belong to ; that section until the start of the next section. Each setting is ; specified as a name (key) of that setting, separated from the ; following value with an equal sign (=). Quotes (") in values must ; be replaced (escaped) with double quotes (""). ; Lines starting with a semicolon (;) are ignored (comments) and can ; be removed safely. ; Example: ; ; Comment ; [Section] ; Key=Value ""with some quoted text"" ; To use default values and/or remove unneeded functionality, remove ; respective keys or sections. For most settings, an empty value ; defaults to an empty string or 0 (zero), unless stated otherwise. ; Numbers are decimal (base 10) unless stated otherwise. ; Colors can be specified 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 ; Whenever a string table entry (resource) can be specified, ; following localized IDs are available by default: ; - #1005: "Start" ; - #1006: "Close" ; - #1055: "Yes" ; - #1056: "No" ; - #1057: "Agree" ; - #1058: "Disagree" ; - #1059: "OK" ; Keep a copy of your configuration after embedding it into Elurair ; with the Builder application for later adjustments. ; General settings ; [ROCred] ; Identifies this specific Elurair configuration. This may be ; anything string that uniquely describes the publisher of this ; configuration, 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 ; Note: This is the state of the "Save" check box (IDC_CHECKSAVE). 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 the notification icon displays a context menu when ; right-clicked to exit Elurair while keeping the client running. ; Values: ; 0: Menu is shown ; 1: Menu is not shown PolicyNoTrayIconMenu=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= ; Characters that are not allowed in user-provided usernames. ; Note: C-style escaping characters are supported. ;PolicyNoUsernameCharList=\t\x20\x22\\% PolicyNoUsernameCharList= ; Characters that are not allowed in user-provided passwords. ; Note: C-style escaping characters are supported. ;PolicyNoPasswordCharList=\t\x20\x22\\% PolicyNoPasswordCharList= ; 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 ; Set 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) ; ; The window background, buttons, progress bar and status bar can ; all be customized using PNG images. It's also possible to control ; the position of all controls and the color and behavior of some of ; the predefined controls. ; ; PNG images can be either ".png" files in the `SkinDirectory` or ; embedded as PNG resources in Elurair itself with the included ; Builder, or, for advanced control, with any resource editing tool. ; The skin for the window background is a "bgskin.png" file or ; "BGSKIN" resource, where magenta (#f0f) is used as transparency ; mask, unless configured otherwise. The window will resize to fit ; the background image. ; ; The mouse cursor can be customized with "default.cur" for non- ; interactive areas, "button.cur" when above buttons and "edit.cur" ; when above an input box. These can also be embedded as cursor ; resources "DEFAULT", "BUTTON" and "EDIT" respectively. This has no ; effect on (web) browser controls. Use CSS 'cursor' for customizing ; the mouse cursor in a browser control. ; Directory containing skin files. ; Note: This is only needed when your skin files are not embedded. ;SkinDirectory=skin SkinDirectory=. ; Sets how transparency is indicated. ; Values: ; 0: Magenta (#ff00ff) key color ; 1: PNG transparent key color ; Note: PNG transparency (value 1) includes coarse intepretation of ; the alpha channel. Any non-100% alpha value will be ; interpreted as transparent. SkinTransparencyType=0 ; Sets whether the skin supports dark mode. ; This controls whether an alternative skin is defined for use when ; dark mode is enabled. ; When dark mode is in effect, the "Darkmode" theme will be used. ; The theme will override color-related keys and load files or ; resources with the theme-specific suffix. For example, skins ; "bgskin.png" or "BGSKIN" will be loaded from "bgskin_d.png" or ; "BGSKIN_D" instead first, but will fall back to the prefix-less ; versions if the prefixed ones cannot be found/loaded. ; Values: ; 0: No ; 1: Yes ; Note: Enabling this setting without actually providing a dark mode ; skin may degrade performance. ; Note: This is not limited to the Win1x feature. On older Windows ; versions, color schemes satisfying the same criteria will ; also be considered dark mode. SkinWithDarkMode=0 ; Username input box ; ; Horizontal position (x-coordinate) IDC_USERNAME.X=44 ; Vertical position (y-coordinate) IDC_USERNAME.Y=69 ; Width IDC_USERNAME.W=391 ; Height IDC_USERNAME.H=23 ; Password input box ; ; Horizontal position (x-coordinate) IDC_PASSWORD.X=44 ; Vertical position (y-coordinate) IDC_PASSWORD.Y=149 ; Width IDC_PASSWORD.W=391 ; Height IDC_PASSWORD.H=23 ; Save check box ; ; Note: For the purpose of skinning, this control is a toggle ; button. ; ; Horizontal position (x-coordinate) IDC_CHECKSAVE.X=52 ; Vertical position (y-coordinate) IDC_CHECKSAVE.Y=209 ; Width IDC_CHECKSAVE.W=17 ; Height IDC_CHECKSAVE.H=17 ; Note: See description for DisplayName in ROCred.Buttons.* for more ; information. IDC_CHECKSAVE.DisplayName=#103 ; Status bar ; ; Horizontal position (x-coordinate) IDC_STATUSBAR.X=44 ; Vertical position (y-coordinate) IDC_STATUSBAR.Y=210 ; Width IDC_STATUSBAR.W=391 ; Height IDC_STATUSBAR.H=23 ; Progress bar ; ; The skins for this control are: ; - PROGRESSBG: Background ; - PROGRESSLEFT: Fixed-size left-end of the bar (optional) ; - PROGRESSRIGHT: Fixed-size right-end of the bar (optional) ; - PROGRESSCENTER: Body of the bar (see `ProgressCenterMode`) ; Note: PROGRESSLEFT and PROGRESSRIGHT are not supported for ; circular progress bars. ; ; Horizontal position (x-coordinate) IDC_PROGRESSBAR.X=44 ; Vertical position (y-coordinate) IDC_PROGRESSBAR.Y=234 ; Whether or not the input boxes are transparent. ; Values: ; 0: System default ; 1: Reserved ; 2: Custom foreground and background colors EditBackground=0 ; Input box background color. ; Note: EditBackground must be set to 2 for this setting to have ; any effect. EditBackgroundColor=#fff ; Input box foreground (text) color. ; Note: EditBackground must be set to 2 for this setting to have ; any effect. EditForegroundColor=#000 ; Whether or not the input 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 ; Sets how the progress bar is used to convey progress. ; Values: ; 0: Individual (each operation runs 0-100%) ; 1: Overall (each patch process runs 0-100%) ProgressValueMode=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 dark mode affects native window caption. ; Values: ; 0: Always use light theme ; 1: Light or dark theme depending on user's OS settings ; Note: This applies only to Windows 10 and newer. Previous Windows ; versions always apply current theme or color settings to all ; applications, whether it is light or dark. WindowCaptionDarkMode=0 ; Sets how window corners are displayed. ; Value: ; 0: System default ; 1: Square corners ; Note: Unless the background image 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 image. WindowCornerStyle=0 ; Sets whether controls use native Windows themes. ; Value: ; 0: No, legacy 3D controls (Win9x style) ; 1: Yes, Windows theme controls (WinXP and newer) ; Note: Applies only to controls (such as buttons) without skins. WindowThemeStyle=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 ; Status bar (text) format when data is being downloaded. ; The string value accepts certain keywords enclosed in braces ({}) ; that are replaced with dynamic values: ; {fn}: File name or similar, associated with the download ; {bx}: Bytes downloaded ; {by}: Bytes to download in total ; {pc}: Percent downloaded (percent sign is not included) ; Note: To use the (slightly faster) default, leave the value blank. ;StatusTextDownloadFormat={fn} - {bx}/{by} StatusTextDownloadFormat= ; Affects the UI behavior during the role transition ; (patcher -> launcher). ; Bitmask: ; &1: When the patcher finishes, progress bar disappears ; &2: When the patcher finishes, status bar disappears ; &4: When the patcher finishes, user name and password input ; appears ScenarioFlags=0 ; Media file to use as background ; ; Either audio-only (background music) or video (background) media ; can be used. A video should have the same size as the background ; image, otherwise it is stretched to fit. The background image ; should be the first frame in the video to avoid flickering and to ; serve as fall-back in case the video cannot be played. ; Note: Setting this option will degrade performance and may cause ; the patch process to fail on slow computers. ; Note: Use the correct file extension for the media, some renderers ; are picky about it. ; Note: Updating the media file directly will fail, as it is in use ; during the patch process. Append a ".new" extension to the ; name to update next time Elurair is started. ; 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 (user works with other application) 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 ; ; Each section starting with "ROCred.Buttons." specifies a button ; that will appear on the user interface and perform a predefined ; action when clicked. The remainder of the section name is an ; unique button identifier, that must be made up of letters (A-Z), ; digits (0-9) or underscore (_). The button identifier may be ; optionally followed by a hash (#) and a keyboard short cut for ; ENTER (1) or ESC (2). Each keyboard shortcut can be used on only ; one button. There is no limit to the amount of buttons (other than ; system resources). ; Note: The button identifier is also used as the skin name. The ; image is one row of sprites for the three possible button ; states: normal, focused and clicked. Thus, the total width ; of the image must be 3-times the desired width of the ; button. By default, button images do not support ; transparency unless configured otherwise. ; Note: The image for toggle buttons has two rows, for the unchecked ; and checked states, that is six sprites in total. ; Note: Check the description for the Save check box for more ; information on skinning toggle buttons. ; 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). ; 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 transparency. ; Values: ; 0: Buttons are all opaque ; 1: Buttons use transparency according `SkinTransparencyType` ; Note: Transparent areas in the button skin are not considered to ; be part of the button and thus do not react to clicks. ButtonTransparency=0 ; Sample button ; ; Here "CUSTOM1" is the button identifier. No keyboard shortcut is ; specified. The skin file name is "custom1.png", or "CUSTOM1" when ; embedded. [ROCred.Buttons.CUSTOM1] ; Horizontal position of the button (x-coordinate) X=7 ; Vertical position of the button (y-coordinate) Y=43 ; Width of the button ; Note: If the button uses a skin, this value is ignored and taken ; from the image. W=75 ; Height of the button ; Note: If the button uses a skin, this value is ignored and taken ; from the image. H=23 ; Text to be displayed on the button. ; Note: If the button uses a skin, this value 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 open website ; 1: Launch application or open 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) ; 15: Display Text/RTF document (subset of `ROCred.WallOfText`) 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 ; 15: Wall-of-text specification, 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. If your ; executable file name contains spaces, enclose it with ; quotes ("). ; 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. ; Note: Action 15 takes parameters (encoded as query string): ; - caption ; - texttype ; - textdata ; - w (optional) ; - h (optional) ; The meaning each parameter is the same as the corresponding ; `ROCred.WallOfText` configuration. ; For example "caption=ToS&texttype=1&textdata=tos.rtf" will ; display "tos.rtf" as RTF document in a dialog with caption ; "ToS" in default size, without prompts and an "OK" button. ; 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= ; Sample start button ; ; 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= ; Sample close button ; ; 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= ; 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] ; Horizontal position of the browser (x-coordinate) X=7 ; Vertical position of the browser (y-coordinate) Y=7 ; Width of the browser W=210 ; Height of the browser 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 ; ; Each section starting with "ROCred.Patchers." specifies a patch ; process to run before ActionTypes 4 and 6 can be used. The ; remainder of the section name is an unique patch configuration ; identifier, that must be made up of letters (A-Z), digits (0-9) or ; underscore (_). All patch processes will run sequentially in given ; order. There is no limit to the amount of buttons (other than ; system resources). ; 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 into Elurair folder) ; - *.zip (unpacked into Elurair folder) ; - *.7z (unpacked into Elurair folder) ; - anything else is saved into Elurair folder 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. ; ; This file must exist and be initialized correctly for the patch ; process to work. For new archives, this value is usually binary 0. ; For 3rd party servers, this value may differ. ; 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). InfFile=main.inf ; Patch progress (InfFile) format version. ; Values: ; 0: Default InfFile (binary) ; 1: Plain-text number InfFileVer=0 ; Flags to control use of this patch progress file (InfFile). ; Bitmask: ; &1: Assume progress of 0, if missing. ; Will create the InfFile instead of failing when it is ; missing. Useful when this patch process is used for new ; installs or for bootstrapping. The patch process will ; still fail if the file exists, but is malformed. InfFlag=0 ; 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 specifies whether downloading of patches is ; denied or not. If the file content is exactly "deny" (4 bytes, ; case-sensitive), then the patch process will fail and the error ; message will be, that the "patch server is on maintenance". Any ; other value will allow downloading of patches to continue. If not ; specified, the feature is not used. ; Note: If the file name is specified, but the file cannot be ; downloaded, Elurair will assume that the server is on ; maintenance. ;WebDeny=patch_allow.txt ;WebDeny=meta/patch_allow.txt ;WebDeny=../patch_allow.txt WebDeny= ; 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 meant for unpacking. ; 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) ; obliterate: do not process pending patch processes ; 2: Like 0, with additional 3rd parameter that changes patch list processing ; Format: ; <incremental counter> <patch file name> [<flag>] ; Flag: ; 0: normal processing (default) ; 1: stop patch process if patch file name contains: ; - patchup ; - sakup ; - pkup ; 2: stop and restart patch process ; Note: For historical reasons, this format interprets any ; invalid line as a comment. ; 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 ; https (no helpdesk support, you are on your own) 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 ; One-time text dialogs ; ; Each section starting with "ROCred.WallOfText." specifies a text ; dialog, that will appear once when Elurair is started, and which ; may require a confirmation to continue, or can be dismissed. ; The remainder of the section name is an unique dialog identifier, ; that must be made up of letters (A-Z), digits (0-9) or ; underscore (_). All dialogs will be shown sequentially in given ; order. There is no limit to the amount of dialogs (other than ; system resources). ; Note: To re-display an already confirmed/dismissed text dialog, ; for example after the text is updated, a new unique dialog ; identifier must be chosen. Using a version or date as part ; of the identifier may simplify identifier management for ; documents that change often. [ROCred.WallOfText.EULA] ; Local file to display in the text body. ; Note: To refer to an embedded resource (if the `TextType` allows ; it), use #<name> (ex. #LICENSE). ; Note: When the text is not found, the reader will not be allowed ; to continue working with Elurair, if ; - both buttons are defined ; - `MustRead` is enabled TextData=license.rtf ; Type of text to display. ; Values: ; 0: Plain-text file ; 1: Rich Text Format (RTF) file or resource TextType=1 ; Text to use as dialog title. ; Note: To refer to a string table entry, use #<number> (ex. #123). Caption=Example End-User License Agreement (EULA) ; Text to use as prompt before the text body. ; This should normally prompt the reader to read the text carefully ; and the reason to do so. Can be up to two lines. If blank/absent, ; the space for the prompt will be collapsed. ; Note: To refer to a string table entry, use #<number> (ex. #123). Prompt1=Please read the following end-user license agreement and make sure you fully understand it before continuing. ; Text to use as prompt after the text body. ; This should normally prompt the reader to confirm the text just ; read. Can be up to one line. If blank/absent, the space for the ; prompt will be collapsed. ; Note: To refer to a string table entry, use #<number> (ex. #123). Prompt2=Do you understand and agree to the terms you just read? ; Text for the positive/confirmation button. ; When both buttons are defined, this one will allow the reader to ; continue working with Elurair. ; Note: To refer to a string table entry, use #<number> (ex. #123). PositiveButton=Yes ; Text for the negative/declination button. ; When both buttons are defined, this one will close Elurair and the ; first-time indicator will not be set (i.e. all first-time actions ; will re-run next time Elurair is opened). ; Note: To refer to a string table entry, use #<number> (ex. #123). NegativeButton=No ; Width of the dialog in dialog units (DLU). ; Values: ; 0: Uses default width W=0 ; Height of the dialog in dialog units (DLU). ; Values: ; 0: Uses default height H=0 ; Whether or not the text body must be read before the buttons ; become available. ; When enabled, the reader is forced to engage with the text to ; unlock the buttons (ex. for legal reasons). ; Values: ; 0: Buttons are available immediately ; 1: Buttons become available when scrolling to the end of the ; text body MustRead=1 ; Themes ; ; Specifies the theme when dark mode is enabled. Currently no other ; themes, other than "Darkmode", are supported. [ROCred.Themes.Darkmode] ; Currently unused, set to 1. IsDark=1 ; Sets the suffix for skin file and resource names, set to D. Skins ; that do not exist with a theme suffix (name_suffix) will use the ; default theme skin (name). Suffix=D ; For documentation see the baseline settings with the same name. EditBackgroundColor=#000 EditForegroundColor=#fff StatusBackgroundColor=#000 StatusForegroundColor=#fff
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.



