Files
2026-06-04 11:42:34 +02:00

439 lines
12 KiB
C#

using System;
using System.Collections;
using System.IO;
using System.Text;
namespace System.Resources
{
// Token: 0x02000289 RID: 649
internal class Win32VersionResource : Win32Resource
{
// Token: 0x060020B4 RID: 8372 RVA: 0x00077CDC File Offset: 0x00075EDC
public Win32VersionResource(int id, int language, bool compilercontext)
: base(Win32ResourceType.RT_VERSION, id, language)
{
this.signature = (long)((ulong)(-17890115));
this.struct_version = 65536;
this.file_flags_mask = 63;
this.file_flags = 0;
this.file_os = 4;
this.file_type = 2;
this.file_subtype = 0;
this.file_date = 0L;
this.file_lang = ((!compilercontext) ? 127 : 0);
this.file_codepage = 1200;
this.properties = new Hashtable();
string text = ((!compilercontext) ? " " : string.Empty);
foreach (string text2 in this.WellKnownProperties)
{
this.properties[text2] = text;
}
this.LegalCopyright = " ";
this.FileDescription = " ";
}
// Token: 0x1700061C RID: 1564
// (get) Token: 0x060020B5 RID: 8373 RVA: 0x00077E04 File Offset: 0x00076004
// (set) Token: 0x060020B6 RID: 8374 RVA: 0x00077E94 File Offset: 0x00076094
public string Version
{
get
{
return string.Concat(new object[]
{
string.Empty,
this.file_version >> 48,
".",
(this.file_version >> 32) & 65535L,
".",
(this.file_version >> 16) & 65535L,
".",
this.file_version & 65535L
});
}
set
{
long[] array = new long[4];
if (value != null)
{
string[] array2 = value.Split(new char[] { '.' });
try
{
for (int i = 0; i < array2.Length; i++)
{
if (i < array.Length)
{
array[i] = (long)int.Parse(array2[i]);
}
}
}
catch (FormatException)
{
}
}
this.file_version = (array[0] << 48) | (array[1] << 32) | ((array[2] << 16) + array[3]);
this.properties["FileVersion"] = this.Version;
}
}
// Token: 0x1700061D RID: 1565
public virtual string this[string key]
{
set
{
this.properties[key] = value;
}
}
// Token: 0x1700061E RID: 1566
// (get) Token: 0x060020B8 RID: 8376 RVA: 0x00077F54 File Offset: 0x00076154
// (set) Token: 0x060020B9 RID: 8377 RVA: 0x00077F6C File Offset: 0x0007616C
public virtual string Comments
{
get
{
return (string)this.properties["Comments"];
}
set
{
this.properties["Comments"] = ((!(value == string.Empty)) ? value : " ");
}
}
// Token: 0x1700061F RID: 1567
// (get) Token: 0x060020BA RID: 8378 RVA: 0x00077F9C File Offset: 0x0007619C
// (set) Token: 0x060020BB RID: 8379 RVA: 0x00077FB4 File Offset: 0x000761B4
public virtual string CompanyName
{
get
{
return (string)this.properties["CompanyName"];
}
set
{
this.properties["CompanyName"] = ((!(value == string.Empty)) ? value : " ");
}
}
// Token: 0x17000620 RID: 1568
// (get) Token: 0x060020BC RID: 8380 RVA: 0x00077FE4 File Offset: 0x000761E4
// (set) Token: 0x060020BD RID: 8381 RVA: 0x00077FFC File Offset: 0x000761FC
public virtual string LegalCopyright
{
get
{
return (string)this.properties["LegalCopyright"];
}
set
{
this.properties["LegalCopyright"] = ((!(value == string.Empty)) ? value : " ");
}
}
// Token: 0x17000621 RID: 1569
// (get) Token: 0x060020BE RID: 8382 RVA: 0x0007802C File Offset: 0x0007622C
// (set) Token: 0x060020BF RID: 8383 RVA: 0x00078044 File Offset: 0x00076244
public virtual string LegalTrademarks
{
get
{
return (string)this.properties["LegalTrademarks"];
}
set
{
this.properties["LegalTrademarks"] = ((!(value == string.Empty)) ? value : " ");
}
}
// Token: 0x17000622 RID: 1570
// (get) Token: 0x060020C0 RID: 8384 RVA: 0x00078074 File Offset: 0x00076274
// (set) Token: 0x060020C1 RID: 8385 RVA: 0x0007808C File Offset: 0x0007628C
public virtual string OriginalFilename
{
get
{
return (string)this.properties["OriginalFilename"];
}
set
{
this.properties["OriginalFilename"] = ((!(value == string.Empty)) ? value : " ");
}
}
// Token: 0x17000623 RID: 1571
// (get) Token: 0x060020C2 RID: 8386 RVA: 0x000780BC File Offset: 0x000762BC
// (set) Token: 0x060020C3 RID: 8387 RVA: 0x000780D4 File Offset: 0x000762D4
public virtual string ProductName
{
get
{
return (string)this.properties["ProductName"];
}
set
{
this.properties["ProductName"] = ((!(value == string.Empty)) ? value : " ");
}
}
// Token: 0x17000624 RID: 1572
// (get) Token: 0x060020C4 RID: 8388 RVA: 0x00078104 File Offset: 0x00076304
// (set) Token: 0x060020C5 RID: 8389 RVA: 0x0007811C File Offset: 0x0007631C
public virtual string ProductVersion
{
get
{
return (string)this.properties["ProductVersion"];
}
set
{
if (value == null || value.Length == 0)
{
value = " ";
}
long[] array = new long[4];
string[] array2 = value.Split(new char[] { '.' });
try
{
for (int i = 0; i < array2.Length; i++)
{
if (i < array.Length)
{
array[i] = (long)int.Parse(array2[i]);
}
}
}
catch (FormatException)
{
}
this.properties["ProductVersion"] = value;
this.product_version = (array[0] << 48) | (array[1] << 32) | ((array[2] << 16) + array[3]);
}
}
// Token: 0x17000625 RID: 1573
// (get) Token: 0x060020C6 RID: 8390 RVA: 0x000781DC File Offset: 0x000763DC
// (set) Token: 0x060020C7 RID: 8391 RVA: 0x000781F4 File Offset: 0x000763F4
public virtual string InternalName
{
get
{
return (string)this.properties["InternalName"];
}
set
{
this.properties["InternalName"] = ((!(value == string.Empty)) ? value : " ");
}
}
// Token: 0x17000626 RID: 1574
// (get) Token: 0x060020C8 RID: 8392 RVA: 0x00078224 File Offset: 0x00076424
// (set) Token: 0x060020C9 RID: 8393 RVA: 0x0007823C File Offset: 0x0007643C
public virtual string FileDescription
{
get
{
return (string)this.properties["FileDescription"];
}
set
{
this.properties["FileDescription"] = ((!(value == string.Empty)) ? value : " ");
}
}
// Token: 0x17000627 RID: 1575
// (get) Token: 0x060020CA RID: 8394 RVA: 0x0007826C File Offset: 0x0007646C
// (set) Token: 0x060020CB RID: 8395 RVA: 0x00078274 File Offset: 0x00076474
public virtual int FileLanguage
{
get
{
return this.file_lang;
}
set
{
this.file_lang = value;
}
}
// Token: 0x17000628 RID: 1576
// (get) Token: 0x060020CC RID: 8396 RVA: 0x00078280 File Offset: 0x00076480
// (set) Token: 0x060020CD RID: 8397 RVA: 0x00078298 File Offset: 0x00076498
public virtual string FileVersion
{
get
{
return (string)this.properties["FileVersion"];
}
set
{
if (value == null || value.Length == 0)
{
value = " ";
}
long[] array = new long[4];
string[] array2 = value.Split(new char[] { '.' });
try
{
for (int i = 0; i < array2.Length; i++)
{
if (i < array.Length)
{
array[i] = (long)int.Parse(array2[i]);
}
}
}
catch (FormatException)
{
}
this.properties["FileVersion"] = value;
this.file_version = (array[0] << 48) | (array[1] << 32) | ((array[2] << 16) + array[3]);
}
}
// Token: 0x060020CE RID: 8398 RVA: 0x00078358 File Offset: 0x00076558
private void emit_padding(BinaryWriter w)
{
Stream baseStream = w.BaseStream;
if (baseStream.Position % 4L != 0L)
{
w.Write(0);
}
}
// Token: 0x060020CF RID: 8399 RVA: 0x00078384 File Offset: 0x00076584
private void patch_length(BinaryWriter w, long len_pos)
{
Stream baseStream = w.BaseStream;
long position = baseStream.Position;
baseStream.Position = len_pos;
w.Write((short)(position - len_pos));
baseStream.Position = position;
}
// Token: 0x060020D0 RID: 8400 RVA: 0x000783B8 File Offset: 0x000765B8
public override void WriteTo(Stream ms)
{
using (BinaryWriter binaryWriter = new BinaryWriter(ms, Encoding.Unicode))
{
binaryWriter.Write(0);
binaryWriter.Write(52);
binaryWriter.Write(0);
binaryWriter.Write("VS_VERSION_INFO".ToCharArray());
binaryWriter.Write(0);
this.emit_padding(binaryWriter);
binaryWriter.Write((uint)this.signature);
binaryWriter.Write(this.struct_version);
binaryWriter.Write((int)(this.file_version >> 32));
binaryWriter.Write((int)(this.file_version & (long)((ulong)(-1))));
binaryWriter.Write((int)(this.product_version >> 32));
binaryWriter.Write((int)(this.product_version & (long)((ulong)(-1))));
binaryWriter.Write(this.file_flags_mask);
binaryWriter.Write(this.file_flags);
binaryWriter.Write(this.file_os);
binaryWriter.Write(this.file_type);
binaryWriter.Write(this.file_subtype);
binaryWriter.Write((int)(this.file_date >> 32));
binaryWriter.Write((int)(this.file_date & (long)((ulong)(-1))));
this.emit_padding(binaryWriter);
long position = ms.Position;
binaryWriter.Write(0);
binaryWriter.Write(0);
binaryWriter.Write(1);
binaryWriter.Write("VarFileInfo".ToCharArray());
binaryWriter.Write(0);
if (ms.Position % 4L != 0L)
{
binaryWriter.Write(0);
}
long position2 = ms.Position;
binaryWriter.Write(0);
binaryWriter.Write(4);
binaryWriter.Write(0);
binaryWriter.Write("Translation".ToCharArray());
binaryWriter.Write(0);
if (ms.Position % 4L != 0L)
{
binaryWriter.Write(0);
}
binaryWriter.Write((short)this.file_lang);
binaryWriter.Write((short)this.file_codepage);
this.patch_length(binaryWriter, position2);
this.patch_length(binaryWriter, position);
long position3 = ms.Position;
binaryWriter.Write(0);
binaryWriter.Write(0);
binaryWriter.Write(1);
binaryWriter.Write("StringFileInfo".ToCharArray());
this.emit_padding(binaryWriter);
long position4 = ms.Position;
binaryWriter.Write(0);
binaryWriter.Write(0);
binaryWriter.Write(1);
binaryWriter.Write(string.Format("{0:x4}{1:x4}", this.file_lang, this.file_codepage).ToCharArray());
this.emit_padding(binaryWriter);
foreach (object obj in this.properties.Keys)
{
string text = (string)obj;
string text2 = (string)this.properties[text];
long position5 = ms.Position;
binaryWriter.Write(0);
binaryWriter.Write((short)(text2.ToCharArray().Length + 1));
binaryWriter.Write(1);
binaryWriter.Write(text.ToCharArray());
binaryWriter.Write(0);
this.emit_padding(binaryWriter);
binaryWriter.Write(text2.ToCharArray());
binaryWriter.Write(0);
this.emit_padding(binaryWriter);
this.patch_length(binaryWriter, position5);
}
this.patch_length(binaryWriter, position4);
this.patch_length(binaryWriter, position3);
this.patch_length(binaryWriter, 0L);
}
}
// Token: 0x04000BA8 RID: 2984
public string[] WellKnownProperties = new string[] { "Comments", "CompanyName", "FileVersion", "InternalName", "LegalTrademarks", "OriginalFilename", "ProductName", "ProductVersion" };
// Token: 0x04000BA9 RID: 2985
private long signature;
// Token: 0x04000BAA RID: 2986
private int struct_version;
// Token: 0x04000BAB RID: 2987
private long file_version;
// Token: 0x04000BAC RID: 2988
private long product_version;
// Token: 0x04000BAD RID: 2989
private int file_flags_mask;
// Token: 0x04000BAE RID: 2990
private int file_flags;
// Token: 0x04000BAF RID: 2991
private int file_os;
// Token: 0x04000BB0 RID: 2992
private int file_type;
// Token: 0x04000BB1 RID: 2993
private int file_subtype;
// Token: 0x04000BB2 RID: 2994
private long file_date;
// Token: 0x04000BB3 RID: 2995
private int file_lang;
// Token: 0x04000BB4 RID: 2996
private int file_codepage;
// Token: 0x04000BB5 RID: 2997
private Hashtable properties;
}
}