Редактор ресурсов

   English English  Deutsch Deutsch  Русский Русский

главная  программы  resource tuner console  сборник примеров скриптов

Локализация Version Information в EXE файле

Этот код демонстрирует использование Resource Tuner Console для локализации Version Information, когда информация показывается на разных языках в зависимости от региональных языковых настроек пользователя.

Предлагаемый код скрипта создаёт копию структуры Version Information для русского языка и заполняет все указанные поля данными, переданными в скрипт из batch файла.

Скрипт выполняет следующие операции над тестовым файлом DemoApp1.exe (который поставляется вместе с программой):

  • Обновляет информацию о версии, в частности записи FileVersion и ProductVersion. Скрипт получает числовые значения для этих записей через плейсхолдеры из пакетного файла LOCALIZE_VERSION_INFO.BAT, расположенного в папке "Demo".
  • Редактирует String File Version Information.
  • Создает копию блока StringFileInfo для русского языка.

Результирующий файл будет сохранён в папке с именем "Release". Вы можете просмотреть изменения, внесенные в ресурсы файла, проверив файл rtc.log.

Примечание: при копировании кода скрипта, пожалуйста, убедитесь в отсутствии переносов строк внутри команд. Это требование VBScript: каждая команда должна располагаться целиком на одной строке.

Localize Version Information

Sub Main
  PEFileProxy.PostDebugString "Пересчёт контрольной суммы в заголовке файла вкл." 
  PEFileProxy.UpdateCheckSum = True 

  PEFileProxy.PostDebugString "Создание резервной копии отключено." 
  PEFileProxy.CreateBackUp = False

  ' Здесь устанавливаем языковые константы
  LangID_US = 1033 ' English-US
  LangID_RU = 1049 ' Русский язык 
                   ' (LangID для других языков можно найти в файле справки)

  PEFileProxy.PostDebugString "Открываем файл для редактирования..."
  PEFileProxy.OpenFile ".\src\DemoApp1.exe"

  if not PEFileProxy.Terminated then
    if PEFileProxy.HasResources then

      ' Открываем Version Info для редактирования
      if ResourcesProxy.OpenVersionInfo("1", LangID_US, CREATE_IF_NOT_EXIST) then

        ' Заполняем значения FileVersion и ProductVersion, используя плейсхолдеры
        VersionInfoProxy.SetFileVersion %plhd_VMajor%, %plhd_VMinor%, 0, 0,
  LangID_US, True, True, True
        VersionInfoProxy.SetProductVersion %plhd_VMajor%, %plhd_VMinor%, 0, 0,
  LangID_US, True, True, True
        
        ' Определяем кодовую страницу
        CP = ScriptUnit.CodePageFromLangID(LangID_US)
        PEFileProxy.PostDebugString "Значение CodePage для English-US: " & CStr(CP)

       ' Изменяем строковые значения в File Version Information       
        S1 = "My Company"
        S2 = "Yet Another Super Application"
        S3 = "Hot product"
        S4 = "Copyright \0xA9 2025 My Company, Inc."
        S5 = "Your trademarks here..."
        S6 = "Super Application"
        S7 = "5.1.Zero.Null"

  VersionInfoProxy.EditStringFileInfo "CompanyName", S1, CP, LangID_US, True, True
  VersionInfoProxy.EditStringFileInfo "FileDescription", S2, CP, LangID_US, True, True
  VersionInfoProxy.EditStringFileInfo "InternalName", S3, CP, LangID_US, True, True
  VersionInfoProxy.EditStringFileInfo "LegalCopyright", S4, CP, LangID_US, True, True
  VersionInfoProxy.EditStringFileInfo "LegalTrademarks", S5, CP, LangID_US, True, True
  VersionInfoProxy.EditStringFileInfo "ProductName", S6, CP, LangID_US, True, True
  VersionInfoProxy.EditStringFileInfo "ProductVersion", S7, CP, LangID_US, True, True

        ResourcesProxy.CloseVersionInfo

      else
        ' Предупреждение в случае ошибки
        PEFileProxy.PostDebugString "Не удалось открыть ресурс Version Info..."
      end if

'------------------------- Добавление нового языка (RU) -------------------------

      if ResourcesProxy.OpenVersionInfo("1", LangID_RU, CREATE_IF_NOT_EXIST) then

        ' Заполняем значения FileVersion и ProductVersion, используя плейсхолдеры
        VersionInfoProxy.SetFileVersion %plhd_VMajor%, %plhd_VMinor%, 0, 0,  
  LangID_DE, True, True, True
        VersionInfoProxy.SetProductVersion %plhd_VMajor%, %plhd_VMinor%, 0, 0,  
  LangID_DE, True, True, True

       ' Указываем общий тип файла: VFT_APP — приложение, VFT_DLL — DLL.       
        VersionInfoProxy.FileType = VFT_APP 

        ' Определяем кодовую страницу
        CP = ScriptUnit.CodePageFromLangID(LangID_RU)
        PEFileProxy.PostDebugString "Значение CodePage для RU: " & CStr(CP)

       ' Добавляем строковую File Version Information для русской версии      
        S1 = "Моя организация"
        S2 = "Моя Супер Программа"
        S3 = "Программа для выдвижения лотка CD-привода"
        S4 = "Copyright \0xA9 2025 ОАО Моя Компания"
        S5 = "Все права сохранены"
        S6 = "Супер Программа"
        S7 = "5.1.Ноль.Ноль"

  VersionInfoProxy.EditStringFileInfo "CompanyName", S1, CP, LangID_RU, True, True
  VersionInfoProxy.EditStringFileInfo "FileDescription", S2, CP, LangID_RU, True, True
  VersionInfoProxy.EditStringFileInfo "InternalName", S3, CP, LangID_RU, True, True
  VersionInfoProxy.EditStringFileInfo "LegalCopyright", S4, CP, LangID_RU, True, True
  VersionInfoProxy.EditStringFileInfo "LegalTrademarks", S5, CP, LangID_RU, True, True
  VersionInfoProxy.EditStringFileInfo "ProductName", S6, CP, LangID_RU, True, True
  VersionInfoProxy.EditStringFileInfo "ProductVersion", S7, CP, LangID_RU, True, True

        ResourcesProxy.CloseVersionInfo
      else
        ' Предупреждение в случае ошибки
        PEFileProxy.PostDebugString "Не удалось создать ресурс Version Info..."
      end if
'------------------------Конец добавления нового языка (RU)----------------------

     ' При желании вы можете изменить отметку времени TimeDate и установить для
     ' каждого поля в заголовке PE-файла и секциях экспорта и ресурсов
     ' единую отметку TimeDate. 
     ' Эта операция необязательна и может быть закомментирована, если не нужна.
       
      MyDate = Now
      PEFileProxy.UpdateDateTimeStamp MyDate 

      'Сохранение файла 
      PEFileProxy.PostDebugString "Сохраняем изменения в новый файл..." 
      PEFileProxy.SaveAsNewImage ".\release\DemoApp1.exe"

    end if
  end if
end sub

Чтобы посмотреть и проверить произведённые изменения в самом EXE файле, мы рекомендуем использовать Resource Tuner GUI, визуальный редактор ресурсов.

Примеры скриптов

Установив Resorce Tuner Console на свой компьютер, вы найдёте папку Demo Scripts в директории с программой. Внутри этой папки находятся 12 папок с примерами скриптов и тестовыми файлами.

Все примеры скриптов готовы к применению. Чтобы запустить выполнение скрипта, выберете соответствующий .BAT файл в любой папке с примером. Resorce Tuner Console произведёт изменения в тестовом EXE файле, находящемся в папке Src. Результирующий файл будет записан в папку Release в директории, содержащей скрипт.

 

Пошаговое руководство по использованию скриптов

 Скачать 60-дневную пробную версию Resource Tuner Console