Added InstallShield plugin for Universal Editor
This commit is contained in:
parent
8ce100c695
commit
955dec306f
@ -0,0 +1,161 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.IO;
|
||||
using UniversalEditor.ObjectModels.FileSystem;
|
||||
|
||||
namespace UniversalEditor.DataFormats.FileSystem.InstallShield.Cabinet
|
||||
{
|
||||
public class CABDataFormat : DataFormat
|
||||
{
|
||||
private static DataFormatReference _dfr = null;
|
||||
public override DataFormatReference MakeReference()
|
||||
{
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = base.MakeReference();
|
||||
_dfr.Capabilities.Add(typeof(FileSystemObjectModel), DataFormatCapabilities.All);
|
||||
_dfr.Filters.Add("InstallShield cabinet", new byte?[][] { new byte?[] { (byte)'I', (byte)'S', (byte)'c', (byte)'(' } }, new string[] { "*.cab" });
|
||||
}
|
||||
return _dfr;
|
||||
}
|
||||
|
||||
private const int MAX_FILE_GROUP_COUNT = 71;
|
||||
private const int MAX_COMPONENT_COUNT = 71;
|
||||
|
||||
private const int OFFSET_COUNT = 0x47;
|
||||
|
||||
private const int CAB_SIGNATURE = 0x28635349;
|
||||
private const int MSCF_SIGNATURE = 0x4643534d;
|
||||
|
||||
private const int COMMON_HEADER_SIZE = 20;
|
||||
private const int VOLUME_HEADER_SIZE_V5 = 40;
|
||||
private const int VOLUME_HEADER_SIZE_V6 = 64;
|
||||
|
||||
protected override void LoadInternal(ref ObjectModel objectModel)
|
||||
{
|
||||
FileSystemObjectModel fsom = (objectModel as FileSystemObjectModel);
|
||||
if (fsom == null) return;
|
||||
|
||||
Reader br = base.Accessor.Reader;
|
||||
br.Accessor.Seek(0, SeekOrigin.Begin);
|
||||
br.Endianness = Endianness.LittleEndian;
|
||||
|
||||
string ISc_ = br.ReadFixedLengthString(4);
|
||||
if (ISc_ != "ISc(") throw new InvalidDataFormatException();
|
||||
|
||||
uint version = br.ReadUInt32();
|
||||
int majorVersion = 0;
|
||||
if (version >> 24 == 1)
|
||||
{
|
||||
majorVersion = (int)((version >> 12) & 0xf);
|
||||
}
|
||||
else if (version >> 24 == 2 || version >> 24 == 4)
|
||||
{
|
||||
majorVersion = (int)(version & 0xffff);
|
||||
if (majorVersion != 0)
|
||||
{
|
||||
majorVersion = (int)(majorVersion / 100);
|
||||
}
|
||||
}
|
||||
|
||||
uint volumeInfo = br.ReadUInt32();
|
||||
uint cabinetDescriptorOffset = br.ReadUInt32();
|
||||
uint cabinetDescriptorSize = br.ReadUInt32();
|
||||
|
||||
br.Accessor.Seek(cabinetDescriptorOffset, SeekOrigin.Begin);
|
||||
|
||||
|
||||
int unknown1 = br.ReadInt32();
|
||||
int unknown2 = br.ReadInt32();
|
||||
int unknown3 = br.ReadInt32();
|
||||
|
||||
uint fileTableOffset = br.ReadUInt32();
|
||||
uint unknown4 = br.ReadUInt32();
|
||||
uint fileTableSize = br.ReadUInt32();
|
||||
uint fileTableSize2 = br.ReadUInt32();
|
||||
uint directoryCount = br.ReadUInt32();
|
||||
uint unknown5 = br.ReadUInt32();
|
||||
uint unknown6 = br.ReadUInt32();
|
||||
uint fileCount = br.ReadUInt32();
|
||||
uint fileTableOffset2 = br.ReadUInt32();
|
||||
|
||||
if (br.Accessor.Position != 0x30) throw new InvalidDataFormatException();
|
||||
if (fileTableSize != fileTableSize2) throw new InvalidDataFormatException("File table sizes do not match");
|
||||
|
||||
uint unknown7 = br.ReadUInt32();
|
||||
uint unknown8 = br.ReadUInt32();
|
||||
uint unknown9 = br.ReadUInt32();
|
||||
ushort unknown10 = br.ReadUInt16();
|
||||
|
||||
uint[] fileGroupOffsets = new uint[MAX_FILE_GROUP_COUNT];
|
||||
for (int i = 0; i < MAX_FILE_GROUP_COUNT; i++)
|
||||
{
|
||||
fileGroupOffsets[i] = br.ReadUInt32();
|
||||
}
|
||||
uint[] componentOffsets = new uint[MAX_COMPONENT_COUNT];
|
||||
for (int i = 0; i < MAX_COMPONENT_COUNT; i++)
|
||||
{
|
||||
componentOffsets[i] = br.ReadUInt32();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected override void SaveInternal(ObjectModel objectModel)
|
||||
{
|
||||
FileSystemObjectModel fsom = (objectModel as FileSystemObjectModel);
|
||||
if (fsom == null) return;
|
||||
|
||||
Writer bw = base.Accessor.Writer;
|
||||
bw.WriteFixedLengthString("ISc(");
|
||||
|
||||
int unknown1 = 0;
|
||||
int unknown2 = 0;
|
||||
uint fileTableOffset = 0;
|
||||
uint unknown3 = 0;
|
||||
uint fileTableSize = 0;
|
||||
uint fileTableSize2 = 0;
|
||||
uint directoryCount = 0;
|
||||
uint unknown4 = 0;
|
||||
uint unknown5 = 0;
|
||||
uint fileCount = 0;
|
||||
uint fileTableOffset2 = 0;
|
||||
uint unknown6 = 0;
|
||||
uint unknown7 = 0;
|
||||
uint unknown8 = 0;
|
||||
ushort unknown9 = 0;
|
||||
|
||||
bw.WriteInt32(unknown1);
|
||||
bw.WriteInt32(unknown2);
|
||||
bw.WriteUInt32(fileTableOffset);
|
||||
bw.WriteUInt32(unknown3);
|
||||
bw.WriteUInt32(fileTableSize);
|
||||
bw.WriteUInt32(fileTableSize2);
|
||||
bw.WriteUInt32(directoryCount);
|
||||
bw.WriteUInt32(unknown4);
|
||||
bw.WriteUInt32(unknown5);
|
||||
bw.WriteUInt32(fileCount);
|
||||
bw.WriteUInt32(fileTableOffset2);
|
||||
bw.WriteUInt32(unknown6);
|
||||
bw.WriteUInt32(unknown7);
|
||||
bw.WriteUInt32(unknown8);
|
||||
bw.WriteUInt16(unknown9);
|
||||
|
||||
uint[] fileGroupOffsets = new uint[MAX_FILE_GROUP_COUNT];
|
||||
uint[] componentOffsets = new uint[MAX_COMPONENT_COUNT];
|
||||
|
||||
for (int i = 0; i < MAX_FILE_GROUP_COUNT; i++)
|
||||
{
|
||||
bw.WriteUInt32(fileGroupOffsets[i]);
|
||||
}
|
||||
for (int i = 0; i < MAX_COMPONENT_COUNT; i++)
|
||||
{
|
||||
bw.WriteUInt32(componentOffsets[i]);
|
||||
}
|
||||
bw.Flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.ObjectModels.FileSystem;
|
||||
|
||||
namespace UniversalEditor.DataFormats.FileSystem.InstallShield.Cabinet
|
||||
{
|
||||
public class HDRDataFormat : DataFormat
|
||||
{
|
||||
private static DataFormatReference _dfr = null;
|
||||
public override DataFormatReference MakeReference()
|
||||
{
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = base.MakeReference();
|
||||
_dfr.Capabilities.Add(typeof(FileSystemObjectModel), DataFormatCapabilities.All);
|
||||
_dfr.Filters.Add("InstallShield cabinet header", new byte?[][] { new byte?[] { (byte)'I', (byte)'S', (byte)'c', (byte)'(' } }, new string[] { "*.hdr" });
|
||||
}
|
||||
return _dfr;
|
||||
}
|
||||
|
||||
protected override void LoadInternal(ref ObjectModel objectModel)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void SaveInternal(ObjectModel objectModel)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: Mike Becker
|
||||
* Date: 5/12/2013
|
||||
* Time: 1:35 PM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using UniversalEditor.IO;
|
||||
using UniversalEditor.ObjectModels.FileSystem;
|
||||
|
||||
namespace UniversalEditor.DataFormats.FileSystem.InstallShield.PKG
|
||||
{
|
||||
/// <summary>
|
||||
/// Description of PKGDataFormat.
|
||||
/// </summary>
|
||||
public class PKGDataFormat : DataFormat
|
||||
{
|
||||
private static DataFormatReference _dfr = null;
|
||||
public override DataFormatReference MakeReference()
|
||||
{
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = base.MakeReference();
|
||||
_dfr.Capabilities.Add(typeof(FileSystemObjectModel), DataFormatCapabilities.All);
|
||||
_dfr.Filters.Add("InstallShield installation package", new byte?[][] { new byte?[] { 0x4A, 0xA3 } }, new string[] { "*.pkg" });
|
||||
}
|
||||
return _dfr;
|
||||
}
|
||||
|
||||
protected override void LoadInternal(ref ObjectModel objectModel)
|
||||
{
|
||||
FileSystemObjectModel fsom = (objectModel as FileSystemObjectModel);
|
||||
if (fsom == null) return;
|
||||
|
||||
Reader br = base.Accessor.Reader;
|
||||
ushort signature = br.ReadUInt16();
|
||||
if (signature != 0xA34A) throw new InvalidDataFormatException("File does not begin with 0xA34A");
|
||||
|
||||
ushort unknown1a = br.ReadUInt16();
|
||||
ushort unknown1b = br.ReadUInt16();
|
||||
uint unknown2 = br.ReadUInt32();
|
||||
uint unknown3 = br.ReadUInt32();
|
||||
uint unknown4 = br.ReadUInt32();
|
||||
ushort unknown5 = br.ReadUInt16();
|
||||
ushort unknown6 = br.ReadUInt16();
|
||||
ushort unknown7 = br.ReadUInt16();
|
||||
ushort fileCount = br.ReadUInt16();
|
||||
for (ushort i = 0; i < fileCount; i++)
|
||||
{
|
||||
string FileName = br.ReadLengthPrefixedString();
|
||||
byte unknown8 = br.ReadByte();
|
||||
uint unknown9 = br.ReadUInt32();
|
||||
ushort unknown10 = br.ReadUInt16();
|
||||
|
||||
File file = new File();
|
||||
file.Name = FileName;
|
||||
file.Size = unknown10;
|
||||
file.DataRequest += new DataRequestEventHandler(file_DataRequest);
|
||||
fsom.Files.Add(file);
|
||||
|
||||
if (file.Name == "OP.Z")
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void file_DataRequest(object sender, DataRequestEventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void SaveInternal(ObjectModel objectModel)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,160 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.ObjectModels.FileSystem;
|
||||
|
||||
namespace UniversalEditor.DataFormats.InstallShield.Cabinet
|
||||
{
|
||||
public class CABDataFormat : DataFormat
|
||||
{
|
||||
private static DataFormatReference _dfr = null;
|
||||
public override DataFormatReference MakeReference()
|
||||
{
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = base.MakeReference();
|
||||
_dfr.Capabilities.Add(typeof(FileSystemObjectModel), DataFormatCapabilities.All);
|
||||
_dfr.Filters.Add("InstallShield cabinet", new byte?[][] { new byte?[] { (byte)'I', (byte)'S', (byte)'c', (byte)'(' } }, new string[] { "*.cab" });
|
||||
}
|
||||
return _dfr;
|
||||
}
|
||||
|
||||
private const int MAX_FILE_GROUP_COUNT = 71;
|
||||
private const int MAX_COMPONENT_COUNT = 71;
|
||||
|
||||
private const int OFFSET_COUNT = 0x47;
|
||||
|
||||
private const int CAB_SIGNATURE = 0x28635349;
|
||||
private const int MSCF_SIGNATURE = 0x4643534d;
|
||||
|
||||
private const int COMMON_HEADER_SIZE = 20;
|
||||
private const int VOLUME_HEADER_SIZE_V5 = 40;
|
||||
private const int VOLUME_HEADER_SIZE_V6 = 64;
|
||||
|
||||
protected override void LoadInternal(ref ObjectModel objectModel)
|
||||
{
|
||||
FileSystemObjectModel fsom = (objectModel as FileSystemObjectModel);
|
||||
if (fsom == null) return;
|
||||
|
||||
IO.BinaryReader br = base.Stream.BinaryReader;
|
||||
br.BaseStream.Position = 0;
|
||||
br.Endianness = IO.Endianness.LittleEndian;
|
||||
|
||||
string ISc_ = br.ReadFixedLengthString(4);
|
||||
if (ISc_ != "ISc(") throw new InvalidDataFormatException();
|
||||
|
||||
uint version = br.ReadUInt32();
|
||||
int majorVersion = 0;
|
||||
if (version >> 24 == 1)
|
||||
{
|
||||
majorVersion = (int)((version >> 12) & 0xf);
|
||||
}
|
||||
else if (version >> 24 == 2 || version >> 24 == 4)
|
||||
{
|
||||
majorVersion = (int)(version & 0xffff);
|
||||
if (majorVersion != 0)
|
||||
{
|
||||
majorVersion = (int)(majorVersion / 100);
|
||||
}
|
||||
}
|
||||
|
||||
uint volumeInfo = br.ReadUInt32();
|
||||
uint cabinetDescriptorOffset = br.ReadUInt32();
|
||||
uint cabinetDescriptorSize = br.ReadUInt32();
|
||||
|
||||
br.BaseStream.Seek(cabinetDescriptorOffset, System.IO.SeekOrigin.Begin);
|
||||
|
||||
|
||||
int unknown1 = br.ReadInt32();
|
||||
int unknown2 = br.ReadInt32();
|
||||
int unknown3 = br.ReadInt32();
|
||||
|
||||
uint fileTableOffset = br.ReadUInt32();
|
||||
uint unknown4 = br.ReadUInt32();
|
||||
uint fileTableSize = br.ReadUInt32();
|
||||
uint fileTableSize2 = br.ReadUInt32();
|
||||
uint directoryCount = br.ReadUInt32();
|
||||
uint unknown5 = br.ReadUInt32();
|
||||
uint unknown6 = br.ReadUInt32();
|
||||
uint fileCount = br.ReadUInt32();
|
||||
uint fileTableOffset2 = br.ReadUInt32();
|
||||
|
||||
if (br.BaseStream.Position != 0x30) throw new InvalidDataFormatException();
|
||||
if (fileTableSize != fileTableSize2) throw new InvalidDataFormatException("File table sizes do not match");
|
||||
|
||||
uint unknown7 = br.ReadUInt32();
|
||||
uint unknown8 = br.ReadUInt32();
|
||||
uint unknown9 = br.ReadUInt32();
|
||||
ushort unknown10 = br.ReadUInt16();
|
||||
|
||||
uint[] fileGroupOffsets = new uint[MAX_FILE_GROUP_COUNT];
|
||||
for (int i = 0; i < MAX_FILE_GROUP_COUNT; i++)
|
||||
{
|
||||
fileGroupOffsets[i] = br.ReadUInt32();
|
||||
}
|
||||
uint[] componentOffsets = new uint[MAX_COMPONENT_COUNT];
|
||||
for (int i = 0; i < MAX_COMPONENT_COUNT; i++)
|
||||
{
|
||||
componentOffsets[i] = br.ReadUInt32();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected override void SaveInternal(ObjectModel objectModel)
|
||||
{
|
||||
FileSystemObjectModel fsom = (objectModel as FileSystemObjectModel);
|
||||
if (fsom == null) return;
|
||||
|
||||
IO.BinaryWriter bw = base.Stream.BinaryWriter;
|
||||
bw.WriteFixedLengthString("ISc(");
|
||||
|
||||
int unknown1 = 0;
|
||||
int unknown2 = 0;
|
||||
uint fileTableOffset = 0;
|
||||
uint unknown3 = 0;
|
||||
uint fileTableSize = 0;
|
||||
uint fileTableSize2 = 0;
|
||||
uint directoryCount = 0;
|
||||
uint unknown4 = 0;
|
||||
uint unknown5 = 0;
|
||||
uint fileCount = 0;
|
||||
uint fileTableOffset2 = 0;
|
||||
uint unknown6 = 0;
|
||||
uint unknown7 = 0;
|
||||
uint unknown8 = 0;
|
||||
ushort unknown9 = 0;
|
||||
|
||||
bw.Write(unknown1);
|
||||
bw.Write(unknown2);
|
||||
bw.Write(fileTableOffset);
|
||||
bw.Write(unknown3 );
|
||||
bw.Write(fileTableSize );
|
||||
bw.Write(fileTableSize2 );
|
||||
bw.Write(directoryCount );
|
||||
bw.Write(unknown4 );
|
||||
bw.Write(unknown5 );
|
||||
bw.Write(fileCount );
|
||||
bw.Write(fileTableOffset2);
|
||||
bw.Write(unknown6);
|
||||
bw.Write(unknown7);
|
||||
bw.Write(unknown8);
|
||||
bw.Write(unknown9);
|
||||
|
||||
uint[] fileGroupOffsets = new uint[MAX_FILE_GROUP_COUNT];
|
||||
uint[] componentOffsets = new uint[MAX_COMPONENT_COUNT];
|
||||
|
||||
for (int i = 0; i < MAX_FILE_GROUP_COUNT; i++)
|
||||
{
|
||||
bw.Write(fileGroupOffsets[i]);
|
||||
}
|
||||
for (int i = 0; i < MAX_COMPONENT_COUNT; i++)
|
||||
{
|
||||
bw.Write(componentOffsets[i]);
|
||||
}
|
||||
bw.Flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.ObjectModels.FileSystem;
|
||||
|
||||
namespace UniversalEditor.DataFormats.InstallShield.Cabinet
|
||||
{
|
||||
public class HDRDataFormat : DataFormat
|
||||
{
|
||||
private static DataFormatReference _dfr = null;
|
||||
public override DataFormatReference MakeReference()
|
||||
{
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = base.MakeReference();
|
||||
_dfr.Capabilities.Add(typeof(FileSystemObjectModel), DataFormatCapabilities.All);
|
||||
_dfr.Filters.Add("InstallShield cabinet header", new byte?[][] { new byte?[] { (byte)'I', (byte)'S', (byte)'c', (byte)'(' } }, new string[] { "*.hdr" });
|
||||
}
|
||||
return _dfr;
|
||||
}
|
||||
|
||||
protected override void LoadInternal(ref ObjectModel objectModel)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void SaveInternal(ObjectModel objectModel)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,112 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.IO;
|
||||
using UniversalEditor.ObjectModels.InstallShield;
|
||||
|
||||
namespace UniversalEditor.DataFormats.InstallShield.Script
|
||||
{
|
||||
public class InstallShieldCompiledScriptDataFormat : DataFormat
|
||||
{
|
||||
private static DataFormatReference _dfr = null;
|
||||
public override DataFormatReference MakeReference()
|
||||
{
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = base.MakeReference();
|
||||
_dfr.Filters.Add("InstallShield compiled script", new byte?[][] { new byte?[] { null, null, null, null, null, null, null, null, null, null, null, null, 48, 13, 10, (byte)'S', (byte)'t', (byte)'i', (byte)'r', (byte)'l', (byte)'i', (byte)'n', (byte)'g', (byte)' ', (byte)'T', (byte)'e', (byte)'c', (byte)'h', (byte)'n', (byte)'o', (byte)'l', (byte)'o', (byte)'g', (byte)'i', (byte)'e', (byte)'s', (byte)',', (byte)' ', (byte)'I', (byte)'n', (byte)'c', (byte)'.', (byte)' ', (byte)' ', (byte)'(', (byte)'c', (byte)')', (byte)' ', (byte)'1', (byte)'9', (byte)'9', (byte)'0', (byte)'-', (byte)'1', (byte)'9', (byte)'9', (byte)'4' } }, new string[] { "*.ins" });
|
||||
_dfr.Capabilities.Add(typeof(InstallShieldScriptObjectModel), DataFormatCapabilities.All);
|
||||
}
|
||||
return _dfr;
|
||||
}
|
||||
|
||||
protected override void LoadInternal(ref ObjectModel objectModel)
|
||||
{
|
||||
Reader br = base.Accessor.Reader;
|
||||
short u0 = br.ReadInt16();
|
||||
short u1 = br.ReadInt16();
|
||||
short u2 = br.ReadInt16();
|
||||
short u3 = br.ReadInt16();
|
||||
short u4 = br.ReadInt16();
|
||||
short u5 = br.ReadInt16();
|
||||
string comment = br.ReadLengthPrefixedString();
|
||||
|
||||
short u6 = br.ReadInt16();
|
||||
short u7 = br.ReadInt16();
|
||||
|
||||
byte[] unknowns = br.ReadBytes(102);
|
||||
|
||||
List<string> variableNames1 = new List<string>();
|
||||
|
||||
short variableCount = br.ReadInt16();
|
||||
for (short i = 0; i < variableCount; i++)
|
||||
{
|
||||
short variableIndex = br.ReadInt16();
|
||||
|
||||
short variableNameLength = br.ReadInt16();
|
||||
string variableName = br.ReadFixedLengthString(variableNameLength);
|
||||
variableNames1.Add(variableName);
|
||||
}
|
||||
|
||||
short u8 = br.ReadInt16();
|
||||
|
||||
List<string> variableNames2 = new List<string>();
|
||||
|
||||
short u9 = br.ReadInt16();
|
||||
for (short i = 0; i < u9; i++)
|
||||
{
|
||||
short variableIndex = br.ReadInt16();
|
||||
|
||||
short variableNameLength = br.ReadInt16();
|
||||
string variableName = br.ReadFixedLengthString(variableNameLength);
|
||||
variableNames2.Add(variableName);
|
||||
}
|
||||
|
||||
byte[] unknown_3 = br.ReadBytes(170);
|
||||
short u_ct0 = br.ReadInt16();
|
||||
for (short i = 0; i < u_ct0; i++)
|
||||
{
|
||||
short index = br.ReadInt16();
|
||||
|
||||
short nameLength = br.ReadInt16();
|
||||
string name = br.ReadFixedLengthString(nameLength);
|
||||
|
||||
short valueLength = br.ReadInt16();
|
||||
string value = br.ReadFixedLengthString(valueLength);
|
||||
}
|
||||
|
||||
short u12 = br.ReadInt16();
|
||||
short u13 = br.ReadInt16();
|
||||
short u14 = br.ReadInt16();
|
||||
short u15 = br.ReadInt16();
|
||||
short u16 = br.ReadInt16();
|
||||
|
||||
short u_ct1 = br.ReadInt16();
|
||||
for (short i = 0; i < u_ct1; i++)
|
||||
{
|
||||
short index = br.ReadInt16();
|
||||
|
||||
short nameLength = br.ReadInt16();
|
||||
string name = br.ReadFixedLengthString(nameLength);
|
||||
|
||||
short valueLength = br.ReadInt16();
|
||||
string value = br.ReadFixedLengthString(valueLength);
|
||||
}
|
||||
|
||||
byte[] unknown1000 = br.ReadBytes(80);
|
||||
|
||||
while (!br.EndOfStream)
|
||||
{
|
||||
byte j0 = br.ReadByte();
|
||||
if (j0 == 0) break;
|
||||
short len = br.ReadInt16();
|
||||
string val = br.ReadFixedLengthString(len);
|
||||
}
|
||||
}
|
||||
protected override void SaveInternal(ObjectModel objectModel)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,67 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.IO;
|
||||
using UniversalEditor.ObjectModels.InstallShield;
|
||||
|
||||
namespace UniversalEditor.DataFormats.InstallShield.Script
|
||||
{
|
||||
public class InstallShieldScriptV2DataFormat : DataFormat
|
||||
{
|
||||
#region DataFormat members
|
||||
private static DataFormatReference _dfr = null;
|
||||
public override DataFormatReference MakeReference()
|
||||
{
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = base.MakeReference();
|
||||
_dfr.Capabilities.Add(typeof(InstallShieldScriptObjectModel), DataFormatCapabilities.All);
|
||||
_dfr.Filters.Add("InstallShield script (INX)", new byte?[][] { new byte?[] { (byte)'a', (byte)'L', (byte)'u', (byte)'Z' } }, new string[] { "*.inx" });
|
||||
}
|
||||
return _dfr;
|
||||
}
|
||||
protected override void LoadInternal(ref ObjectModel objectModel)
|
||||
{
|
||||
Reader br = base.Accessor.Reader;
|
||||
|
||||
string aLuZ = br.ReadFixedLengthString(4);
|
||||
if (aLuZ != "aLuZ") throw new InvalidDataFormatException("File does not begin with \"aLuZ\"");
|
||||
|
||||
short u0 = br.ReadInt16();
|
||||
mvarComment = br.ReadFixedLengthString(98);
|
||||
if (mvarComment.Contains('\0')) mvarComment = mvarComment.Substring(0, mvarComment.IndexOf('\0'));
|
||||
|
||||
int u1 = br.ReadInt32();
|
||||
int u2 = br.ReadInt32();
|
||||
int u3 = br.ReadInt32();
|
||||
int u4 = br.ReadInt32();
|
||||
int u5 = br.ReadInt32();
|
||||
int u6 = br.ReadInt32();
|
||||
|
||||
short w0 = br.ReadInt16();
|
||||
|
||||
}
|
||||
protected override void SaveInternal(ObjectModel objectModel)
|
||||
{
|
||||
Writer bw = base.Accessor.Writer;
|
||||
bw.WriteFixedLengthString("aLuZ");
|
||||
bw.WriteInt16(0);
|
||||
bw.WriteFixedLengthString(mvarComment, 98);
|
||||
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
public const string COMMENT_V1 = "Copyright (c) 1990-1999 Stirling Technologies, Ltd. All Rights Reserved.";
|
||||
public const string COMMENT_V2 = "Copyright (c) 1990-2002 InstallShield Software Corp. All Rights Reserved.";
|
||||
|
||||
private string mvarComment = COMMENT_V1;
|
||||
public string Comment
|
||||
{
|
||||
get { return mvarComment; }
|
||||
set { mvarComment = value; }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.InstallShield
|
||||
{
|
||||
public class InstallShieldScriptObjectModel : ObjectModel
|
||||
{
|
||||
public override void Clear()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void CopyTo(ObjectModel where)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Universal Editor plugin for InstallShield solutions")]
|
||||
[assembly: AssemblyDescription("Provides data formats and object models to manipulate InstallShield installation data")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Mike Becker's Software")]
|
||||
[assembly: AssemblyProduct("Universal Editor Plugin Pack")]
|
||||
[assembly: AssemblyCopyright("Copyright ©2012 Mike Becker's Software")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("cf18e3c9-07f5-49bc-9f9a-55658380368c")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{04674541-23C2-4308-A9DF-DBC43AE99814}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>UniversalEditor</RootNamespace>
|
||||
<AssemblyName>UniversalEditor.Plugins.InstallShield</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\..\Output\Debug\Plugins\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\..\Output\Release\Plugins\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="DataFormats\FileSystem\InstallShield\PKG\PKGDataFormat.cs" />
|
||||
<Compile Include="DataFormats\FileSystem\InstallShield\Cabinet\CABDataFormat.cs" />
|
||||
<Compile Include="DataFormats\FileSystem\InstallShield\Cabinet\HDRDataFormat.cs" />
|
||||
<Compile Include="DataFormats\InstallShield\Script\InstallShieldCompiledScriptDataFormat.cs" />
|
||||
<Compile Include="DataFormats\InstallShield\Script\InstallShieldScriptV2DataFormat.cs" />
|
||||
<Compile Include="ObjectModels\InstallShield\InstallShieldScriptObjectModel.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Libraries\UniversalEditor.Core\UniversalEditor.Core.csproj">
|
||||
<Project>{A92D520B-FFA3-4464-8CF6-474D18959E03}</Project>
|
||||
<Name>UniversalEditor.Core</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\UniversalEditor.Essential\UniversalEditor.Essential.csproj">
|
||||
<Project>{30467e5c-05bc-4856-aadc-13906ef4cadd}</Project>
|
||||
<Name>UniversalEditor.Essential</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@ -113,6 +113,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.Exe
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.Microsoft", "Plugins\UniversalEditor.Plugins.Microsoft\UniversalEditor.Plugins.Microsoft.csproj", "{4698BC3F-EC29-42EB-9AED-3D8F9983A108}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.InstallShield", "Plugins\UniversalEditor.Plugins.InstallShield\UniversalEditor.Plugins.InstallShield.csproj", "{04674541-23C2-4308-A9DF-DBC43AE99814}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@ -299,6 +301,10 @@ Global
|
||||
{4698BC3F-EC29-42EB-9AED-3D8F9983A108}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4698BC3F-EC29-42EB-9AED-3D8F9983A108}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4698BC3F-EC29-42EB-9AED-3D8F9983A108}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{04674541-23C2-4308-A9DF-DBC43AE99814}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{04674541-23C2-4308-A9DF-DBC43AE99814}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{04674541-23C2-4308-A9DF-DBC43AE99814}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{04674541-23C2-4308-A9DF-DBC43AE99814}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@ -337,6 +343,7 @@ Global
|
||||
{E0B0223C-3E44-4D2A-9FED-F1A319D84D39} = {71CFF024-26F7-4626-A526-B435FDF8D64E}
|
||||
{791A36F8-5D96-452B-89D2-78BA74596A1E} = {71CFF024-26F7-4626-A526-B435FDF8D64E}
|
||||
{4698BC3F-EC29-42EB-9AED-3D8F9983A108} = {71CFF024-26F7-4626-A526-B435FDF8D64E}
|
||||
{04674541-23C2-4308-A9DF-DBC43AE99814} = {71CFF024-26F7-4626-A526-B435FDF8D64E}
|
||||
{FE016EA3-DC31-4A92-8B0A-8C746EC117E1} = {46041F27-7C1C-4209-B72B-251EDB5D4C61}
|
||||
{ED627DF7-3E78-4428-AB31-810BA1586E62} = {46041F27-7C1C-4209-B72B-251EDB5D4C61}
|
||||
{C1F34183-7A2F-41A6-9958-F6F329099654} = {A846CA33-9CAA-4237-B14F-8721DBA89442}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user