mirror of
https://github.com/modernw/App-Installer-For-Windows-8.x-Reset.git
synced 2026-04-23 11:30:22 +10:00
Merge branch 'modernw:master' into master
This commit is contained in:
26
Manager/ShortcutCreateForm.Designer.cs
generated
26
Manager/ShortcutCreateForm.Designer.cs
generated
@@ -115,10 +115,10 @@
|
|||||||
this.label1.AutoSize = true;
|
this.label1.AutoSize = true;
|
||||||
this.tableLayoutPanel1.SetColumnSpan(this.label1, 5);
|
this.tableLayoutPanel1.SetColumnSpan(this.label1, 5);
|
||||||
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.label1.Font = new System.Drawing.Font("微软雅黑 Light", 20F);
|
this.label1.Font = new System.Drawing.Font("Segoe UI", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.label1.Location = new System.Drawing.Point(27, 24);
|
this.label1.Location = new System.Drawing.Point(27, 24);
|
||||||
this.label1.Name = "label1";
|
this.label1.Name = "label1";
|
||||||
this.label1.Size = new System.Drawing.Size(727, 45);
|
this.label1.Size = new System.Drawing.Size(727, 46);
|
||||||
this.label1.TabIndex = 0;
|
this.label1.TabIndex = 0;
|
||||||
this.label1.Text = "Create Desktop Shortcut";
|
this.label1.Text = "Create Desktop Shortcut";
|
||||||
//
|
//
|
||||||
@@ -127,7 +127,7 @@
|
|||||||
this.label2.AutoSize = true;
|
this.label2.AutoSize = true;
|
||||||
this.tableLayoutPanel1.SetColumnSpan(this.label2, 5);
|
this.tableLayoutPanel1.SetColumnSpan(this.label2, 5);
|
||||||
this.label2.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.label2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.label2.Location = new System.Drawing.Point(27, 79);
|
this.label2.Location = new System.Drawing.Point(27, 80);
|
||||||
this.label2.Name = "label2";
|
this.label2.Name = "label2";
|
||||||
this.label2.Size = new System.Drawing.Size(727, 60);
|
this.label2.Size = new System.Drawing.Size(727, 60);
|
||||||
this.label2.TabIndex = 1;
|
this.label2.TabIndex = 1;
|
||||||
@@ -147,7 +147,7 @@
|
|||||||
this.tableLayoutPanel2.Controls.Add(this.label7, 0, 8);
|
this.tableLayoutPanel2.Controls.Add(this.label7, 0, 8);
|
||||||
this.tableLayoutPanel2.Controls.Add(this.customIconDisplay, 0, 9);
|
this.tableLayoutPanel2.Controls.Add(this.customIconDisplay, 0, 9);
|
||||||
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.tableLayoutPanel2.Location = new System.Drawing.Point(27, 152);
|
this.tableLayoutPanel2.Location = new System.Drawing.Point(27, 153);
|
||||||
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
|
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
|
||||||
this.tableLayoutPanel2.RowCount = 10;
|
this.tableLayoutPanel2.RowCount = 10;
|
||||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||||
@@ -160,7 +160,7 @@
|
|||||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 39F));
|
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 39F));
|
||||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F));
|
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F));
|
||||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 13F));
|
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 13F));
|
||||||
this.tableLayoutPanel2.Size = new System.Drawing.Size(235, 324);
|
this.tableLayoutPanel2.Size = new System.Drawing.Size(235, 323);
|
||||||
this.tableLayoutPanel2.TabIndex = 2;
|
this.tableLayoutPanel2.TabIndex = 2;
|
||||||
//
|
//
|
||||||
// label3
|
// label3
|
||||||
@@ -251,7 +251,7 @@
|
|||||||
this.customIconDisplay.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.customIconDisplay.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.customIconDisplay.Location = new System.Drawing.Point(3, 230);
|
this.customIconDisplay.Location = new System.Drawing.Point(3, 230);
|
||||||
this.customIconDisplay.Name = "customIconDisplay";
|
this.customIconDisplay.Name = "customIconDisplay";
|
||||||
this.customIconDisplay.Size = new System.Drawing.Size(229, 91);
|
this.customIconDisplay.Size = new System.Drawing.Size(229, 90);
|
||||||
this.customIconDisplay.TabIndex = 7;
|
this.customIconDisplay.TabIndex = 7;
|
||||||
this.customIconDisplay.TabStop = false;
|
this.customIconDisplay.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -273,7 +273,7 @@
|
|||||||
this.tableLayoutPanel3.Controls.Add(this.label12, 0, 9);
|
this.tableLayoutPanel3.Controls.Add(this.label12, 0, 9);
|
||||||
this.tableLayoutPanel3.Controls.Add(this.shortcutNameInput, 0, 10);
|
this.tableLayoutPanel3.Controls.Add(this.shortcutNameInput, 0, 10);
|
||||||
this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.tableLayoutPanel3.Location = new System.Drawing.Point(273, 152);
|
this.tableLayoutPanel3.Location = new System.Drawing.Point(273, 153);
|
||||||
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
|
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
|
||||||
this.tableLayoutPanel3.RowCount = 11;
|
this.tableLayoutPanel3.RowCount = 11;
|
||||||
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||||
@@ -287,7 +287,7 @@
|
|||||||
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 32F));
|
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 32F));
|
||||||
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||||
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F));
|
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F));
|
||||||
this.tableLayoutPanel3.Size = new System.Drawing.Size(235, 324);
|
this.tableLayoutPanel3.Size = new System.Drawing.Size(235, 323);
|
||||||
this.tableLayoutPanel3.TabIndex = 3;
|
this.tableLayoutPanel3.TabIndex = 3;
|
||||||
//
|
//
|
||||||
// label5
|
// label5
|
||||||
@@ -476,14 +476,14 @@
|
|||||||
this.tableLayoutPanel4.Controls.Add(this.imageSizeList, 0, 1);
|
this.tableLayoutPanel4.Controls.Add(this.imageSizeList, 0, 1);
|
||||||
this.tableLayoutPanel4.Controls.Add(this.imagesPreview, 0, 3);
|
this.tableLayoutPanel4.Controls.Add(this.imagesPreview, 0, 3);
|
||||||
this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.tableLayoutPanel4.Location = new System.Drawing.Point(519, 152);
|
this.tableLayoutPanel4.Location = new System.Drawing.Point(519, 153);
|
||||||
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
|
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
|
||||||
this.tableLayoutPanel4.RowCount = 4;
|
this.tableLayoutPanel4.RowCount = 4;
|
||||||
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||||
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||||
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
this.tableLayoutPanel4.Size = new System.Drawing.Size(235, 324);
|
this.tableLayoutPanel4.Size = new System.Drawing.Size(235, 323);
|
||||||
this.tableLayoutPanel4.TabIndex = 4;
|
this.tableLayoutPanel4.TabIndex = 4;
|
||||||
//
|
//
|
||||||
// label8
|
// label8
|
||||||
@@ -500,7 +500,7 @@
|
|||||||
//
|
//
|
||||||
this.label9.AutoSize = true;
|
this.label9.AutoSize = true;
|
||||||
this.label9.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.label9.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.label9.Location = new System.Drawing.Point(3, 162);
|
this.label9.Location = new System.Drawing.Point(3, 161);
|
||||||
this.label9.Name = "label9";
|
this.label9.Name = "label9";
|
||||||
this.label9.Size = new System.Drawing.Size(229, 20);
|
this.label9.Size = new System.Drawing.Size(229, 20);
|
||||||
this.label9.TabIndex = 1;
|
this.label9.TabIndex = 1;
|
||||||
@@ -516,7 +516,7 @@
|
|||||||
this.imageSizeList.Location = new System.Drawing.Point(3, 23);
|
this.imageSizeList.Location = new System.Drawing.Point(3, 23);
|
||||||
this.imageSizeList.Name = "imageSizeList";
|
this.imageSizeList.Name = "imageSizeList";
|
||||||
this.imageSizeList.RowTemplate.Height = 27;
|
this.imageSizeList.RowTemplate.Height = 27;
|
||||||
this.imageSizeList.Size = new System.Drawing.Size(229, 136);
|
this.imageSizeList.Size = new System.Drawing.Size(229, 135);
|
||||||
this.imageSizeList.TabIndex = 2;
|
this.imageSizeList.TabIndex = 2;
|
||||||
this.imageSizeList.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.imageSizeList_CellDoubleClick);
|
this.imageSizeList.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.imageSizeList_CellDoubleClick);
|
||||||
//
|
//
|
||||||
@@ -536,7 +536,7 @@
|
|||||||
this.imagesPreview.AutoScroll = true;
|
this.imagesPreview.AutoScroll = true;
|
||||||
this.imagesPreview.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.imagesPreview.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.imagesPreview.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
this.imagesPreview.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||||
this.imagesPreview.Location = new System.Drawing.Point(3, 185);
|
this.imagesPreview.Location = new System.Drawing.Point(3, 184);
|
||||||
this.imagesPreview.Name = "imagesPreview";
|
this.imagesPreview.Name = "imagesPreview";
|
||||||
this.imagesPreview.Size = new System.Drawing.Size(229, 136);
|
this.imagesPreview.Size = new System.Drawing.Size(229, 136);
|
||||||
this.imagesPreview.TabIndex = 3;
|
this.imagesPreview.TabIndex = 3;
|
||||||
|
|||||||
@@ -17,15 +17,15 @@ namespace PriFileFormat
|
|||||||
}
|
}
|
||||||
public override bool CanRead
|
public override bool CanRead
|
||||||
{
|
{
|
||||||
get { return comStream != null; }
|
get { return true; }
|
||||||
}
|
}
|
||||||
public override bool CanSeek
|
public override bool CanSeek
|
||||||
{
|
{
|
||||||
get { return comStream != null; }
|
get { return true; }
|
||||||
}
|
}
|
||||||
public override bool CanWrite
|
public override bool CanWrite
|
||||||
{
|
{
|
||||||
get { return comStream != null; }
|
get { return true; }
|
||||||
}
|
}
|
||||||
public override long Length
|
public override long Length
|
||||||
{
|
{
|
||||||
@@ -144,8 +144,9 @@ namespace PriFileFormat
|
|||||||
}
|
}
|
||||||
public override void Close ()
|
public override void Close ()
|
||||||
{
|
{
|
||||||
base.Close ();
|
|
||||||
comStream = null;
|
comStream = null;
|
||||||
|
base.Close ();
|
||||||
}
|
}
|
||||||
|
~ComStreamWrapper () { comStream = null;}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ namespace PriFileFormat
|
|||||||
_dataItems?.Clear ();
|
_dataItems?.Clear ();
|
||||||
_dataItems = null;
|
_dataItems = null;
|
||||||
}
|
}
|
||||||
|
~DataItemSection () { ClearData (); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct DataItemRef
|
public struct DataItemRef
|
||||||
|
|||||||
213
PriFileFormat/DataTree.cs
Normal file
213
PriFileFormat/DataTree.cs
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace PriFileFormat
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 树节点接口
|
||||||
|
/// </summary>
|
||||||
|
public interface ITreeNode: IDisposable, IEnumerable<ITreeNode>
|
||||||
|
{
|
||||||
|
string Name { get; set; }
|
||||||
|
string Value { get; set; }
|
||||||
|
ITreeNode Parent { get; set; }
|
||||||
|
IList<ITreeNode> Children { get; }
|
||||||
|
ITreeNode AddChild (string name, string value);
|
||||||
|
IEnumerable<ITreeNode> DescendantsAndSelf ();
|
||||||
|
ITreeNode Find (string name);
|
||||||
|
IEnumerable<ITreeNode> FindAll (string name);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 树节点实现
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class TreeNode: ITreeNode
|
||||||
|
{
|
||||||
|
// 节点基本属性
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Value { get; set; }
|
||||||
|
// 父节点引用
|
||||||
|
[XmlIgnore]
|
||||||
|
public TreeNode Parent { get; set; }
|
||||||
|
ITreeNode ITreeNode.Parent
|
||||||
|
{
|
||||||
|
get { return Parent; }
|
||||||
|
set { Parent = (TreeNode)value; }
|
||||||
|
}
|
||||||
|
// 子节点列表
|
||||||
|
[XmlArray ("Children")]
|
||||||
|
[XmlArrayItem ("Node")]
|
||||||
|
public IList<TreeNode> Children { get; set; }
|
||||||
|
IList<ITreeNode> ITreeNode.Children
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
List<ITreeNode> list = new List<ITreeNode> ();
|
||||||
|
foreach (TreeNode node in Children)
|
||||||
|
{
|
||||||
|
list.Add (node);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public TreeNode ()
|
||||||
|
{
|
||||||
|
Name = "";
|
||||||
|
Value = "";
|
||||||
|
Children = new List<TreeNode> ();
|
||||||
|
Parent = null;
|
||||||
|
}
|
||||||
|
public TreeNode (string name, string value)
|
||||||
|
{
|
||||||
|
Name = name;
|
||||||
|
Value = value;
|
||||||
|
Children = new List<TreeNode> ();
|
||||||
|
Parent = null;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 添加子节点
|
||||||
|
/// </summary>
|
||||||
|
public TreeNode AddChild (string name, string value)
|
||||||
|
{
|
||||||
|
TreeNode child = new TreeNode (name, value);
|
||||||
|
child.Parent = this;
|
||||||
|
Children.Add (child);
|
||||||
|
return child;
|
||||||
|
}
|
||||||
|
ITreeNode ITreeNode.AddChild (string name, string value)
|
||||||
|
{
|
||||||
|
return AddChild (name, value);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 深度优先遍历节点,包括自身
|
||||||
|
/// </summary>
|
||||||
|
public IEnumerable<TreeNode> DescendantsAndSelf ()
|
||||||
|
{
|
||||||
|
yield return this;
|
||||||
|
foreach (TreeNode child in Children)
|
||||||
|
{
|
||||||
|
foreach (TreeNode desc in child.DescendantsAndSelf ())
|
||||||
|
{
|
||||||
|
yield return desc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
IEnumerable<ITreeNode> ITreeNode.DescendantsAndSelf ()
|
||||||
|
{
|
||||||
|
foreach (TreeNode n in DescendantsAndSelf ())
|
||||||
|
{
|
||||||
|
yield return n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 查找第一个匹配节点
|
||||||
|
/// </summary>
|
||||||
|
public TreeNode Find (string name)
|
||||||
|
{
|
||||||
|
foreach (TreeNode n in DescendantsAndSelf ())
|
||||||
|
{
|
||||||
|
if (n.Name == name)
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
ITreeNode ITreeNode.Find (string name)
|
||||||
|
{
|
||||||
|
return Find (name);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 查找所有匹配节点
|
||||||
|
/// </summary>
|
||||||
|
public IEnumerable<TreeNode> FindAll (string name)
|
||||||
|
{
|
||||||
|
foreach (TreeNode n in DescendantsAndSelf ())
|
||||||
|
{
|
||||||
|
if (n.Name == name)
|
||||||
|
yield return n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
IEnumerable<ITreeNode> ITreeNode.FindAll (string name)
|
||||||
|
{
|
||||||
|
foreach (TreeNode n in FindAll (name))
|
||||||
|
{
|
||||||
|
yield return n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#region IEnumerable<TreeNode>
|
||||||
|
public IEnumerator<TreeNode> GetEnumerator ()
|
||||||
|
{
|
||||||
|
return Children.GetEnumerator ();
|
||||||
|
}
|
||||||
|
IEnumerator IEnumerable.GetEnumerator ()
|
||||||
|
{
|
||||||
|
return GetEnumerator ();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
#region IEnumerable<ITreeNode> 显示实现
|
||||||
|
IEnumerator<ITreeNode> IEnumerable<ITreeNode>.GetEnumerator ()
|
||||||
|
{
|
||||||
|
foreach (TreeNode child in Children)
|
||||||
|
{
|
||||||
|
yield return child;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
#region XML 序列化
|
||||||
|
public void SaveToXml (string filePath)
|
||||||
|
{
|
||||||
|
XmlSerializer serializer = new XmlSerializer (typeof (TreeNode));
|
||||||
|
using (StreamWriter writer = new StreamWriter (filePath, false, System.Text.Encoding.UTF8))
|
||||||
|
{
|
||||||
|
serializer.Serialize (writer, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TreeNode LoadFromXml (string filePath)
|
||||||
|
{
|
||||||
|
XmlSerializer serializer = new XmlSerializer (typeof (TreeNode));
|
||||||
|
using (StreamReader reader = new StreamReader (filePath, System.Text.Encoding.UTF8))
|
||||||
|
{
|
||||||
|
TreeNode root = (TreeNode)serializer.Deserialize (reader);
|
||||||
|
SetParentRecursive (root, null);
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetParentRecursive (TreeNode node, TreeNode parent)
|
||||||
|
{
|
||||||
|
node.Parent = parent;
|
||||||
|
foreach (TreeNode child in node.Children)
|
||||||
|
{
|
||||||
|
SetParentRecursive (child, node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
#region IDisposable
|
||||||
|
public virtual void Dispose ()
|
||||||
|
{
|
||||||
|
foreach (TreeNode child in Children)
|
||||||
|
{
|
||||||
|
child.Dispose ();
|
||||||
|
}
|
||||||
|
Children.Clear ();
|
||||||
|
Parent = null;
|
||||||
|
Children = null;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 树根节点
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class TreeRoot: TreeNode
|
||||||
|
{
|
||||||
|
public TreeRoot ()
|
||||||
|
: base ("Root", "")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,8 +10,8 @@ namespace PriFileFormat
|
|||||||
public HierarchicalSchemaVersionInfo Version { get; private set; }
|
public HierarchicalSchemaVersionInfo Version { get; private set; }
|
||||||
public string UniqueName { get; private set; }
|
public string UniqueName { get; private set; }
|
||||||
public string Name { get; private set; }
|
public string Name { get; private set; }
|
||||||
public IReadOnlyList<ResourceMapScope> Scopes { get; private set; }
|
public IReadOnlyList <ResourceMapScope> Scopes { get; private set; }
|
||||||
public IReadOnlyList<ResourceMapItem> Items { get; private set; }
|
public IReadOnlyList <ResourceMapItem> Items { get; private set; }
|
||||||
bool extendedVersion;
|
bool extendedVersion;
|
||||||
internal const string Identifier1 = "[mrm_hschema] \0";
|
internal const string Identifier1 = "[mrm_hschema] \0";
|
||||||
internal const string Identifier2 = "[mrm_hschemaex] ";
|
internal const string Identifier2 = "[mrm_hschemaex] ";
|
||||||
@@ -64,7 +64,7 @@ namespace PriFileFormat
|
|||||||
uint unicodeDataLength = binaryReader.ReadUInt32 ();
|
uint unicodeDataLength = binaryReader.ReadUInt32 ();
|
||||||
binaryReader.ReadUInt32 (); // meaning unknown
|
binaryReader.ReadUInt32 (); // meaning unknown
|
||||||
if (extendedHNames) binaryReader.ReadUInt32 (); // meaning unknown
|
if (extendedHNames) binaryReader.ReadUInt32 (); // meaning unknown
|
||||||
List<ScopeAndItemInfo> scopeAndItemInfos = new List<ScopeAndItemInfo> ((int)(numScopes + numItems));
|
List <ScopeAndItemInfo> scopeAndItemInfos = new List<ScopeAndItemInfo> ((int)(numScopes + numItems));
|
||||||
for (int i = 0; i < numScopes + numItems; i++)
|
for (int i = 0; i < numScopes + numItems; i++)
|
||||||
{
|
{
|
||||||
ushort parent = binaryReader.ReadUInt16 ();
|
ushort parent = binaryReader.ReadUInt16 ();
|
||||||
@@ -78,7 +78,7 @@ namespace PriFileFormat
|
|||||||
bool nameInAscii = (flags & 0x20) != 0;
|
bool nameInAscii = (flags & 0x20) != 0;
|
||||||
scopeAndItemInfos.Add (new ScopeAndItemInfo (parent, fullPathLength, isScope, nameInAscii, nameOffset, index));
|
scopeAndItemInfos.Add (new ScopeAndItemInfo (parent, fullPathLength, isScope, nameInAscii, nameOffset, index));
|
||||||
}
|
}
|
||||||
List<ScopeExInfo> scopeExInfos = new List<ScopeExInfo> ((int)numScopes);
|
List <ScopeExInfo> scopeExInfos = new List <ScopeExInfo> ((int)numScopes);
|
||||||
for (int i = 0; i < numScopes; i++)
|
for (int i = 0; i < numScopes; i++)
|
||||||
{
|
{
|
||||||
ushort scopeIndex = binaryReader.ReadUInt16 ();
|
ushort scopeIndex = binaryReader.ReadUInt16 ();
|
||||||
@@ -127,7 +127,7 @@ namespace PriFileFormat
|
|||||||
}
|
}
|
||||||
for (int i = 0; i < numScopes; i++)
|
for (int i = 0; i < numScopes; i++)
|
||||||
{
|
{
|
||||||
List<ResourceMapEntry> children = new List<ResourceMapEntry> (scopeExInfos [i].ChildCount);
|
List <ResourceMapEntry> children = new List<ResourceMapEntry> (scopeExInfos [i].ChildCount);
|
||||||
for (int j = 0; j < scopeExInfos [i].ChildCount; j++)
|
for (int j = 0; j < scopeExInfos [i].ChildCount; j++)
|
||||||
{
|
{
|
||||||
ScopeAndItemInfo saiInfo = scopeAndItemInfos [scopeExInfos [i].FirstChildIndex + j];
|
ScopeAndItemInfo saiInfo = scopeAndItemInfos [scopeExInfos [i].FirstChildIndex + j];
|
||||||
@@ -172,6 +172,18 @@ namespace PriFileFormat
|
|||||||
FirstChildIndex = firstChildIndex;
|
FirstChildIndex = firstChildIndex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
~HierarchicalSchemaSection ()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Version = null;
|
||||||
|
foreach (var item in Items) { item.Parent = null; }
|
||||||
|
foreach (var scope in Scopes) { scope.Parent = null; }
|
||||||
|
Scopes = null;
|
||||||
|
Items = null;
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
// Checksum computation is buggy for some files
|
// Checksum computation is buggy for some files
|
||||||
|
|
||||||
//private uint ComputeHierarchicalSchemaVersionInfoChecksum()
|
//private uint ComputeHierarchicalSchemaVersionInfoChecksum()
|
||||||
@@ -258,19 +270,21 @@ namespace PriFileFormat
|
|||||||
return fullName;
|
return fullName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
~ResourceMapEntry () { Parent = null; }
|
||||||
}
|
}
|
||||||
public class ResourceMapScope: ResourceMapEntry
|
public class ResourceMapScope: ResourceMapEntry
|
||||||
{
|
{
|
||||||
internal ResourceMapScope (ushort index, ResourceMapScope parent, string name) : base (index, parent, name) { }
|
internal ResourceMapScope (ushort index, ResourceMapScope parent, string name) : base (index, parent, name) {}
|
||||||
public IReadOnlyList<ResourceMapEntry> Children { get; internal set; }
|
public IReadOnlyList <ResourceMapEntry> Children { get; internal set; }
|
||||||
public override string ToString ()
|
public override string ToString ()
|
||||||
{
|
{
|
||||||
return $"Scope {Index} {FullName} ({Children.Count} children)";
|
return $"Scope {Index} {FullName} ({Children.Count} children)";
|
||||||
}
|
}
|
||||||
|
~ResourceMapScope () { Children = null; }
|
||||||
}
|
}
|
||||||
public class ResourceMapItem: ResourceMapEntry
|
public class ResourceMapItem: ResourceMapEntry
|
||||||
{
|
{
|
||||||
internal ResourceMapItem (ushort index, ResourceMapScope parent, string name) : base (index, parent, name) { }
|
internal ResourceMapItem (ushort index, ResourceMapScope parent, string name) : base (index, parent, name) {}
|
||||||
public override string ToString ()
|
public override string ToString ()
|
||||||
{
|
{
|
||||||
return $"Item {Index} {FullName}";
|
return $"Item {Index} {FullName}";
|
||||||
|
|||||||
@@ -46,6 +46,15 @@ namespace PriFileFormat
|
|||||||
DataItemSections = dataItemSections;
|
DataItemSections = dataItemSections;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
~PriDescriptorSection ()
|
||||||
|
{
|
||||||
|
HierarchicalSchemaSections = null;
|
||||||
|
DecisionInfoSections = null;
|
||||||
|
ResourceMapSections = null;
|
||||||
|
ReferencedFileSections = null;
|
||||||
|
DataItemSections = null;
|
||||||
|
PrimaryResourceMapSection = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
[Flags]
|
[Flags]
|
||||||
public enum PriDescriptorFlags: ushort
|
public enum PriDescriptorFlags: ushort
|
||||||
|
|||||||
@@ -6,12 +6,14 @@ using System;
|
|||||||
|
|
||||||
namespace PriFileFormat
|
namespace PriFileFormat
|
||||||
{
|
{
|
||||||
public class PriFile
|
public class PriFile: IDisposable
|
||||||
{
|
{
|
||||||
public string Version { get; private set; }
|
public string Version { get; private set; }
|
||||||
public uint TotalFileSize { get; private set; }
|
public uint TotalFileSize { get; private set; }
|
||||||
public IReadOnlyList <TocEntry> TableOfContents { get; private set; }
|
public IReadOnlyList <TocEntry> TableOfContents { get; private set; }
|
||||||
public IReadOnlyList <Section> Sections { get; private set; }
|
public IReadOnlyList <Section> Sections { get; private set; }
|
||||||
|
private bool _disposed = false;
|
||||||
|
private Stream _internalStream; // 跟踪内部流
|
||||||
private PriFile ()
|
private PriFile ()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -35,6 +37,7 @@ namespace PriFileFormat
|
|||||||
|
|
||||||
private void ParseInternal (Stream stream, bool ownStream)
|
private void ParseInternal (Stream stream, bool ownStream)
|
||||||
{
|
{
|
||||||
|
if (ownStream) { _internalStream = stream; }
|
||||||
using (BinaryReader binaryReader = new BinaryReader (stream, Encoding.ASCII, true))
|
using (BinaryReader binaryReader = new BinaryReader (stream, Encoding.ASCII, true))
|
||||||
{
|
{
|
||||||
long fileStartOffset = binaryReader.BaseStream.Position;
|
long fileStartOffset = binaryReader.BaseStream.Position;
|
||||||
@@ -109,6 +112,48 @@ namespace PriFileFormat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Dispose ()
|
||||||
|
{
|
||||||
|
Dispose (true);
|
||||||
|
GC.SuppressFinalize (this);
|
||||||
|
}
|
||||||
|
protected virtual void Dispose (bool disposing)
|
||||||
|
{
|
||||||
|
if (_disposed) return;
|
||||||
|
if (disposing)
|
||||||
|
{
|
||||||
|
// 释放托管资源
|
||||||
|
if (_internalStream != null)
|
||||||
|
{
|
||||||
|
_internalStream.Dispose ();
|
||||||
|
_internalStream = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 释放 section 内容
|
||||||
|
if (Sections != null)
|
||||||
|
{
|
||||||
|
foreach (var section in Sections)
|
||||||
|
{
|
||||||
|
var unknown = section as UnknownSection;
|
||||||
|
if (unknown != null)
|
||||||
|
unknown.ClearContent ();
|
||||||
|
|
||||||
|
var dataSection = section as DataItemSection;
|
||||||
|
if (dataSection != null)
|
||||||
|
dataSection.ClearData ();
|
||||||
|
}
|
||||||
|
Sections = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_disposed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
~PriFile ()
|
||||||
|
{
|
||||||
|
Dispose (false);
|
||||||
|
}
|
||||||
|
|
||||||
PriDescriptorSection priDescriptorSection;
|
PriDescriptorSection priDescriptorSection;
|
||||||
|
|
||||||
public PriDescriptorSection PriDescriptorSection
|
public PriDescriptorSection PriDescriptorSection
|
||||||
|
|||||||
@@ -121,6 +121,11 @@ namespace PriFileFormat
|
|||||||
FileNameOffset = fileNameOffset;
|
FileNameOffset = fileNameOffset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
~ReferencedFileSection ()
|
||||||
|
{
|
||||||
|
foreach (var file in ReferencedFiles) { file.Parent = null; }
|
||||||
|
ReferencedFiles = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public class ReferencedEntry
|
public class ReferencedEntry
|
||||||
{
|
{
|
||||||
@@ -145,11 +150,13 @@ namespace PriFileFormat
|
|||||||
return fullName;
|
return fullName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
~ReferencedEntry () { Parent = null; }
|
||||||
}
|
}
|
||||||
public class ReferencedFolder: ReferencedEntry
|
public class ReferencedFolder: ReferencedEntry
|
||||||
{
|
{
|
||||||
internal ReferencedFolder (ReferencedFolder parent, string name) : base (parent, name) {}
|
internal ReferencedFolder (ReferencedFolder parent, string name) : base (parent, name) {}
|
||||||
public IReadOnlyList<ReferencedEntry> Children { get; internal set; }
|
public IReadOnlyList<ReferencedEntry> Children { get; internal set; }
|
||||||
|
~ReferencedFolder () { Children = null; }
|
||||||
}
|
}
|
||||||
public class ReferencedFile: ReferencedEntry
|
public class ReferencedFile: ReferencedEntry
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -296,6 +296,11 @@ namespace PriFileFormat
|
|||||||
DataOffset = dataOffset;
|
DataOffset = dataOffset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
~ResourceMapSection ()
|
||||||
|
{
|
||||||
|
HierarchicalSchemaReference = null;
|
||||||
|
CandidateSets = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public enum ResourceValueType
|
public enum ResourceValueType
|
||||||
{
|
{
|
||||||
@@ -318,6 +323,10 @@ namespace PriFileFormat
|
|||||||
DecisionIndex = decisionIndex;
|
DecisionIndex = decisionIndex;
|
||||||
Candidates = candidates;
|
Candidates = candidates;
|
||||||
}
|
}
|
||||||
|
~CandidateSet ()
|
||||||
|
{
|
||||||
|
Candidates = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Candidate
|
public class Candidate
|
||||||
@@ -343,6 +352,12 @@ namespace PriFileFormat
|
|||||||
DataItem = null;
|
DataItem = null;
|
||||||
Data = data;
|
Data = data;
|
||||||
}
|
}
|
||||||
|
~Candidate ()
|
||||||
|
{
|
||||||
|
SourceFile = null;
|
||||||
|
DataItem = null;
|
||||||
|
Data = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public class HierarchicalSchemaReference
|
public class HierarchicalSchemaReference
|
||||||
{
|
{
|
||||||
@@ -357,6 +372,10 @@ namespace PriFileFormat
|
|||||||
Unknown2 = unknown2;
|
Unknown2 = unknown2;
|
||||||
UniqueName = uniqueName;
|
UniqueName = uniqueName;
|
||||||
}
|
}
|
||||||
|
~HierarchicalSchemaReference ()
|
||||||
|
{
|
||||||
|
VersionInfo = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public struct ResourceMapItemRef
|
public struct ResourceMapItemRef
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -148,6 +148,12 @@ namespace PriFileFormat
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
~ReverseMapSection ()
|
||||||
|
{
|
||||||
|
Mapping = null;
|
||||||
|
Scopes = null;
|
||||||
|
Items = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,5 +81,9 @@ namespace PriFileFormat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
~Section ()
|
||||||
|
{
|
||||||
|
PriFile = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,10 +71,6 @@ namespace PriFileFormat
|
|||||||
throw new NotSupportedException ();
|
throw new NotSupportedException ();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Close ()
|
~SubStream () { baseStream = null; }
|
||||||
{
|
|
||||||
base.Close ();
|
|
||||||
baseStream = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,5 +18,6 @@ namespace PriFileFormat
|
|||||||
{
|
{
|
||||||
SectionContent = null;
|
SectionContent = null;
|
||||||
}
|
}
|
||||||
|
~UnknownSection () { ClearContent (); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
<p>Download the latest release from the Releases section.</p>
|
<p>Download the latest release from the Releases section.</p>
|
||||||
<a href="https://github.com/modernw/App-Installer-For-Windows-8.x-Reset/releases" target="_blank"><img src="https://img.shields.io/github/v/release/modernw/App-Installer-For-Windows-8.x-Reset"></a>
|
<a href="https://github.com/modernw/App-Installer-For-Windows-8.x-Reset/releases" target="_blank"><img src="https://img.shields.io/github/v/release/modernw/App-Installer-For-Windows-8.x-Reset"></a>
|
||||||
<p>Note: There is no official release yet, but the test version still does not have the Pre-released label; this is for testing upgrade functionality. Once the official release is complete, previous versions will be marked as Pre-released.</p>
|
<p>Note: There is no official release yet, but the test version still does not have the Pre-released label; this is for testing upgrade functionality. Once the official release is complete, previous versions will be marked as Pre-released.</p>
|
||||||
|
<p>Note 2: Ensure that .NET Framework 4.6 is installed on your computer, as the runtime libraries automatically installed by the installer may not actually be installed on your system. Therefore, after completing the installation via the installer, be sure to download and run the .NET Framework 4.6 runtime library installer again.</p>
|
||||||
|
<p>Note 3: The x86 runtime library must be installed, as the program itself is compiled for the x86 architecture. (Unless the program is compiled for the ARM architecture, in which case the ARM runtime library must be installed.)</p>
|
||||||
|
<a href="https://github.com/modernw/App-Installer-For-Windows-8.x-Reset/releases/tag/0.0.0.0" target="blank">Download Runtime Libraries</a><br>
|
||||||
|
<a href="https://github.com/modernw/App-Installer-For-Windows-8.x-Reset/releases/download/0.0.0.1/depsinstaller.zip" target="blank">Download Dependencies for Metro Apps</a>
|
||||||
<h2>Attention</h2>
|
<h2>Attention</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li><del>This program is an x86 program, not an ARM application, not cross-platform, and cannot be used on Windows RT.</del></li>
|
<li><del>This program is an x86 program, not an ARM application, not cross-platform, and cannot be used on Windows RT.</del></li>
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ typedef class prifile
|
|||||||
{
|
{
|
||||||
LPWSTR lpstr = nullptr;
|
LPWSTR lpstr = nullptr;
|
||||||
reltask release ([&lpstr] () {
|
reltask release ([&lpstr] () {
|
||||||
if (lpstr) free (lpstr);
|
if (lpstr) PriFormatFreeString (lpstr);
|
||||||
lpstr = nullptr;
|
lpstr = nullptr;
|
||||||
});
|
});
|
||||||
lpstr = GetPriResource (m_hPriFile, resname.c_str ());
|
lpstr = GetPriResource (m_hPriFile, resname.c_str ());
|
||||||
|
|||||||
@@ -127,6 +127,7 @@
|
|||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PRIFORMATCLI_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PRIFORMATCLI_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
|||||||
@@ -264,7 +264,7 @@
|
|||||||
<span class="support" data-res-byname="IDS_PREINSTALL_SUPPOS"></span>
|
<span class="support" data-res-byname="IDS_PREINSTALL_SUPPOS"></span>
|
||||||
<span class="not-support" data-res-byname="IDS_PREINSTALL_NOSUPPOS"></span>
|
<span class="not-support" data-res-byname="IDS_PREINSTALL_NOSUPPOS"></span>
|
||||||
</p>
|
</p>
|
||||||
<br id="newline-divide" />
|
<br />
|
||||||
<p class="pkgfunctions-label" data-res-byname="IDS_FUNCTIONNAME"></p>
|
<p class="pkgfunctions-label" data-res-byname="IDS_FUNCTIONNAME"></p>
|
||||||
<div class="functions">
|
<div class="functions">
|
||||||
<ul>
|
<ul>
|
||||||
@@ -394,27 +394,6 @@
|
|||||||
<p data-res-byname="IDS_FAILED_REASONNAME"></p>
|
<p data-res-byname="IDS_FAILED_REASONNAME"></p>
|
||||||
<textarea class="win-textarea" readonly></textarea>
|
<textarea class="win-textarea" readonly></textarea>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
|
||||||
(function(global) {
|
|
||||||
var pageContainerPage = document.getElementById("page-container").querySelector(".page");
|
|
||||||
var pkgversion = pageContainerPage.querySelector(".pkgversion");
|
|
||||||
var reason = document.querySelector(".reason.installfailed");
|
|
||||||
var reasonTextArea = reason.querySelector("textarea");
|
|
||||||
var reasonLabel = reason.querySelector("p");
|
|
||||||
var eventutils = Windows.UI.Event.Util;
|
|
||||||
var eventmonitor = Windows.UI.Event.Monitor;
|
|
||||||
|
|
||||||
function resizeAndPositionEvent(e) {
|
|
||||||
reason.style.height = "";
|
|
||||||
var controlsContainer = pageContainerPage.querySelector(".controls");
|
|
||||||
var maxHeight = pageContainerPage.getBoundingClientRect().height - pkgversion.getBoundingClientRect().top - pkgversion.getBoundingClientRect().height * 2 - controlsContainer.getBoundingClientRect().height;
|
|
||||||
var suitHeight = reasonTextArea.offsetTop + reasonTextArea.scrollHeight;
|
|
||||||
reason.style.height = parseInt(Math.min(maxHeight, suitHeight)) + "px";
|
|
||||||
}
|
|
||||||
eventmonitor.observe(pkgversion, "position", resizeAndPositionEvent);
|
|
||||||
eventmonitor.observe(pageContainerPage, "resize", resizeAndPositionEvent);
|
|
||||||
})(this);
|
|
||||||
</script>
|
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<input type="checkbox" id="preinst-enablelaunch" class="win-checkbox" style="margin-left: 0;">
|
<input type="checkbox" id="preinst-enablelaunch" class="win-checkbox" style="margin-left: 0;">
|
||||||
|
|||||||
@@ -128,3 +128,10 @@
|
|||||||
.win-contentdialog.win-ui-dark .win-contentdialog-dialog {
|
.win-contentdialog.win-ui-dark .win-contentdialog-dialog {
|
||||||
background-color: rgb(31, 0, 104);
|
background-color: rgb(31, 0, 104);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.win-ui-dark .win-contentdialog .win-contentdialog-dialog button[type=submit],
|
||||||
|
.win-contentdialog.win-ui-dark .win-contentdialog-dialog button[type=submit],
|
||||||
|
.win-ui-dark .win-contentdialog .win-contentdialog-dialog input[type=submit],
|
||||||
|
.win-contentdialog.win-ui-dark .win-contentdialog-dialog input[type=submit] {
|
||||||
|
border-color: white;
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
This library is supported for use in Windows Store apps only.
|
This library is supported for use in Windows Store apps only.
|
||||||
|
|
||||||
Build: 1.0.9200.20602.win8_ldr.130108-1504
|
Build: 1.0.9200.20789.win8_ldr.130802-2151
|
||||||
|
|
||||||
Version: Microsoft.WinJS.1.0
|
Version: Microsoft.WinJS.1.0
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
This library is supported for use in Windows Store apps only.
|
This library is supported for use in Windows Store apps only.
|
||||||
|
|
||||||
Build: 1.0.9200.20602.win8_ldr.130108-1504
|
Build: 1.0.9200.20789.win8_ldr.130802-2151
|
||||||
|
|
||||||
Version: Microsoft.WinJS.1.0
|
Version: Microsoft.WinJS.1.0
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
This library is supported for use in Windows Store apps only.
|
This library is supported for use in Windows Store apps only.
|
||||||
|
|
||||||
Build: 1.0.9200.20602.win8_ldr.130108-1504
|
Build: 1.0.9200.20789.win8_ldr.130802-2151
|
||||||
|
|
||||||
Version: Microsoft.WinJS.1.0
|
Version: Microsoft.WinJS.1.0
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
This library is supported for use in Windows Store apps only.
|
This library is supported for use in Windows Store apps only.
|
||||||
|
|
||||||
Build: 1.0.9200.20602.win8_ldr.130108-1504
|
Build: 1.0.9200.20789.win8_ldr.130802-2151
|
||||||
|
|
||||||
Version: Microsoft.WinJS.1.0
|
Version: Microsoft.WinJS.1.0
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
This library is supported for use in Windows Store apps only.
|
This library is supported for use in Windows Store apps only.
|
||||||
|
|
||||||
Build: 1.0.9200.20602.win8_ldr.130108-1504
|
Build: 1.0.9200.20789.win8_ldr.130802-2151
|
||||||
|
|
||||||
Version: Microsoft.WinJS.1.0
|
Version: Microsoft.WinJS.1.0
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
This library is supported for use in Windows Store apps only.
|
This library is supported for use in Windows Store apps only.
|
||||||
|
|
||||||
Build: 1.0.9200.20602.win8_ldr.130108-1504
|
Build: 1.0.9200.20789.win8_ldr.130802-2151
|
||||||
|
|
||||||
Version: Microsoft.WinJS.1.0
|
Version: Microsoft.WinJS.1.0
|
||||||
*/
|
*/
|
||||||
@@ -12320,7 +12320,7 @@ WinJS.Namespace.define("WinJS.UI", {
|
|||||||
|
|
||||||
var animations = WinJS.UI.Animation;
|
var animations = WinJS.UI.Animation;
|
||||||
|
|
||||||
var leftBufferAmount = 500,
|
var leftBufferAmount = 50,
|
||||||
itemSelectedEventDelay = 250;
|
itemSelectedEventDelay = 250;
|
||||||
|
|
||||||
var strings = {
|
var strings = {
|
||||||
@@ -12401,8 +12401,9 @@ WinJS.Namespace.define("WinJS.UI", {
|
|||||||
}, true);
|
}, true);
|
||||||
this._panningDivContainer.addEventListener("MSManipulationStateChanged", function (event) {
|
this._panningDivContainer.addEventListener("MSManipulationStateChanged", function (event) {
|
||||||
that._manipulationState = event.currentState;
|
that._manipulationState = event.currentState;
|
||||||
if (event.currentState === 0) {
|
if (event.currentState === 0 && event.srcElement === that._panningDivContainer) {
|
||||||
that._itemSettledOn();
|
that._itemSettledOn();
|
||||||
|
that._ensureCentered();
|
||||||
}
|
}
|
||||||
}, true);
|
}, true);
|
||||||
},
|
},
|
||||||
|
|||||||
Binary file not shown.
@@ -568,12 +568,12 @@ We will use default encoding.]]></lang>
|
|||||||
<lang name="zh-CN"><![CDATA[异常 {0}:
|
<lang name="zh-CN"><![CDATA[异常 {0}:
|
||||||
信息:
|
信息:
|
||||||
{1}
|
{1}
|
||||||
堆栈回溯:
|
堆栈轨迹:
|
||||||
{2}]]></lang>
|
{2}]]></lang>
|
||||||
<lang name="en-US"><![CDATA[Exception {0}:
|
<lang name="en-US"><![CDATA[Exception {0}:
|
||||||
Message:
|
Message:
|
||||||
{1}
|
{1}
|
||||||
Stack Trace:
|
Stack:
|
||||||
{2}]]></lang>
|
{2}]]></lang>
|
||||||
</resource>
|
</resource>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -1 +1 @@
|
|||||||
0.3.1.5
|
0.3.1.7
|
||||||
Reference in New Issue
Block a user