Compare commits

...

4 Commits

Author SHA1 Message Date
bc146fc337 Added program description. 2026-02-23 14:58:25 +03:00
87d8c38342 Changed program icon. 2026-02-21 19:36:14 +03:00
3f13431e0b Add program icon. 2026-02-18 18:49:59 +03:00
0b8e94a0a8 Add VersionInfo block to resource file. 2026-02-18 16:35:23 +03:00
7 changed files with 197 additions and 67 deletions

119
README.md
View File

@@ -1 +1,118 @@
# wUpdateVersion
# wUpdateVersion
Программа для автоматического обновления номера версии компилируемого приложения.
_**Файл ресурсов должен быть в ANSI или UTF-8 кодировке.**_
## Назначение программы ##
`wUpdateVersion` служит для автоматического обновления версии разрабатываемого приложения перед этапом компиляции в среде разработки Microsoft Visual Studio. Программа извлекает значение версии из файла, содержащего макрос или определение `APP_VERSION`, и записывает эту версию в блок `VERSIONINFO` файла ресурсов.
## Что делает программа? ##
1. Извлекает версию приложения из заданного файла (*например `version.h`*), содержащего строку вида `#define APP_VERSION "X.Y.Z.W"`.
2. Обновляет в указанном файле ресурсов (*например `resources.rc`*) блок `VERSIONINFO`, содержащий строки `FileVersion` и `ProductVersion`, соответственно.
## Параметры запуска ##
Запускайте программу командой в консоли:
```bash
path\to\wUpdateVersion.exe arg1 arg2
```
Параметры:
`path\to\wUpdateVersion.exe`: Полный путь к программе.
`arg1`: Путь к файлу, содержащему определение версии (`version.h`).
`arg2`: Путь к файлу ресурсов (`resources.rc`).
Например:
```bash
C:\Utils\wUpdateVersion.exe C:\Project\version.h C:\Project\resources.rc
```
## Автоматизация запуска программы перед сборкой проекта ##
Вы можете добавить вызов программы в качестве предкомпиляционного шага в проекте Microsoft Visual Studio, выполнив следующие шаги:
1. Щёлкните правой кнопкой мыши по проекту в Solution Explorer и выберите пункт Properties.
2. Перейдите на вкладку Build Events, раздел Pre-Build Event, Command Line.
3. Добавьте туда следующий код:
```bash
"$(SolutionDir)wUpdateVersion.exe" "$(ProjectDir)version.h" "$(ProjectDir)resources.rc"
```
> *В данном примере программа `wUpdateVersion.exe` находится в папке решения, а файлы `version.h` и `resources.rc` - в папке проекта.*
4. Обновите определение макроса `APP_VERSION` в файле `version.h` (Например `APP_VERSION "1.0"` -> `APP_VERSION "1.1"`).
Таким образом, каждый раз перед компиляцией проекта версия программы будет автоматически обновляться.
_(c) 2026 Vladislav Salikov aka W0LF aka 'dreamforce'_
> _Этот текст создан с помощью Giga.Chat._
-----
# wUpdateVersion
A program for automatically updating the version number of a compiled application.
_**The resource file must be in ANSI or UTF-8 encoding.**_
## Purpose of the Program ##
`wUpdateVersion` is used to automatically update the version of an application being developed before compilation in the Microsoft Visual Studio development environment. The program extracts the version value from a file containing the `APP_VERSION` macro or definition and writes this version to the `VERSIONINFO` block of the resource file.
## What does the program do? ##
1. Extracts the application version from the specified file (*e.g. `version.h`*) containing the string `#define APP_VERSION "X.Y.Z.W"`.
2. Updates the `VERSIONINFO` block in the specified resource file (*e.g. `resources.rc`*), containing the strings `FileVersion` and `ProductVersion`, respectively.
## Launch Parameters ##
Run the program with the following command in the console:
```bash
path\to\wUpdateVersion.exe arg1 arg2
```
Parameters:
`path\to\wUpdateVersion.exe`: Full path to the program.
`arg1`: Path to the file containing the version definition (`version.h`).
`arg2`: Path to the resource file (`resources.rc`).
For example:
```bash
C:\Utils\wUpdateVersion.exe C:\Project\version.h C:\Project\resources.rc
```
## Automating Program Launch Before Building the Project ##
You can add a program call as a pre-compile step in a Microsoft Visual Studio project by following these steps:
1. Right-click the project in Solution Explorer and select Properties.
2. Go to the Build Events tab, Pre-Build Event section, Command Line.
3. Add the following code:
```bash
"$(SolutionDir)wUpdateVersion.exe" "$(ProjectDir)version.h" "$(ProjectDir)resources.rc"
```
> *In this example, the `wUpdateVersion.exe` program is located in the solution folder, and the `version.h` and `resources.rc` files are in the project folder.*
4. Update the `APP_VERSION` macro definition in the `version.h` file (e.g. `APP_VERSION "1.0"` -> `APP_VERSION "1.1"`).
This way, the program version will be automatically updated each time the project is compiled.
_(c) 2026 Vladislav Salikov aka W0LF aka 'dreamforce'_
> _This text was created using Giga.Chat._
-----

16
wUpdateVersion/resource.h Normal file
View File

@@ -0,0 +1,16 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by wUpdateVersion.rc
//
#define IDI_ICON 101
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@@ -1,7 +1,7 @@
// version.h
#pragma once
#define APP_VERSION "1.2.3"
#define APP_VERSION "0.1"
#ifdef _WIN64
#define APP_ARCH "x64"

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

@@ -1,92 +1,60 @@
// Microsoft Visual C++ generated resource script.
//
#include "Resource.h"
#pragma code_page(65001)
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS
#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_MYAPP ICON "my_app.ico"
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 163
TOPMARGIN, 7
BOTTOMMARGIN, 55
END
END
#endif // APSTUDIO_INVOKED
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
1 TEXTINCLUDE
BEGIN
"Resource.h\0"
"resource.h\0"
END
2 TEXTINCLUDE
2 TEXTINCLUDE
BEGIN
"\r\n"
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"\0"
"#include ""winres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
3 TEXTINCLUDE
BEGIN
"\0"
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEVERSION 0,1,0,0
PRODUCTVERSION 0,1,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -101,35 +69,44 @@ BEGIN
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "My Company"
VALUE "FileDescription", "Application description"
VALUE "FileVersion", "1.0"
VALUE "InternalName", "my_app"
VALUE "LegalCopyright", "Copyright (c) 2026"
VALUE "OriginalFilename", "my_app.exe"
VALUE "ProductName", "My Supa App"
VALUE "ProductVersion", "1.0"
VALUE "CompanyName", "Vladislav Salikov aka W0LF aka 'dreamforce'"
VALUE "FileDescription", "A tool for automatically updating the program version number"
VALUE "FileVersion", "0.1"
VALUE "InternalName", "wUpdateVersion (C++)"
VALUE "LegalCopyright", "Copyright (C) 2026"
VALUE "OriginalFilename", "wUpdateVersion.exe"
VALUE "ProductName", "wUpdateVersion"
VALUE "ProductVersion", "0.1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 0x4B0
VALUE "Translation", 0x409, 1200
END
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
// Icon
//
STRINGTABLE
BEGIN
IDS_APP_TITLE "My Supa App"
IDC_MYAPP "MYAPPCLASS"
END
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON ICON "wUpdateVersion.ico"
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -130,7 +130,14 @@
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="testversion.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="version.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="wUpdateVersion.rc" />
</ItemGroup>
<ItemGroup>
<Image Include="wUpdateVersion.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View File

@@ -20,8 +20,21 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="testversion.h">
<ClInclude Include="version.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="wUpdateVersion.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<Image Include="wUpdateVersion.ico">
<Filter>Resource Files</Filter>
</Image>
</ItemGroup>
</Project>