Resource Tuner Console
' This sample VBScript code provides a real-world example that demonstrates
' many of the features available in Resource Tuner Console.
'
' This code shows how to:
'   - replace icons in the executable with icons from an ico file which 
'     contains more than one image.
'   - add a 256x256 PNG-compressed icon (a Vista icon)
'   - sort out the added icons in the right order
'   - add or replace an XML manifest
'   - output the changes in the Resource Tree to a log file.
'
' To give you an idea of how this all works, we made this sample script and
' test application. When you installed Resorce Tuner Console on your computer,
' the setup program created the "..\Demo" folder under the RTC folder, with 
' the test application "demoapp1.exe" in the "..\Demo\Src" folder. 
'
' The script will add or replace icons in demoapp1.exe with icons from the .ico
' and .png files from the "..\Demo\Src" folder. 
'
' The resulting file will be created in the directory named "..\Demo\Release"
' Check the log file "rtc.log" to see the Resource Tree changed.  
'
' Demonstrates the following:
'
' - PEFileProxy.OpenFileEx
' - PEFileProxy.Terminated
' - PEFileProxy.HasResources
' - PEFileProxy.CreateBackUp
' - PEFileProxy.SaveAsNewImage
' - PEFileProxy.PostDebugString
' - PEFileProxy.UpdateCheckSum
' - ResourcesProxy.ChangeIcon
' - ResourcesProxy.ChangeVistaIcon
' - ResourcesProxy.ChangeManifest
' - ResourcesProxy.SetLanguage
' - ResourcesProxy.SortGroupIcon
' - ResourcesProxy.ResourceTreeToLog
'
'------------------------------------------------------------------------------
Sub Main
  PEFileProxy.PostDebugString "Updating the checksum in the PE file header is enabled."
  PEFileProxy.UpdateCheckSum = True

  PEFileProxy.PostDebugString "The creation of a backup copy is disabled."
  PEFileProxy.CreateBackUp = False

  LangID = 0 ' Default
  CP     = ScriptUnit.CodePageFromLangID(LangID)

  PEFileProxy.PostDebugString "Opening a file and checking resources..."

  'Open file
  'Once the file is opened successfully, check if the file contains resources
  'If not, create resources

  If (PEFileProxy.OpenFileEx ("..\demo\src\demoapp1.exe", True)) Then

    ResourcesProxy.SetLanguage LangID, DELETE_IF_EXISTS

PEFileProxy.PostDebugString "Changing/adding the full XP icon set (9 icons)..."
ResourcesProxy.ChangeIcon "", LangID, CREATE_IF_NOT_EXIST, REPLACE_IF_ITEM_EXISTS, "..\demo\src\xp_iconset.ico"

PEFileProxy.PostDebugString "Adding the 256 pix PNG Vista icon ..."
ResourcesProxy.ChangeVistaIcon "", LangID, 32, CREATE_IF_NOT_EXIST, REPLACE_IF_ITEM_EXISTS, "..\demo\src\vista_256x256_32bit.png"

 PEFileProxy.PostDebugString "Sorting out the icons..."
 ResourcesProxy.SortGroupIcon "", True

'Edit XML Manifest

    PEFileProxy.PostDebugString "Adding/editing XML Manifest..."
    ResourcesProxy.ChangeManifest EXE_MANIFEST, LangID, CREATE_IF_NOT_EXIST, "..\demo\src\exe_manifest.xml"

    PEFileProxy.PostDebugString ""
    PEFileProxy.PostDebugString "Resource Tree built by RTC:"
    ResourcesProxy.ResourceTreeToLog
    PEFileProxy.PostDebugString ""

    PEFileProxy.PostDebugString "Saving file as a new file..."
    PEFileProxy.SaveAsNewImage "..\demo\release\demoapp1.exe"

    PEFileProxy.PostDebugString "Closing this file..."
    PEFileProxy.CloseFile

  Else
    PEFileProxy.PostDebugString "Opening a file produced a fatal error."
  End If

End Sub
'------------------------------------------------------------------------------