319 lines
18 KiB
HTML
319 lines
18 KiB
HTML
|
<head><style><!--
|
||
|
h2 {font-style: italic; font-size: 115%; font-weight: bold; margin-top: 0.4in}
|
||
|
p {margin-left: 1 em; margin-top: 0.1in; margin-bottom: 0; border-bottom:0; padding-bottom:0}
|
||
|
pre {margin-left: 2 em}
|
||
|
td {padding-left: 1ex; padding-right: 1ex}
|
||
|
th {padding-left: 1ex; padding-right: 1ex}
|
||
|
table.code {font-size: 88%; line-height:115%; margin-left: 2em}
|
||
|
table.code td {padding-right: 1ex; padding-left: 0}
|
||
|
--></style></head><body>
|
||
|
See <a href="#rsrcIndex">Index</a>
|
||
|
<h2> <a name="RSRC_Command_line">RSRC Command line</a>
|
||
|
</h2>
|
||
|
</p>
|
||
|
<pre>RSRC Executable [-l LocLang] [-u UnlocLang] [-i Types] [-q]
|
||
|
[ [-t|-d] TextOutput [-c UnlocExecutable]
|
||
|
| [-a|-r] text-input [-s symbols] [-v] ]
|
||
|
</pre>
|
||
|
<p><b><a name="Executable">Executable</a></b><p style="margin-left: 5ex; margin-top: 0">Win32 binary to analyse (default), to generate tokens (-t)
|
||
|
or dump (-d) from, or containing resources to be replaced (-r)
|
||
|
or appended to (-a).
|
||
|
<p><b><a name="-l_LocLang">-l LocLang</a></b><p style="margin-left: 5ex; margin-top: 0">Restrict processing to the specified localized language. LangId
|
||
|
should be specified as a full hex NLS Language id, for example use
|
||
|
'-l 409' for US English. Required for replace (-r) operation.
|
||
|
<p><b><a name="-u_UnlocLang">-u UnlocLang</a></b><p style="margin-left: 5ex; margin-top: 0">Specifies unlocalized language, defaults to 409 (US English).
|
||
|
<p><b><a name="-i_Types">-i Types</a></b><p style="margin-left: 5ex; margin-top: 0">Restrict processing to listed types. Each type is indicated by a letter
|
||
|
as below:
|
||
|
</p>
|
||
|
<table border align=centre border=2 cellpadding=1 cellspacing=0 style="margin-left:0.6in; margin-top: 0.1in">
|
||
|
<tr align=left><th> Letter <th> Type <th> Letter <th> Type <th> Letter <th> Type
|
||
|
<tr><td> c <td> Cursors <td> g <td> Message tables <td> n <td> INFs
|
||
|
<tr><td> b <td> Bitmaps <td> v <td> Version info <td> h <td> HTML
|
||
|
<tr><td> i <td> Icons <td> a <td> Accelerators <td> x <td> Binary data
|
||
|
<tr><td> m <td> Menus <td> f <td> Font directories <td> <td>
|
||
|
<tr><td> d <td> Dialogs <td> t <td> Fonts <td> o <td> All others
|
||
|
<tr><td> s <td> Strings <td> r <td> RCDATA <td> a <td> All (default)
|
||
|
</table>
|
||
|
<p><b><a name="-q">-q</a></b><p style="margin-left: 5ex; margin-top: 0">Quiet. By default Rsrc displays summary statistics of types and languages
|
||
|
of resources processed. -q suppresses all output except warning and error messages.
|
||
|
<p><b><a name="-t_TextOutput">-t TextOutput</a></b><p style="margin-left: 5ex; margin-top: 0">Generate tokens in checkin format.
|
||
|
<p><b><a name="-d_TextOutput">-d TextOutput</a></b><p style="margin-left: 5ex; margin-top: 0">Dump resources in Hex & ASCII format.
|
||
|
<p><b><a name="-c_UnlocExecutable">-c UnlocExecutable</a></b><p style="margin-left: 5ex; margin-top: 0">Compare with unlocalized (English) resources - localised
|
||
|
resources in executable are compared with English resources in
|
||
|
UnlocExecutable. When the localised resource is bit for bit identical
|
||
|
with the English resource RSRC writes a one line unloc
|
||
|
token instead of the full resource. Valid only with tokenise (-t)
|
||
|
option.
|
||
|
<p><b><a name="-a_TextInput">-a TextInput</a></b><p style="margin-left: 5ex; margin-top: 0">Append resources from text input file. Every resource in the
|
||
|
text file is added to the executable. Resources already in the executable
|
||
|
are not removed. When a resource from the token file has the same type, id
|
||
|
and language as one in the executable, the executable resource is replaced
|
||
|
by the token resource.
|
||
|
<p><b><a name="-r_TextInput">-r TextInput</a></b><p style="margin-left: 5ex; margin-top: 0">Replace English resources in executable by localised resources
|
||
|
from text file. Requires -l parameter to specify localisation language.
|
||
|
When a resource from the token file has the same type and id as one in the
|
||
|
executable, and the executable resource is US English (409) and the localised
|
||
|
resource is in the language specified on the -l parameter, the US English
|
||
|
resource is removed.
|
||
|
<p><b><a name="-s_Symbols">-s Symbols</a></b><p style="margin-left: 5ex; margin-top: 0">Symbol file (.dbg format). When RSRC updates the header checksum
|
||
|
in executable, it will also do so in the named symbol file. Valid only
|
||
|
with the replace (-r) and append (-a) options.
|
||
|
<p>Miscellaneous options
|
||
|
<p><b><a name="-v">-v</a></b><p style="margin-left: 5ex; margin-top: 0">Update file and product version. By default any file and product version
|
||
|
in the token file is ignored during update/append, the file and product
|
||
|
versions from the original unlocalised resources are retained.
|
||
|
</p>
|
||
|
<table cellpadding=0 cellspacing=0 class=code>
|
||
|
</table>
|
||
|
<h2> <a name="Definitions">Definitions</a>
|
||
|
</h2>
|
||
|
<p><b><a name="Resource_key">Resource key</a></b><p style="margin-left: 5ex; margin-top: 0">The combination of resource type, resource id and
|
||
|
resource language. The resource key uniquely identifies the
|
||
|
resource. A Win32 executable can contain any combination of
|
||
|
languages, ids and types so long as no two resources have the
|
||
|
same type, key and language.
|
||
|
<p><b><a name="Resource_type">Resource type</a></b><p style="margin-left: 5ex; margin-top: 0">A numeric or string value. Some numeric values are
|
||
|
predefined, for example menus and dialogs, but apps can and
|
||
|
do use any value they choose.
|
||
|
<p><b><a name="Resource_id">Resource id</a></b><p style="margin-left: 5ex; margin-top: 0">A numeric or string value. Used by an application to
|
||
|
identify the resource when calling FindResource, LoadString etc.
|
||
|
<p><b><a name="Resource_language">Resource language</a></b><p style="margin-left: 5ex; margin-top: 0">An NLS LANGID, i.e. a combination of primary and
|
||
|
sub-language, such as 0409 (US English).
|
||
|
<p><b><a name="Unloc_token">Unloc token</a></b><p style="margin-left: 5ex; margin-top: 0">A line in the token file specifying a localised resource
|
||
|
key followed by '=lang,cksum' where lang is the unlocalised
|
||
|
language (usually 0409) and cksum is the checksum of the unlocalised
|
||
|
resource. Used when the only difference between the localised and
|
||
|
unlocalised resource is the language in the resource key.
|
||
|
</p>
|
||
|
<table cellpadding=0 cellspacing=0 class=code>
|
||
|
</table>
|
||
|
<h2> <a name="Use_during_localisation_checkin_process">Use during localisation checkin process</a>
|
||
|
</h2>
|
||
|
</p>
|
||
|
<pre>RSRC LocalisedExecutable -c UnlocExecutable -t Tokens -l LocLang [-u UnlocLang]
|
||
|
</pre>
|
||
|
<p>Extracts localized tokens for the specified langauge.
|
||
|
<p>Where a resource in the localised executable is bit for bit identical
|
||
|
to a resource in the unlocalized executable, the resource content is not
|
||
|
written to the token file. In its place RSRC writes an unloc token
|
||
|
giving the checksum of the resource and specifying the target language.
|
||
|
<p>Warnings are generated if the localised executable contains resources
|
||
|
in languages other than that specified by the -l parameter.
|
||
|
<p>Unlocalised resources for comparison are looked up in the unlocalised
|
||
|
executable in the language specified on the -u parameter, default 409
|
||
|
(US ENglish).
|
||
|
</p>
|
||
|
<table cellpadding=0 cellspacing=0 class=code>
|
||
|
</table>
|
||
|
<h2> <a name="Use_during_the_build_to_update_a_single_language_executable">Use during the build to update a single language executable</a>
|
||
|
</h2>
|
||
|
</p>
|
||
|
<pre>RSRC Executable [-u UnlocLang] -r Tokens -l LocLang -s SymbolFile
|
||
|
</pre>
|
||
|
<p>Each localised resource in the token file is added to the executable.
|
||
|
<p>Each corresponding unlocalized resource is removed from the executable.
|
||
|
<p>For each unloc token the unlocalized resource is found in the executable
|
||
|
and its language is updated to the target localized language recorded
|
||
|
in the unloc token.
|
||
|
<p>Tokens of other than the specified localised language are not
|
||
|
processed, but generate warnings.
|
||
|
<p>Warnings are generated for any resources not appearing in both the
|
||
|
executable and token files.
|
||
|
<p>Warnings are also generated for resources of other than the unlocalised
|
||
|
language found in the original executable, and resources of other than
|
||
|
the localised language in the token file.
|
||
|
<p>The unlocalised language defaults to 409 (US English).
|
||
|
</p>
|
||
|
<table cellpadding=0 cellspacing=0 class=code>
|
||
|
</table>
|
||
|
<h2> <a name="Use_during_the_build_to_add_resources_to_a_multi-language_executable">Use during the build to add resources to a multi-language executable</a>
|
||
|
</h2>
|
||
|
</p>
|
||
|
<pre>RSRC Executable [-u UnlocLang] -a Tokens [-l Language] -s SymbolFile
|
||
|
</pre>
|
||
|
<p>Localised resources from the token file are added to the executable.
|
||
|
<p>For each unloc token the unlocalised resource is found in the executable
|
||
|
and copied for the localised language recorded in the unloc token.
|
||
|
<p>If '-l Languge' is specified, only tokens of that language are added.
|
||
|
When used with the append (-a) option, '-l Language' applies only to
|
||
|
the token file: pre-existing resources in the executable are not affected.
|
||
|
<p>If a resource from the token file matches a resource already in the
|
||
|
executable in type, name and language, the executable resource
|
||
|
is replaced.
|
||
|
<p>Warnings are generated if any token in the executable is replaced, or
|
||
|
if the unlocalised resource corresponding to an unloc token is missing
|
||
|
or has a checksum which differs from the unlocalised resource that was
|
||
|
passed on the '-u' parameter when the toke file was created.
|
||
|
<p>If the '-l Language' option is used, warnings are generated for any
|
||
|
resources of other languages found in the token file.
|
||
|
</p>
|
||
|
<table cellpadding=0 cellspacing=0 class=code>
|
||
|
</table>
|
||
|
<h2> <a name="Token_format_-_resource_key_and_header">Token format - resource key and header</a>
|
||
|
</h2>
|
||
|
<p>A resource may be represented by one or more lines. When
|
||
|
a resource is spread over more than one line, all lines except the
|
||
|
first are indented by three spaces.
|
||
|
<p>The first line of every resource starts with the resource key as follows:
|
||
|
<p>type,id,language;
|
||
|
<p>This is followed by the codepage recorded in the resource directory.
|
||
|
Note that the codepage is not part of the resource key, and is not
|
||
|
maintained consistently by all software. In particular:
|
||
|
</p>
|
||
|
<ul> <li> RC writes the codepage as zero
|
||
|
<li> The NT UpdateResource API writes the codepage as 1252
|
||
|
<li> Locstudio writes a codepage that corresponds to the resource language
|
||
|
</ul>
|
||
|
<p>Winnt.h documents the codepage as follows:
|
||
|
<p>"Each resource data entry ... contains ... a CodePage that should be
|
||
|
used when decoding code point values within the resource data.
|
||
|
Typically for new applications the code page would be the unicode
|
||
|
code page.'
|
||
|
<p>In practise I have never seen the codepage value set to Unicode (1200).
|
||
|
<p>If the '-c' (unlocalised comparison) parameter was provided on the
|
||
|
rsrc command, and there was an unlocalised resource with the same type
|
||
|
and id, the language and checksum of that unlocalised resource are
|
||
|
appended.
|
||
|
<p>Finally, the resource data is represented in one of the forms below,
|
||
|
or as 'unloc' if the resource data exactly matches the unlocalised resource
|
||
|
found in the file passed by 'c'.
|
||
|
<p>There are thus three possible token key/header formats as follows:
|
||
|
</p>
|
||
|
<pre>type,id,language;codepage;resource-data
|
||
|
</pre>
|
||
|
<p>Resource recorded in full, either no '-c' parameter specified, or
|
||
|
resource does not exist in unlocalised file.
|
||
|
</p>
|
||
|
<pre>type,id,language;codepage,unlocalised-checksum,language;resource-data
|
||
|
</pre>
|
||
|
<p>Resource recorded in full, '-c' parameter was specified, and localised
|
||
|
resource image differed from unlocalised resource image.
|
||
|
</p>
|
||
|
<pre>type,id,language;codepage,unlocalised-checksum,language;'Unloc'
|
||
|
</pre>
|
||
|
<p>Resource recorded in full, '-c' parameter was specified, and localised
|
||
|
resource image was identical to unlocalised resource image.
|
||
|
</p>
|
||
|
<table cellpadding=0 cellspacing=0 class=code>
|
||
|
</table>
|
||
|
<h2> <a name="Token_samples_-_default_hex_format">Token samples - default hex format</a>
|
||
|
</h2>
|
||
|
<p>For most resource types, RSRC generates resources
|
||
|
as a string of hex digits.
|
||
|
<p>For example, the following represents an accelerator resource.
|
||
|
</p>
|
||
|
<pre>0009,0002,0409;00000000;Hex;00000020:030074008e00000003002e00840000000b0044008400000087002e0084000000
|
||
|
</pre>
|
||
|
</p>
|
||
|
<ul> <li> Type 0x0009 (Accelerator)
|
||
|
<li> Id 0x0002
|
||
|
<li> Language 0x0409 (LANG_ENGLISH, SUBLANG_US)
|
||
|
<li> Codepage 0 (implies resource was probably generated by RC)
|
||
|
<li> Length in bytes 0x0020
|
||
|
</ul>
|
||
|
<p>The resource is short, so its hex representation follows the length.
|
||
|
<p>A larger binary resource is represented on multiple lines as follows:
|
||
|
</p>
|
||
|
<pre>000a,4000,0409;00000000;Hex;0000016a
|
||
|
00000000:0000640100004c0000000114020000000000c000000000000046830000003508000050130852c8e0bd0170493f38ace1bd016044d085c9e0bd01003000000000000001000000000000000000000000000000590014001f0fe04fd020ea3a6910a2d808002b30309d190023563a5c000000000000000000000000000000000065
|
||
|
00000080:7c15003100000000003025a49e308857696e6e74000015003100000000002f25d3863508466f6e747300000000490000001c000000010000001c0000003900000000000000480000001d0000000300000063de7d98100000005f535445504853544550485f00563a5c57494e4e545c466f6e7473000010000000050000a02400
|
||
|
00000100:00004200000060000000030000a05800000000000000737465706800000000000000000000004255867d3048d211b5d8d085029b1cfa4119c94a9f4dd211871f0000000000004255867d3048d211b5d8d085029b1cfa4119c94a9f4dd211871f00000000000000000000
|
||
|
</pre>
|
||
|
</p>
|
||
|
<ul> <li> Type 0x000a (RCDATA)
|
||
|
<li> Id 0x4000
|
||
|
<li> Language 0x0409 (LANG_ENGLISH, SUBLANG_US)
|
||
|
<li> Codepage 0
|
||
|
<li> Length in bytes 0x016a
|
||
|
</ul>
|
||
|
<p>The hex representation is split onto multiple lines each of 128 bytes.
|
||
|
</p>
|
||
|
<table cellpadding=0 cellspacing=0 class=code>
|
||
|
</table>
|
||
|
<h2> <a name="Warnings_and_errors">Warnings and errors</a>
|
||
|
</h2>
|
||
|
</p>
|
||
|
<ul> <li> warning RSRC100: Localised resource has no corresponding unlocalised resource in %s
|
||
|
<li> warning RSRC110: Unlocalised resource from token file appended to executable
|
||
|
<li> warning RSRC111: Unlocalised resource from token file replaced unlocalised resource in executable
|
||
|
<li> warning RSRC112: Localised resource from token file replaced localised resource already present in executable
|
||
|
<li> warning RSRC113: Localised resource from token file appended to executable - there was no matching unlocalised resource
|
||
|
<li> warning RSRC120: Token file resource does not match specified language - ignored
|
||
|
<li> warning RSRC121: Token file resource is not a requested resource type - ignored
|
||
|
<li> warning RSRC122: executable unlocalised resource checksum does not match checksum recorded in token file for resource %s
|
||
|
<li> warning RSRC124: missing executable unlocalised resource for %s
|
||
|
<li> warning RSRC125: executable contains no unlocalised resource corresponding to resource %s
|
||
|
<li> warning RSRC160: Symbol file does not match exectable
|
||
|
<li> warning RSRC161: Symbol file not processed
|
||
|
<li> warning RSRC162: Could not reopen executable %s to update checksum
|
||
|
<li> warning RSRC163: Failed to write updated symbol checksum
|
||
|
<li> warning RSRC170: No localizable resources in %s
|
||
|
<li> warning RSRC171: could not close executable
|
||
|
</ul>
|
||
|
</p>
|
||
|
<ul> <li> error RSRC230: 'Unloc' token is missing unlocalised resource information for %s
|
||
|
<li> error RSRC231: Failed to apply unloc token
|
||
|
<li> error RSRC232: Failed to apply token
|
||
|
<li> error RSRC300: Hex digit expected
|
||
|
<li> error RSRC301: Hex value too large
|
||
|
<li> error RSRC302: Unexpected end of file
|
||
|
<li> error RSRC303: \'%s\' expected
|
||
|
<li> error RSRC304: newline expected
|
||
|
<li> error RSRC310: Unrecognised resource type for resource %s
|
||
|
<li> error RSRC400: -t (tokenise) option excludes -d, -a, -r, and -s
|
||
|
<li> error RSRC401: -d (dump) option excludes -t, -u, -a, -r, and -s
|
||
|
<li> error RSRC402: -a (append) option excludes -t, -d, -u, and -r
|
||
|
<li> error RSRC403: -r (replace) option excludes -t, -d, -u, and -a
|
||
|
<li> error RSRC404: -r (replace) option requires -l (LangId)
|
||
|
<li> error RSRC405: Analysis excludes -s
|
||
|
<li> error RSRC420: Update failed.
|
||
|
<li> error RSRC421: Token extraction failed.
|
||
|
<li> error RSRC422: Analysis failed.
|
||
|
<li> error RSRC500: Corrupt executable - resource appears more than once
|
||
|
<li> error RSRC501: %s is not an executable file
|
||
|
<li> error RSRC502: %s is not a Win32 executable file
|
||
|
<li> error RSRC503: No resources in %s
|
||
|
<li> error RSRC510: Cannot open executable file %s
|
||
|
<li> error RSRC511: cannot find resource directory in %s
|
||
|
<li> error RSRC512: Cannot create resource token file %s
|
||
|
<li> error RSRC513: Cannot open unlocalised executable file %s
|
||
|
<li> error RSRC514: cannot find resource directory in unlocalised executable %s
|
||
|
<li> error RSRC515: cannot write delta token file %s
|
||
|
<li> error RSRC516: cannot write stand alone token file %s
|
||
|
<li> error RSRC520: Cannot open resource token file %s
|
||
|
<li> error RSRC521: UTF8 BOM missing from token file
|
||
|
<li> error RSRC530: Cannot read executable resources from %s
|
||
|
<li> error RSRC531: Failed reading update tokens
|
||
|
<li> error RSRC600: BeginUpdateResource failed on %s
|
||
|
<li> error RSRC601: UpdateResourceW failed on %s
|
||
|
<li> error RSRC602: EndUpdateResourceW failed on %s
|
||
|
</ul>
|
||
|
<table cellpadding=0 cellspacing=0 class=code>
|
||
|
</table>
|
||
|
<p><h1><a name="rsrcIndex">Index</a></h1><menu>
|
||
|
<li><a href="#-a_TextInput">-a TextInput</a>
|
||
|
<li><a href="#-c_UnlocExecutable">-c UnlocExecutable</a>
|
||
|
<li><a href="#-d_TextOutput">-d TextOutput</a>
|
||
|
<li><a href="#-i_Types">-i Types</a>
|
||
|
<li><a href="#-l_LocLang">-l LocLang</a>
|
||
|
<li><a href="#-q">-q</a>
|
||
|
<li><a href="#-r_TextInput">-r TextInput</a>
|
||
|
<li><a href="#-s_Symbols">-s Symbols</a>
|
||
|
<li><a href="#-t_TextOutput">-t TextOutput</a>
|
||
|
<li><a href="#-u_UnlocLang">-u UnlocLang</a>
|
||
|
<li><a href="#-v">-v</a>
|
||
|
<li><a href="#Definitions">Definitions</a>
|
||
|
<li><a href="#RSRC_Command_line">RSRC Command line</a>
|
||
|
<li><a href="#Resource_id">Resource id</a>
|
||
|
<li><a href="#Resource_key">Resource key</a>
|
||
|
<li><a href="#Resource_language">Resource language</a>
|
||
|
<li><a href="#Resource_type">Resource type</a>
|
||
|
<li><a href="#Token_format_-_resource_key_and_header">Token format - resource key and header</a>
|
||
|
<li><a href="#Token_samples_-_default_hex_format">Token samples - default hex format</a>
|
||
|
<li><a href="#Unloc_token">Unloc token</a>
|
||
|
<li><a href="#Use_during_localisation_checkin_process">Use during localisation checkin process</a>
|
||
|
<li><a href="#Use_during_the_build_to_add_resources_to_a_multi-language_executable">Use during the build to add resources to a multi-language executable</a>
|
||
|
<li><a href="#Use_during_the_build_to_update_a_single_language_executable">Use during the build to update a single language executable</a>
|
||
|
<li><a href="#Warnings_and_errors">Warnings and errors</a>
|
||
|
</menu>
|