mirror of
https://github.com/dreamforceinc/wUpdateVersion.git
synced 2026-03-28 17:32:46 +03:00
Compare commits
4 Commits
7c29889d08
...
bc146fc337
| Author | SHA1 | Date | |
|---|---|---|---|
| bc146fc337 | |||
| 87d8c38342 | |||
| 3f13431e0b | |||
| 0b8e94a0a8 |
119
README.md
119
README.md
@@ -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
16
wUpdateVersion/resource.h
Normal 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
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
// version.h
|
// version.h
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define APP_VERSION "1.2.3"
|
#define APP_VERSION "0.1"
|
||||||
|
|
||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
#define APP_ARCH "x64"
|
#define APP_ARCH "x64"
|
||||||
BIN
wUpdateVersion/wUpdateVersion.ico
Normal file
BIN
wUpdateVersion/wUpdateVersion.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 52 KiB |
@@ -1,92 +1,60 @@
|
|||||||
// Microsoft Visual C++ generated resource script.
|
// Microsoft Visual C++ generated resource script.
|
||||||
//
|
//
|
||||||
#include "Resource.h"
|
#pragma code_page(65001)
|
||||||
|
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
#define APSTUDIO_READONLY_SYMBOLS
|
#define APSTUDIO_READONLY_SYMBOLS
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Generated from the TEXTINCLUDE 2 resource.
|
// Generated from the TEXTINCLUDE 2 resource.
|
||||||
//
|
//
|
||||||
|
#include "winres.h"
|
||||||
#define APSTUDIO_HIDDEN_SYMBOLS
|
|
||||||
#include "windows.h"
|
|
||||||
#undef APSTUDIO_HIDDEN_SYMBOLS
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
#undef APSTUDIO_READONLY_SYMBOLS
|
#undef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// English (United States) resources
|
// English (United States) resources
|
||||||
|
|
||||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
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
|
#ifdef APSTUDIO_INVOKED
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// TEXTINCLUDE
|
// TEXTINCLUDE
|
||||||
//
|
//
|
||||||
|
|
||||||
1 TEXTINCLUDE
|
1 TEXTINCLUDE
|
||||||
BEGIN
|
BEGIN
|
||||||
"Resource.h\0"
|
"resource.h\0"
|
||||||
END
|
END
|
||||||
|
|
||||||
2 TEXTINCLUDE
|
2 TEXTINCLUDE
|
||||||
BEGIN
|
BEGIN
|
||||||
"\r\n"
|
"#include ""winres.h""\r\n"
|
||||||
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
|
"\0"
|
||||||
"#include ""windows.h""\r\n"
|
|
||||||
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
|
|
||||||
"\0"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
3 TEXTINCLUDE
|
3 TEXTINCLUDE
|
||||||
BEGIN
|
BEGIN
|
||||||
"\0"
|
"\r\n"
|
||||||
|
"\0"
|
||||||
END
|
END
|
||||||
|
|
||||||
#endif // APSTUDIO_INVOKED
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Version
|
// Version
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,0,0,0
|
FILEVERSION 0,1,0,0
|
||||||
PRODUCTVERSION 1,0,0,0
|
PRODUCTVERSION 0,1,0,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@@ -101,35 +69,44 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
BLOCK "040904b0"
|
BLOCK "040904b0"
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "My Company"
|
VALUE "CompanyName", "Vladislav Salikov aka W0LF aka 'dreamforce'"
|
||||||
VALUE "FileDescription", "Application description"
|
VALUE "FileDescription", "A tool for automatically updating the program version number"
|
||||||
VALUE "FileVersion", "1.0"
|
VALUE "FileVersion", "0.1"
|
||||||
VALUE "InternalName", "my_app"
|
VALUE "InternalName", "wUpdateVersion (C++)"
|
||||||
VALUE "LegalCopyright", "Copyright (c) 2026"
|
VALUE "LegalCopyright", "Copyright (C) 2026"
|
||||||
VALUE "OriginalFilename", "my_app.exe"
|
VALUE "OriginalFilename", "wUpdateVersion.exe"
|
||||||
VALUE "ProductName", "My Supa App"
|
VALUE "ProductName", "wUpdateVersion"
|
||||||
VALUE "ProductVersion", "1.0"
|
VALUE "ProductVersion", "0.1"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "Translation", 0x409, 0x4B0
|
VALUE "Translation", 0x409, 1200
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// String Table
|
// Icon
|
||||||
//
|
//
|
||||||
|
|
||||||
STRINGTABLE
|
// Icon with lowest ID value placed first to ensure application icon
|
||||||
BEGIN
|
// remains consistent on all systems.
|
||||||
IDS_APP_TITLE "My Supa App"
|
IDI_ICON ICON "wUpdateVersion.ico"
|
||||||
IDC_MYAPP "MYAPPCLASS"
|
|
||||||
END
|
|
||||||
|
|
||||||
#endif // English (United States) resources
|
#endif // English (United States) resources
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef APSTUDIO_INVOKED
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Generated from the TEXTINCLUDE 3 resource.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
#endif // not APSTUDIO_INVOKED
|
||||||
|
|
||||||
@@ -130,7 +130,14 @@
|
|||||||
<ClCompile Include="main.cpp" />
|
<ClCompile Include="main.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<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>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
|||||||
@@ -20,8 +20,21 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="testversion.h">
|
<ClInclude Include="version.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="resource.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ResourceCompile Include="wUpdateVersion.rc">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</ResourceCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Image Include="wUpdateVersion.ico">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</Image>
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
Reference in New Issue
Block a user