home
products
resource tuner console
sample scripts library
Demo Script: Edit Strings, Update Version Numbers, Save As Resource DLL
This sample code provides a demonstration of Resource Tuner Console's capabilities. It showcases how to modify string and numeric resources in Windows EXE and DLL files using the command-line resource editor.
The script performs the following operations on DemoApp1.exe:
- Edits strings using string and numeric literal values from the definition file
demoapp1.drclocated in the "Defs" folder. - Adds a new StringTable and modifies the existing MessageTable.
- Updates the Version Information of the executable.
- Creates a copy of the resource (Message Table) with another language.
- Outputs the resource tree to a log file for further analysis.
- Finally, it saves the entire file's resources as a resource DLL.
The resulting files are saved in the directory named "Release".
For detailed instructions on using scripts with Resource Tuner Console, refer to the Step-by-Step Guide To Using Scripts.
Note: when copying out the script code, please make sure there's no line breaks. This is a requirement of VBScript: the entire command must be on one line.
Sub Main
PEFileProxy.PostDebugString "PE file header checksum updating is enabled."
PEFileProxy.UpdateCheckSum = True
PEFileProxy.PostDebugString "The creation of a backup copy is disabled."
PEFileProxy.CreateBackUp = False
' Set Language to English-US
LangID = 1033 ' English-US
' Retrieve and output CodePage to log
CP = ScriptUnit.CodePageFromLangID(LangID)
PEFileProxy.PostDebugString "CodePage value for English-US: " & CStr(CP)
' Open file
PEFileProxy.PostDebugString "Open the file for editing..."
PEFileProxy.OpenFile ".\src\DemoApp1.exe"
if (PEFileProxy.Terminated) then
' Issue a warning in case of error
PEFileProxy.PostDebugString "Error when opening this file."
else
PEFileProxy.PostDebugString "File opened OK."
if (not PEFileProxy.HasResources) then
PEFileProxy.PostDebugString "The file contains no resources."
else
PEFileProxy.PostDebugString "The file contains resources."
' Accessing the external definition file that contains the values
' for constants used in the loaded executable file.
PEFileProxy.ClearDefinitions
PEFileProxy.PostDebugString "Opening the definition file..."
PEFileProxy.OpenDefinitionFile ".\defs\demoapp1.drc"
' Edit strings in the StringTable
PEFileProxy.PostDebugString "Editing String Table..."
S1 = "My App Number1"
S2 = "Resource String: Item1 was modified."
S3 = "Resource String: Item2 was updated."
S4 = "Resource String: Item3 was changed."
S5 = "Version Info:"
S6 = "&Close App"
' Gain access to the entries using the definitions
ResourcesProxy.EditStringTable "dm1Unit_res_Caption", 0, CURRENT_LANG, S1, CP
ResourcesProxy.EditStringTable "dm1Unit_res_Label1", 0, CURRENT_LANG, S2, CP
ResourcesProxy.EditStringTable "dm1Unit_res_Label2", 0, CURRENT_LANG, S3, CP
ResourcesProxy.EditStringTable "dm1Unit_res_Label3", 0, CURRENT_LANG, S4, CP
ResourcesProxy.EditStringTable "dm1Unit_res_Version", 0, CURRENT_LANG, S5, CP
' Gain access to the entry using the entry index
ResourcesProxy.EditStringTable "65269", 0, CURRENT_LANG, S6, CP
' Create a new String Table (English-US)
S1 = "This resource has been added by RTC (English-US)"
ResourcesProxy.EditStringTable "1", 1033, CREATE_IF_NOT_EXIST, S1, CP
' Edit strings in the MessageTable
PEFileProxy.PostDebugString "Editing Message Table..."
S1 = "Event 1"
S2 = "Event 2"
S3 = "Event 5"
ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, 10001, S1, CP
ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, 10002, S2, CP
ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, 10005, S3, CP
S1 = "Error 1"
S2 = "Error 2"
ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, &H80000001, S1, CP
ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, &H80000002, S2, CP
S0 = "InsertItem 0"
S1 = "InsertItem 1"
S2 = "InsertItem 2"
ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, 10004, S1, CP
ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, 10000, S2, CP
ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, 0, S0, CP
S0 = "Negative value for ID"
ResourcesProxy.EditMessageTable "1", 0, CREATE_IF_NOT_EXIST, -1, S0, CP
' Open the Version Info for editing
PEFileProxy.PostDebugString "Open Version Info..."
if ResourcesProxy.OpenVersionInfo("1", 0, GET_DEFAULT_IF_NOT_EXIST) then
PEFileProxy.PostDebugString "Version Info opened."
' Output the current FileVersion & ProductVersion to a log file (optional)
PEFileProxy.PostDebugString "Current FileVersion: " &_
CStr(VersionInfoProxy.FileVersionMajor) & "." &_
CStr(VersionInfoProxy.FileVersionMinor) & "." &_
CStr(VersionInfoProxy.FileVersionRelease) & "." &_
CStr(VersionInfoProxy.FileVersionBuild)
PEFileProxy.PostDebugString "Current ProductVersion: " &_
CStr(VersionInfoProxy.ProductVersionMajor) & "." &_
CStr(VersionInfoProxy.ProductVersionMinor) & "." &_
CStr(VersionInfoProxy.ProductVersionRelease) & "." &_
CStr(VersionInfoProxy.ProductVersionBuild)
' Update FileVersion & ProductVersion numeric values
VersionInfoProxy.SetFileVersion 2, 1, 3, 1205, 1033, True, True, True
VersionInfoProxy.SetProductVersion 2, 0, 0, 0, 1033, True, True, True
' Output the updated FileVersion & ProductVersion to a log file (optional)
PEFileProxy.PostDebugString "Updated FileVersion: " &_
CStr(VersionInfoProxy.FileVersionMajor) & "." &_
CStr(VersionInfoProxy.FileVersionMinor) & "." &_
CStr(VersionInfoProxy.FileVersionRelease) & "." &_
CStr(VersionInfoProxy.FileVersionBuild)
PEFileProxy.PostDebugString "Updated ProductVersion: " &_
CStr(VersionInfoProxy.ProductVersionMajor) & "." &_
CStr(VersionInfoProxy.ProductVersionMinor) & "." &_
CStr(VersionInfoProxy.ProductVersionRelease) & "." &_
CStr(VersionInfoProxy.ProductVersionBuild)
' Set the file flags
VersionInfoProxy.FileFlagsMask = &H3F
VersionInfoProxy.FileFlags = VS_FF_PRERELEASE or VS_FF_PRIVATEBUILD
VersionInfoProxy.FileOS = VOS__WINDOWS32
VersionInfoProxy.FileType = VFT_DLL
VersionInfoProxy.FileSubType = VFT2_UNKNOWN
S1 = "Copyright \0xA9 2025 SuperSoftware Development"
S2 = "SuperProg is a trademark of SuperSoftware Development"
VersionInfoProxy.EditStringFileInfo "LegalCopyright", S1, CP, 1033, True, True
VersionInfoProxy.EditStringFileInfo "LegalTrademarks", S2, CP, 1033, True, True
S1 = "This entry has been added by the RTC demo script"
VersionInfoProxy.EditStringFileInfo "SpecialInfo", S1, CP, 1033, True, True
PEFileProxy.PostDebugString "Close the Version Info..."
ResourcesProxy.CloseVersionInfo
else
' Issue a warning in case of error
PEFileProxy.PostDebugString "Could not edit Version Information."
end if
' Compile all the changes made to the resources throughout the script
PEFileProxy.PostDebugString "Compiling all changes..."
PEFileProxy.Compile
' Create a copy of the resource (Message Table) with another language
PEFileProxy.PostDebugString "Creating a copy of the resource (Message Table)
with another language..."
PEFileProxy.PostDebugString "Copying Message Table:1 Neutral (0) to
Message Table:1 German-Swiss (2055)..."
ResourcesProxy.CopyResource RT_MESSAGETABLE, "1", 0, 2055
' Compile the changes again
PEFileProxy.Compile
' Build and output the Resource Tree to log to show all the changes made
PEFileProxy.PostDebugString ""
PEFileProxy.PostDebugString "Resource Tree built by RTC:"
ResourcesProxy.ResourceTreeToLog
PEFileProxy.PostDebugString ""
' Save operations
PEFileProxy.PostDebugString "Saving the file's resources as a resource DLL"
PEFileProxy.SaveAsResDll ".\release\demoapp1.res.dll"
PEFileProxy.PostDebugString "Saving the modified exe file..."
PEFileProxy.SaveAsNewImage ".\release\DemoApp1.exe"
end if
PEFileProxy.PostDebugString "Closing this file..."
PEFileProxy.CloseFile
end if
end Sub
To view the changes made to the test EXE file, you can open it using Resource Tuner GUI.
SAMPLE SCRIPTS LIBRARY
After installing Resource Tuner Console, you can access these examples in theDemo Scriptsfolder, located within the installation directory. The Demo Scripts folder contains 12 subdirectories, each containing sample scripts and executable files.
All sample scripts are pre-configured and ready to run. To execute a sample script, simply select one of the .BAT files within the Demo Scripts folders. The script will apply changes to a test EXE file. The modified file will be generated in a directory named "Release", which will be located within the same directory containing the script.
The Complete Illustrated Step-by-Step Guide To Using Scripts
Download Resource Tuner Console and learn how it can make you more productive.