Improvements to Rebel Software Installer UI and implemented LoadInternal - incomplete compression

This commit is contained in:
Michael Becker 2015-04-20 15:24:41 -04:00
parent 51035f15bb
commit 75fa8fe5ae
18 changed files with 991 additions and 33 deletions

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<UniversalEditor Version="4.0">
<Associations>
<Association>
<Filters>
<Filter Title="Rebel Software Installation Package">
<FileNameFilters>
<FileNameFilter>*.zap</FileNameFilter>
</FileNameFilters>
</Filter>
</Filters>
<ObjectModels>
<ObjectModel TypeName="UniversalEditor.ObjectModels.FileSystem.FileSystemObjectModel" />
</ObjectModels>
<DataFormats>
<DataFormat TypeName="UniversalEditor.DataFormats.RebelSoftware.InstallationPackage.ZAPDataFormat" />
</DataFormats>
</Association>
</Associations>
</UniversalEditor>

View File

@ -41,6 +41,7 @@
<Content Include="Associations\Markup.xml" />
<Content Include="Associations\DataLink.xml" />
<Content Include="Associations\PropertyList.xml" />
<Content Include="Associations\RebelSoftware\InstallationPackage.xml" />
<Content Include="Associations\RebelSoftware\InstallationScript.xml" />
<Content Include="Associations\SecurityCertificate.xml" />
<Content Include="Associations\Shortcut.xml" />

View File

@ -28,24 +28,394 @@
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Product");
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Dialogs");
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("Shortcuts");
System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem("Welcome");
System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem("License");
System.Windows.Forms.ListViewItem listViewItem3 = new System.Windows.Forms.ListViewItem("Destination");
System.Windows.Forms.ListViewItem listViewItem4 = new System.Windows.Forms.ListViewItem("Summary");
System.Windows.Forms.ListViewItem listViewItem5 = new System.Windows.Forms.ListViewItem("Progress");
System.Windows.Forms.ListViewItem listViewItem6 = new System.Windows.Forms.ListViewItem("Finish");
this.tvExplorer = new System.Windows.Forms.TreeView();
this.scMain = new System.Windows.Forms.SplitContainer();
this.pnlProduct = new System.Windows.Forms.Panel();
this.lblProductName = new System.Windows.Forms.Label();
this.txtProductName = new System.Windows.Forms.TextBox();
this.lblProductVersion = new System.Windows.Forms.Label();
this.txtProductVersion = new System.Windows.Forms.TextBox();
this.lblProductDiskSpace = new System.Windows.Forms.Label();
this.txtProductDiskSpace = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.lblProductBackgroundColor = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.button2 = new System.Windows.Forms.Button();
this.lblProductBackgroundImage = new System.Windows.Forms.Label();
this.txtProductBackgroundImage = new System.Windows.Forms.TextBox();
this.cmdBrowseProductBackgroundImage = new System.Windows.Forms.Button();
this.pnlDialogs = new System.Windows.Forms.Panel();
this.lvDialogs = new System.Windows.Forms.ListView();
this.chTitle = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.cmdDialogMoveUp = new System.Windows.Forms.Button();
this.cmdDialogMoveDown = new System.Windows.Forms.Button();
this.fraProperties = new System.Windows.Forms.GroupBox();
this.fraPreview = new System.Windows.Forms.GroupBox();
this.picDialogPreview = new System.Windows.Forms.PictureBox();
this.pnlDialogPropertiesNone = new System.Windows.Forms.Panel();
this.label1 = new System.Windows.Forms.Label();
this.scMain.Panel1.SuspendLayout();
this.scMain.Panel2.SuspendLayout();
this.scMain.SuspendLayout();
this.pnlProduct.SuspendLayout();
this.pnlDialogs.SuspendLayout();
this.fraProperties.SuspendLayout();
this.fraPreview.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.picDialogPreview)).BeginInit();
this.pnlDialogPropertiesNone.SuspendLayout();
this.SuspendLayout();
//
// tvExplorer
//
this.tvExplorer.Dock = System.Windows.Forms.DockStyle.Fill;
this.tvExplorer.HideSelection = false;
this.tvExplorer.Location = new System.Drawing.Point(0, 0);
this.tvExplorer.Name = "tvExplorer";
this.tvExplorer.Size = new System.Drawing.Size(544, 400);
treeNode1.Name = "nodeProduct";
treeNode1.Text = "Product";
treeNode2.Name = "nodeDialogs";
treeNode2.Text = "Dialogs";
treeNode3.Name = "nodeShortcuts";
treeNode3.Text = "Shortcuts";
this.tvExplorer.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode1,
treeNode2,
treeNode3});
this.tvExplorer.Size = new System.Drawing.Size(181, 406);
this.tvExplorer.TabIndex = 0;
this.tvExplorer.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvExplorer_AfterSelect);
//
// scMain
//
this.scMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.scMain.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.scMain.Location = new System.Drawing.Point(0, 0);
this.scMain.Name = "scMain";
//
// scMain.Panel1
//
this.scMain.Panel1.Controls.Add(this.tvExplorer);
//
// scMain.Panel2
//
this.scMain.Panel2.Controls.Add(this.pnlDialogs);
this.scMain.Panel2.Controls.Add(this.pnlProduct);
this.scMain.Size = new System.Drawing.Size(534, 406);
this.scMain.SplitterDistance = 181;
this.scMain.TabIndex = 1;
//
// pnlProduct
//
this.pnlProduct.Controls.Add(this.cmdBrowseProductBackgroundImage);
this.pnlProduct.Controls.Add(this.button2);
this.pnlProduct.Controls.Add(this.button1);
this.pnlProduct.Controls.Add(this.label3);
this.pnlProduct.Controls.Add(this.txtProductBackgroundImage);
this.pnlProduct.Controls.Add(this.txtProductDiskSpace);
this.pnlProduct.Controls.Add(this.label2);
this.pnlProduct.Controls.Add(this.lblProductBackgroundImage);
this.pnlProduct.Controls.Add(this.lblProductBackgroundColor);
this.pnlProduct.Controls.Add(this.lblProductDiskSpace);
this.pnlProduct.Controls.Add(this.txtProductVersion);
this.pnlProduct.Controls.Add(this.lblProductVersion);
this.pnlProduct.Controls.Add(this.txtProductName);
this.pnlProduct.Controls.Add(this.lblProductName);
this.pnlProduct.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlProduct.Location = new System.Drawing.Point(0, 0);
this.pnlProduct.Name = "pnlProduct";
this.pnlProduct.Size = new System.Drawing.Size(349, 406);
this.pnlProduct.TabIndex = 0;
//
// lblProductName
//
this.lblProductName.AutoSize = true;
this.lblProductName.Location = new System.Drawing.Point(3, 6);
this.lblProductName.Name = "lblProductName";
this.lblProductName.Size = new System.Drawing.Size(76, 13);
this.lblProductName.TabIndex = 0;
this.lblProductName.Text = "Product &name:";
//
// txtProductName
//
this.txtProductName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtProductName.Location = new System.Drawing.Point(108, 3);
this.txtProductName.Name = "txtProductName";
this.txtProductName.Size = new System.Drawing.Size(238, 20);
this.txtProductName.TabIndex = 1;
this.txtProductName.Text = "My Application";
//
// lblProductVersion
//
this.lblProductVersion.AutoSize = true;
this.lblProductVersion.Location = new System.Drawing.Point(3, 32);
this.lblProductVersion.Name = "lblProductVersion";
this.lblProductVersion.Size = new System.Drawing.Size(84, 13);
this.lblProductVersion.TabIndex = 0;
this.lblProductVersion.Text = "Product &version:";
//
// txtProductVersion
//
this.txtProductVersion.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtProductVersion.Location = new System.Drawing.Point(108, 29);
this.txtProductVersion.Name = "txtProductVersion";
this.txtProductVersion.Size = new System.Drawing.Size(238, 20);
this.txtProductVersion.TabIndex = 1;
this.txtProductVersion.Text = "1.0.0.0";
//
// lblProductDiskSpace
//
this.lblProductDiskSpace.AutoSize = true;
this.lblProductDiskSpace.Location = new System.Drawing.Point(3, 58);
this.lblProductDiskSpace.Name = "lblProductDiskSpace";
this.lblProductDiskSpace.Size = new System.Drawing.Size(63, 13);
this.lblProductDiskSpace.TabIndex = 0;
this.lblProductDiskSpace.Text = "&Disk space:";
//
// txtProductDiskSpace
//
this.txtProductDiskSpace.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtProductDiskSpace.Location = new System.Drawing.Point(108, 55);
this.txtProductDiskSpace.Name = "txtProductDiskSpace";
this.txtProductDiskSpace.Size = new System.Drawing.Size(238, 20);
this.txtProductDiskSpace.TabIndex = 1;
this.txtProductDiskSpace.Text = "60";
//
// button1
//
this.button1.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.button1.BackColor = System.Drawing.Color.Blue;
this.button1.Location = new System.Drawing.Point(147, 81);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 2;
this.button1.UseVisualStyleBackColor = false;
//
// lblProductBackgroundColor
//
this.lblProductBackgroundColor.AutoSize = true;
this.lblProductBackgroundColor.Location = new System.Drawing.Point(3, 86);
this.lblProductBackgroundColor.Name = "lblProductBackgroundColor";
this.lblProductBackgroundColor.Size = new System.Drawing.Size(94, 13);
this.lblProductBackgroundColor.TabIndex = 0;
this.lblProductBackgroundColor.Text = "Background color:";
//
// label2
//
this.label2.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.label2.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.label2.Location = new System.Drawing.Point(144, 107);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(78, 18);
this.label2.TabIndex = 0;
this.label2.Text = "Top";
this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// label3
//
this.label3.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.label3.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.label3.Location = new System.Drawing.Point(225, 107);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(78, 18);
this.label3.TabIndex = 0;
this.label3.Text = "Bottom";
this.label3.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// button2
//
this.button2.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.button2.BackColor = System.Drawing.Color.Black;
this.button2.Location = new System.Drawing.Point(228, 81);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(75, 23);
this.button2.TabIndex = 2;
this.button2.UseVisualStyleBackColor = false;
//
// lblProductBackgroundImage
//
this.lblProductBackgroundImage.AutoSize = true;
this.lblProductBackgroundImage.Location = new System.Drawing.Point(3, 131);
this.lblProductBackgroundImage.Name = "lblProductBackgroundImage";
this.lblProductBackgroundImage.Size = new System.Drawing.Size(99, 13);
this.lblProductBackgroundImage.TabIndex = 0;
this.lblProductBackgroundImage.Text = "Background &image:";
//
// txtProductBackgroundImage
//
this.txtProductBackgroundImage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtProductBackgroundImage.Location = new System.Drawing.Point(108, 128);
this.txtProductBackgroundImage.Name = "txtProductBackgroundImage";
this.txtProductBackgroundImage.Size = new System.Drawing.Size(238, 20);
this.txtProductBackgroundImage.TabIndex = 1;
//
// cmdBrowseProductBackgroundImage
//
this.cmdBrowseProductBackgroundImage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.cmdBrowseProductBackgroundImage.Location = new System.Drawing.Point(271, 154);
this.cmdBrowseProductBackgroundImage.Name = "cmdBrowseProductBackgroundImage";
this.cmdBrowseProductBackgroundImage.Size = new System.Drawing.Size(75, 23);
this.cmdBrowseProductBackgroundImage.TabIndex = 3;
this.cmdBrowseProductBackgroundImage.Text = "&Browse...";
this.cmdBrowseProductBackgroundImage.UseVisualStyleBackColor = true;
//
// pnlDialogs
//
this.pnlDialogs.Controls.Add(this.fraPreview);
this.pnlDialogs.Controls.Add(this.fraProperties);
this.pnlDialogs.Controls.Add(this.cmdDialogMoveDown);
this.pnlDialogs.Controls.Add(this.cmdDialogMoveUp);
this.pnlDialogs.Controls.Add(this.lvDialogs);
this.pnlDialogs.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlDialogs.Location = new System.Drawing.Point(0, 0);
this.pnlDialogs.Name = "pnlDialogs";
this.pnlDialogs.Size = new System.Drawing.Size(349, 406);
this.pnlDialogs.TabIndex = 1;
//
// lvDialogs
//
this.lvDialogs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lvDialogs.CheckBoxes = true;
this.lvDialogs.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.chTitle});
this.lvDialogs.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
listViewItem1.StateImageIndex = 0;
listViewItem2.StateImageIndex = 0;
listViewItem3.StateImageIndex = 0;
listViewItem4.StateImageIndex = 0;
listViewItem5.StateImageIndex = 0;
listViewItem6.StateImageIndex = 0;
this.lvDialogs.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
listViewItem1,
listViewItem2,
listViewItem3,
listViewItem4,
listViewItem5,
listViewItem6});
this.lvDialogs.Location = new System.Drawing.Point(3, 3);
this.lvDialogs.Name = "lvDialogs";
this.lvDialogs.Size = new System.Drawing.Size(262, 119);
this.lvDialogs.TabIndex = 0;
this.lvDialogs.UseCompatibleStateImageBehavior = false;
this.lvDialogs.View = System.Windows.Forms.View.Details;
this.lvDialogs.SelectedIndexChanged += new System.EventHandler(this.lvDialogs_SelectedIndexChanged);
//
// chTitle
//
this.chTitle.Text = "Title";
this.chTitle.Width = 169;
//
// cmdDialogMoveUp
//
this.cmdDialogMoveUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.cmdDialogMoveUp.Location = new System.Drawing.Point(271, 3);
this.cmdDialogMoveUp.Name = "cmdDialogMoveUp";
this.cmdDialogMoveUp.Size = new System.Drawing.Size(75, 23);
this.cmdDialogMoveUp.TabIndex = 1;
this.cmdDialogMoveUp.Text = "Move &Up";
this.cmdDialogMoveUp.UseVisualStyleBackColor = true;
//
// cmdDialogMoveDown
//
this.cmdDialogMoveDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.cmdDialogMoveDown.Location = new System.Drawing.Point(271, 32);
this.cmdDialogMoveDown.Name = "cmdDialogMoveDown";
this.cmdDialogMoveDown.Size = new System.Drawing.Size(75, 23);
this.cmdDialogMoveDown.TabIndex = 1;
this.cmdDialogMoveDown.Text = "Move &Down";
this.cmdDialogMoveDown.UseVisualStyleBackColor = true;
//
// fraProperties
//
this.fraProperties.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.fraProperties.Controls.Add(this.pnlDialogPropertiesNone);
this.fraProperties.Location = new System.Drawing.Point(3, 128);
this.fraProperties.Name = "fraProperties";
this.fraProperties.Size = new System.Drawing.Size(343, 111);
this.fraProperties.TabIndex = 2;
this.fraProperties.TabStop = false;
this.fraProperties.Text = "Properties";
//
// fraPreview
//
this.fraPreview.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.fraPreview.Controls.Add(this.picDialogPreview);
this.fraPreview.Location = new System.Drawing.Point(3, 245);
this.fraPreview.Name = "fraPreview";
this.fraPreview.Size = new System.Drawing.Size(343, 158);
this.fraPreview.TabIndex = 2;
this.fraPreview.TabStop = false;
this.fraPreview.Text = "Preview";
//
// pictureBox1
//
this.picDialogPreview.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.picDialogPreview.Image = global::UniversalEditor.Properties.Resources.Screenshot_Install_01_Welcome;
this.picDialogPreview.Location = new System.Drawing.Point(6, 19);
this.picDialogPreview.Name = "pictureBox1";
this.picDialogPreview.Size = new System.Drawing.Size(331, 133);
this.picDialogPreview.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.picDialogPreview.TabIndex = 0;
this.picDialogPreview.TabStop = false;
//
// pnlDialogPropertiesNone
//
this.pnlDialogPropertiesNone.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.pnlDialogPropertiesNone.Controls.Add(this.label1);
this.pnlDialogPropertiesNone.Location = new System.Drawing.Point(6, 19);
this.pnlDialogPropertiesNone.Name = "pnlDialogPropertiesNone";
this.pnlDialogPropertiesNone.Size = new System.Drawing.Size(331, 86);
this.pnlDialogPropertiesNone.TabIndex = 0;
//
// label1
//
this.label1.Anchor = System.Windows.Forms.AnchorStyles.None;
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(52, 37);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(227, 13);
this.label1.TabIndex = 0;
this.label1.Text = "There are no properties available for this dialog";
//
// InstallationScriptEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.tvExplorer);
this.Controls.Add(this.scMain);
this.Name = "InstallationScriptEditor";
this.Size = new System.Drawing.Size(544, 400);
this.Size = new System.Drawing.Size(534, 406);
this.scMain.Panel1.ResumeLayout(false);
this.scMain.Panel2.ResumeLayout(false);
this.scMain.ResumeLayout(false);
this.pnlProduct.ResumeLayout(false);
this.pnlProduct.PerformLayout();
this.pnlDialogs.ResumeLayout(false);
this.fraProperties.ResumeLayout(false);
this.fraPreview.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.picDialogPreview)).EndInit();
this.pnlDialogPropertiesNone.ResumeLayout(false);
this.pnlDialogPropertiesNone.PerformLayout();
this.ResumeLayout(false);
}
@ -53,5 +423,31 @@
#endregion
private System.Windows.Forms.TreeView tvExplorer;
private System.Windows.Forms.SplitContainer scMain;
private System.Windows.Forms.Panel pnlProduct;
private System.Windows.Forms.TextBox txtProductName;
private System.Windows.Forms.Label lblProductName;
private System.Windows.Forms.TextBox txtProductDiskSpace;
private System.Windows.Forms.Label lblProductDiskSpace;
private System.Windows.Forms.TextBox txtProductVersion;
private System.Windows.Forms.Label lblProductVersion;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label lblProductBackgroundColor;
private System.Windows.Forms.Button cmdBrowseProductBackgroundImage;
private System.Windows.Forms.TextBox txtProductBackgroundImage;
private System.Windows.Forms.Label lblProductBackgroundImage;
private System.Windows.Forms.Panel pnlDialogs;
private System.Windows.Forms.Button cmdDialogMoveDown;
private System.Windows.Forms.Button cmdDialogMoveUp;
private System.Windows.Forms.ListView lvDialogs;
private System.Windows.Forms.ColumnHeader chTitle;
private System.Windows.Forms.GroupBox fraPreview;
private System.Windows.Forms.GroupBox fraProperties;
private System.Windows.Forms.PictureBox picDialogPreview;
private System.Windows.Forms.Panel pnlDialogPropertiesNone;
private System.Windows.Forms.Label label1;
}
}

View File

@ -37,46 +37,132 @@ namespace UniversalEditor.Editors.RebelSoftware.InstallationScript
{
base.OnObjectModelChanged(e);
tvExplorer.Nodes.Clear();
lvDialogs.Items.Clear();
InstallationScriptObjectModel script = (ObjectModel as InstallationScriptObjectModel);
if (script == null) return;
TreeNode nodeDialogs = new TreeNode("Dialogs");
nodeDialogs.ImageKey = "generic-folder-closed";
lvDialogs.Items.Clear();
foreach (ISDialog dialog in script.Dialogs)
{
TreeNode tn = new TreeNode();
if (dialog is CopyFilesDialog)
{
tn.Text = "CopyFiles";
}
else if (dialog is DestinationDialog)
{
tn.Text = "Destination";
}
else if (dialog is FinishDialog)
{
tn.Text = "Finish";
}
else if (dialog is LicenseDialog)
{
tn.Text = "License";
}
else if (dialog is StartCopyingDialog)
{
tn.Text = "StartCopying";
}
else if (dialog is WelcomeDialog)
{
tn.Text = "Welcome";
}
nodeDialogs.Nodes.Add(tn);
ListViewItem lviDialog = new ListViewItem();
lviDialog.Name = dialog.GetType().FullName;
lviDialog.Checked = true;
lviDialog.Tag = dialog;
lviDialog.Text = GetDialogTitle(dialog);
lvDialogs.Items.Add(lviDialog);
}
tvExplorer.Nodes.Add(nodeDialogs);
Type[] types = typeof(ISDialog).Assembly.GetTypes();
List<Type> dialogTypes = new List<Type>();
foreach (Type t in types)
{
if (!t.IsAbstract && t.IsSubclassOf(typeof(ISDialog)))
{
dialogTypes.Add(t);
}
}
foreach (Type t in dialogTypes)
{
if (!lvDialogs.Items.ContainsKey(t.FullName))
{
ISDialog dialog = (ISDialog)t.Assembly.CreateInstance(t.FullName);
ListViewItem lvi = new ListViewItem();
lvi.Name = t.FullName;
lvi.Text = GetDialogTitle(dialog);
lvi.Tag = dialog;
lvi.Checked = false;
lvDialogs.Items.Add(lvi);
}
}
}
private string GetDialogTitle(ISDialog dialog)
{
if (dialog is CopyFilesDialog)
{
return "Progress";
}
else if (dialog is DestinationDialog)
{
return "Destination";
}
else if (dialog is FinishDialog)
{
return "Finish";
}
else if (dialog is LicenseDialog)
{
return "License";
}
else if (dialog is StartCopyingDialog)
{
return "Summary";
}
else if (dialog is WelcomeDialog)
{
return "Welcome";
}
return dialog.GetType().FullName;
}
private void tvExplorer_AfterSelect(object sender, TreeViewEventArgs e)
{
foreach (Control ctl in scMain.Panel2.Controls)
{
if (e.Node != null)
{
if (ctl.Name.Substring(3) == e.Node.Name.Substring(4))
{
ctl.Enabled = true;
ctl.Visible = true;
continue;
}
}
ctl.Visible = false;
ctl.Enabled = false;
}
}
private void lvDialogs_SelectedIndexChanged(object sender, EventArgs e)
{
if (lvDialogs.SelectedItems.Count != 1) return;
ListViewItem lvi = lvDialogs.SelectedItems[0];
picDialogPreview.Image = null;
ISDialog dialog = (lvi.Tag as ISDialog);
if (dialog == null) return;
if (dialog is CopyFilesDialog)
{
picDialogPreview.Image = Properties.Resources.Screenshot_Install_05_Progress;
}
else if (dialog is DestinationDialog)
{
picDialogPreview.Image = Properties.Resources.Screenshot_Install_03_Destination;
}
else if (dialog is FinishDialog)
{
picDialogPreview.Image = Properties.Resources.Screenshot_Install_06_Finish;
}
else if (dialog is LicenseDialog)
{
picDialogPreview.Image = Properties.Resources.Screenshot_Install_02_License;
}
else if (dialog is StartCopyingDialog)
{
picDialogPreview.Image = Properties.Resources.Screenshot_Install_04_Summary;
}
else if (dialog is WelcomeDialog)
{
picDialogPreview.Image = Properties.Resources.Screenshot_Install_01_Welcome;
}
}
}
}

View File

@ -0,0 +1,153 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace UniversalEditor.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UniversalEditor.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Screenshot_Install_01_Welcome {
get {
object obj = ResourceManager.GetObject("Screenshot_Install_01_Welcome", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Screenshot_Install_02_License {
get {
object obj = ResourceManager.GetObject("Screenshot_Install_02_License", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Screenshot_Install_03_Destination {
get {
object obj = ResourceManager.GetObject("Screenshot_Install_03_Destination", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Screenshot_Install_04_Summary {
get {
object obj = ResourceManager.GetObject("Screenshot_Install_04_Summary", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Screenshot_Install_05_Progress {
get {
object obj = ResourceManager.GetObject("Screenshot_Install_05_Progress", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Screenshot_Install_06_Finish {
get {
object obj = ResourceManager.GetObject("Screenshot_Install_06_Finish", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Screenshot_Uninstall_01_Welcome {
get {
object obj = ResourceManager.GetObject("Screenshot_Uninstall_01_Welcome", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Screenshot_Uninstall_02_Progress {
get {
object obj = ResourceManager.GetObject("Screenshot_Uninstall_02_Progress", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Screenshot_Uninstall_03_Finish {
get {
object obj = ResourceManager.GetObject("Screenshot_Uninstall_03_Finish", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@ -0,0 +1,148 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Screenshot_Install_01_Welcome" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Screenshot_Install_01_Welcome.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Screenshot_Install_02_License" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Screenshot_Install_02_License.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Screenshot_Install_03_Destination" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Screenshot_Install_03_Destination.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Screenshot_Install_04_Summary" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Screenshot_Install_04_Summary.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Screenshot_Install_05_Progress" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Screenshot_Install_05_Progress.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Screenshot_Install_06_Finish" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Screenshot_Install_06_Finish.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Screenshot_Uninstall_01_Welcome" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Screenshot_Uninstall_01_Welcome.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Screenshot_Uninstall_02_Progress" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Screenshot_Uninstall_02_Progress.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Screenshot_Uninstall_03_Finish" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Screenshot_Uninstall_03_Finish.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -44,11 +44,20 @@
<DependentUpon>InstallationScriptEditor.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Editors\RebelSoftware\InstallationScript\InstallationScriptEditor.resx">
<DependentUpon>InstallationScriptEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\Libraries\UniversalEditor.Core\UniversalEditor.Core.csproj">
@ -72,6 +81,33 @@
<Name>UniversalEditor.UserInterface.WindowsForms</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Resources\Screenshot_Install_01_Welcome.bmp" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Screenshot_Install_02_License.bmp" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Screenshot_Install_03_Destination.bmp" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Screenshot_Install_04_Summary.bmp" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Screenshot_Install_05_Progress.bmp" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Screenshot_Install_06_Finish.bmp" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Screenshot_Uninstall_01_Welcome.bmp" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Screenshot_Uninstall_02_Progress.bmp" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Screenshot_Uninstall_03_Finish.bmp" />
</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.

View File

@ -0,0 +1,113 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UniversalEditor.IO;
using UniversalEditor.ObjectModels.FileSystem;
namespace UniversalEditor.DataFormats.RebelSoftware.InstallationPackage
{
public class ZAPDataFormat : DataFormat
{
private static DataFormatReference _dfr = null;
protected override DataFormatReference MakeReferenceInternal()
{
if (_dfr == null)
{
_dfr = base.MakeReferenceInternal();
_dfr.Capabilities.Add(typeof(FileSystemObjectModel), DataFormatCapabilities.All);
}
return _dfr;
}
private uint? mvarArchiveOffset = null;
/// <summary>
/// The offset to the beginning of this archive file, useful for self-extracting executables (i.e. the length of the SFX stub executable).
/// </summary>
public uint? ArchiveOffset { get { return mvarArchiveOffset; } set { mvarArchiveOffset = value; } }
protected override void LoadInternal(ref ObjectModel objectModel)
{
FileSystemObjectModel fsom = (objectModel as FileSystemObjectModel);
if (fsom == null) throw new ObjectModelNotSupportedException();
Reader reader = base.Accessor.Reader;
if (mvarArchiveOffset != null)
{
reader.Seek(mvarArchiveOffset.Value, SeekOrigin.Begin);
}
uint magic = reader.ReadUInt32();
if (magic != 0x0C) throw new InvalidDataFormatException("File does not begin with { 0x0C, 0x00, 0x00, 0x00 }");
uint unknown1 = reader.ReadUInt32(); // 9462627
uint unknown2 = reader.ReadUInt32(); // 9988745
while (reader.Remaining > 4)
{
uint headerSize = reader.ReadUInt32(); // not including file name
uint fileNameLength = reader.ReadUInt32();
uint unknown4 = reader.ReadUInt32();
uint unknown5a = reader.ReadUInt32();
uint decompressedLength = reader.ReadUInt32();
uint recordLength = reader.ReadUInt32(); // including header size
string fileName = reader.ReadFixedLengthString(fileNameLength);
uint footerSize = reader.ReadUInt32();
uint unknown7 = reader.ReadUInt32();
uint unknown8 = reader.ReadUInt32();
uint unknown9 = reader.ReadUInt32();
uint compressedLength = recordLength - footerSize;
long offset = reader.Accessor.Position;
reader.Seek(compressedLength, SeekOrigin.Current);
File file = fsom.AddFile(fileName);
file.Properties.Add("reader", reader);
file.Properties.Add("offset", offset);
file.Properties.Add("CompressedLength", compressedLength);
file.Properties.Add("DecompressedLength", decompressedLength);
file.DataRequest += file_DataRequest;
file.Size = decompressedLength;
}
if (reader.Remaining == 4)
{
// offset to the beginning of the archive file
mvarArchiveOffset = reader.ReadUInt32();
}
}
private UniversalEditor.Compression.Modules.Zlib.ZlibCompressionModule compressor = new UniversalEditor.Compression.Modules.Zlib.ZlibCompressionModule();
private void file_DataRequest(object sender, DataRequestEventArgs e)
{
File file = (sender as File);
Reader reader = (Reader)file.Properties["reader"];
long offset = (long)file.Properties["offset"];
uint compressedLength = (uint)file.Properties["CompressedLength"];
uint decompressedLength = (uint)file.Properties["DecompressedLength"];
reader.Seek(offset, SeekOrigin.Begin);
byte[] compressedData = reader.ReadBytes(compressedLength);
byte[] decompressedData = compressor.Decompress(compressedData);
byte[] compressedDataDeflated = new byte[compressedData.Length - 6];
Array.Copy(compressedData, 2, compressedDataDeflated, 0, compressedDataDeflated.Length);
decompressedData = UniversalEditor.Compression.CompressionModules.Zlib.Decompress(compressedData);
e.Data = decompressedData;
}
protected override void SaveInternal(ObjectModel objectModel)
{
throw new NotImplementedException();
}
}
}

View File

@ -35,6 +35,7 @@
<Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<Compile Include="DataFormats\RebelSoftware\InstallationPackage\ZAPDataFormat.cs" />
<Compile Include="DataFormats\RebelSoftware\InstallationScript\IAPDataFormat.cs" />
<Compile Include="ObjectModels\RebelSoftware\InstallationScript\Action.cs" />
<Compile Include="ObjectModels\RebelSoftware\InstallationScript\Actions\UnzipAction.cs" />
@ -49,6 +50,10 @@
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Libraries\UniversalEditor.Compression\UniversalEditor.Compression.csproj">
<Project>{3f664673-7e22-4486-9ad0-fc81861d0b78}</Project>
<Name>UniversalEditor.Compression</Name>
</ProjectReference>
<ProjectReference Include="..\..\Libraries\UniversalEditor.Core\UniversalEditor.Core.csproj">
<Project>{2d4737e6-6d95-408a-90db-8dff38147e85}</Project>
<Name>UniversalEditor.Core</Name>