-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvibin.html
199 lines (179 loc) · 8.92 KB
/
vibin.html
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
---
dl-file-prefix: "dd-vibin-"
layout: "codelib-tplt"
group: lib
priority: 3.5
version: 1.0.0
release-date: 2023-05-17
platforms: ["Win32"]
frameworks: ["VCL", "FMX"]
compatibility: "Delphi XE and later"
title: "Binary Version Information Manipulation Units"
precis: "Classes to manipulate binary Windows version information."
summary: "Classes to read, manipulate and write binary Windows version information, bypassing the Windows API."
meta-title: "Delphi VCL & FMX classes to read, manipulate and write binary Windows version information."
meta-desc: "Delphi Pascal VCL & FMX classes to read, manipulate and write binary Windows version information, bypassing the Windows API. Requires Delphi XE & later."
download-base-url: "https://sourceforge.net/projects/ddablib/files/vibin/"
repo-url: "https://github.com/ddablib/vibin"
docs-url: "https://lib-docs.delphidabbler.com/VIBin/"
want-header-buttons: false
status: "current"
---
{% assign dl-file = page.dl-file-prefix | append: page.version | append: ".zip" %}
{% assign dl-url = page.download-base-url | append: dl-file %}
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
Overview
</h2>
</div>
<div class="panel-body">
<p>
The Binary Version Information Manipulation Units provide a set of classes that can be used to read, manipulate and write Windows version information in its raw binary form. This is the form used to store version information in Windows executables and resource files.
</p>
<p>
The advantage of using this code over the Windows API for reading version information is that the code can cope with badly formed version information that would defeat the API routines. Furthermore, this code can enumerate the contents of string tables and list and access non-standard string table entries. It also works with string tables in multiple languages.
</p>
<h3 data-toggle="collapse" data-target="#demo" class="collapsible collapsed">
Demo code
</h3>
<div id="demo" class="collapse"> <!-- begin collapsible #demo section -->
<p>
Two programs are provided that show how to use classes made available by the <code>vibin</code> project:
</p>
<ol>
<li>
<code>ResRWDemo</code> - demonstrates how to read from and write to 32 bit version information resources within binary resource files.
</li>
<li>
<code>VIReaderDemo</code> - demonstrates how to read 32 bit version information from executable programs or DLLs.
</li>
</ol>
<p>
You should the read demo source code alongside the user guide: the two are complementary.
</p>
</div> <!-- /#demo -->
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
Get The Code
</h2>
</div>
<div class="panel-body">
<p>
You can download the latest version of the <em>{{page.title}}</em> directly from SourceForge as <code>{{ dl-file }}</code>.
</p>
<p class="text-center">
<a class="btn btn-primary" role="button" href="{{ dl-url }}" aria-label="Go to SourceForge and download latest version automatically">Download <span class="hidden-xs">release </span>v{{ page.version }}<span class="hidden-xs"> from SourceForge</span></a>
</p>
<p>
The <em>{{ page.title }}</em> source code is hosted in the <a href="{{ page.repo-url }}" aria-label="Link to the ddablib/vibin repository on GitHub"><code>ddablib/vibin</code></a> GitHub repository. You can <code>git clone</code> or fork the repository as required.
</p>
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
Installation
</h2>
</div>
<div class="panel-body">
<p>
The <em>{{ page.title }}</em> is supplied in a zip file. Before installing you need to extract all the files from the zip file. The following files will be extracted:
</p>
<ul class="list-group">
<li class="list-group-item">
<strong><code>DelphiDabbler.Lib.VIBin.Resource.pas</code></strong> – Contains the primary class you need to interact with to manipulate binary version information. This class encapsulates a binary version information resource as stored in Windows binary resource files and executable files.
</li>
<li class="list-group-item">
<strong><code>DelphiDabbler.Lib.VIBin.VarRec.pas</code></strong> – Contains support classes required by <code>DelphiDabbler.Lib.VIBin.Resource.pas</code>. These classes encapsulate both 16 bit and 32 bit variable size version information records. They do not need to be accessed directly.
</li>
<li class="list-group-item">
<strong><code>DelphiDabbler.Lib.VIBin.Defines.inc</code></strong> – Include file containing defined symbols that enable conditional compilation for different versions of Delphi.
</li>
<li class="list-group-item">
<code>README.md</code> – Read-me file.
</li>
<li class="list-group-item">
<code>CHANGELOG.md</code> – The project's change log.
</li>
<li class="list-group-item">
<code>MPL-2.txt</code> – The Mozilla Public License v2.0.
</li>
<li class="list-group-item">
<code>Documentation.URL</code> – Short-cut to the project's online documentation.
</li>
</ul>
<p>
In addition to the above files you will find the the source code of two demo projects along with read-me files in the <code>Demos</code> directory.
</p>
<p>
There are four possible ways to use the units:
</p>
<ol>
<li>
The simplest way is to add <code>DelphiDabbler.Lib.VIBin.Resource.pas</code>, <code>DelphiDabbler.Lib.VIBin.VarRec.pas</code> and <code>DelphiDabbler.Lib.VIBin.Defines.pas</code> to your projects.
</li>
<li>
To make the units and include file easier to re-use you can either copy them to a folder on your Delphi search path, or add the folder where you extracted the units to the search path. You then simply use the units as required without needing to add them to your project.
</li>
<li>
For maximum portability you can add the units to a Delphi package.
</li>
<li>
If you use Git you can add the <a href="https://github.com/ddablib/vibin"><code>ddablib/vibin</code></a> GitHub repository as a Git submodule and add it to your project. Obviously, it's safer if you fork the repo and use your own copy, just in case <code>ddablib/vibin</code> ever goes away.
</li>
</ol>
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
Documentation
</h2>
</div>
<div class="panel-body">
<p>
<em>{{ page.title }}</em> is comprehensively documented online <a href="{{ page.docs-url }}" aria-title="View the online documentation">here</a>
</p>
<p>
The project's change log can be viewed <a href="https://github.com/ddablib/vibin/blob/master/CHANGELOG.md" aria-title="View the change log in Markdown format">here</a>.
</p>
<p>
A read-me file (<code>README.md</code>) is included in the project download or it can be viewed <a href="https://github.com/ddablib/vibin/blob/master/README.md" aria-title="View the read-me file in Markdown format">here</a>.
</p>
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title" id="feedback">
Feedback & Queries
</h2>
</div>
<div class="panel-body">
<p>
If you find any bugs or want to suggest a new feature please report them using the <em>{{page.title}}</em> <a href="https://github.com/ddablib/vibin/issues">issue tracker</a>.
</p>
<p>
If you have created a bug fix or have implemented a new feature please open a pull request for it, relative to the <a href="https://github.com/ddablib/vibin/tree/develop"><code>develop</code></a> branch.
</p>
<p>
Should you have any queries about using the component please read the <a href="{{ page.docs-url }}">documentation</a>. If you can't find an answer in the documentation then post a message in the <a href="https://github.com/orgs/ddablib/discussions">discussion group</a>
</p>
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
License
</h2>
</div>
<div class="panel-body">
<p>
<span class="fa fa-copyright fa-pull-left fa-3x"></span>
The <em>{{ page.title }}</em> is open source. It is copyright © 2002-2023 by <a href="https://en.gravatar.com/delphidabbler" aria-label="Peter Johnson's Gravatar account">Peter Johnson</a>. The source code is made available under the terms of the <a href="https://www.mozilla.org/MPL/2.0/" aria-label="Mozilla Public License v2.0 on mozilla.org">Mozilla Public License v2.0</a>. All relevant trademarks are acknowledged.
</p>
</div>
</section>