如何给应用程序加版本信息
ZeroJiu 愚昧之巅V4

如果某个想法是你唯一的想法,再也没有比这个更危险的事情了。

右键应用程序的可执行文件,查看详细信息,能够看到应用程序的详细描述,这是怎么加的呢?

image

创建资源(rc)文件

在Visual Studio 2014中,按照下面顺序:右键项目→Add→Resource,我们就可以在Solution Explorer中看到多了一个resource.hproject.rc文件。project.rc包含了项目的资源信息,包括版本号、icon等。

生成版本信息

目前大多数应用程序的版本号都是4位,前三位手动设置,最后一位根据git提交次数来设置。git计算提交次数的指令如下:

1
"%git_path%"\git rev-list --count HEAD >> version.h

上面这句命令会将git提交次数写入到version.h文件的最后面,我们在version.h中只需要#define某个宏,然后不给值,用上面这条命令生成git提交次数。等值生成后,包含version.h就可以使用相应的版本号了。譬如下面:

1
2
3
4
#define version_one 100
#define version_two 99
#define version_three 98
#define version_four // 在这儿我们将要填充git提交辞书,譬如97

将版本信息写入到应用程序详情

resource.h中包含version.h,按照下面模板填写信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#include "version.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// 中文(简体,中国) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
"resource.h\0"
END

2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END

3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END

#endif // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION version_one, version_two, version_three, version_four
PRODUCTVERSION version_one, version_two, version_three, version_four
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "CompanyName", "Google China Inc."
VALUE "FileDescription", "Chrome"
VALUE "FileVersion", version(version_one, version_two, version_three, version_four)
VALUE "InternalName", "Chrome.exe"
VALUE "LegalCopyright", "Copyright (C) Google China Inc. 2016"
VALUE "OriginalFilename", "Chrome.exe"
VALUE "ProductName", "Chrome"
VALUE "ProductVersion", version(version_one, version_two, version_three, version_four)
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 1200
END
END

/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON "ic_pen.ico"
#endif // 中文(简体,中国) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
Powered by Hexo & Theme Keep
This site is deployed on
Unique Visitor Page View