Merge branch 'modernw:master' into master

This commit is contained in:
冰糖XH
2026-04-10 23:01:59 +08:00
committed by GitHub
28 changed files with 373 additions and 65 deletions

BIN
Debug.7z

Binary file not shown.

View File

@@ -115,10 +115,10 @@
this.label1.AutoSize = true;
this.tableLayoutPanel1.SetColumnSpan(this.label1, 5);
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.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.Text = "Create Desktop Shortcut";
//
@@ -127,7 +127,7 @@
this.label2.AutoSize = true;
this.tableLayoutPanel1.SetColumnSpan(this.label2, 5);
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.Size = new System.Drawing.Size(727, 60);
this.label2.TabIndex = 1;
@@ -147,7 +147,7 @@
this.tableLayoutPanel2.Controls.Add(this.label7, 0, 8);
this.tableLayoutPanel2.Controls.Add(this.customIconDisplay, 0, 9);
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.RowCount = 10;
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, 18F));
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;
//
// label3
@@ -251,7 +251,7 @@
this.customIconDisplay.Dock = System.Windows.Forms.DockStyle.Fill;
this.customIconDisplay.Location = new System.Drawing.Point(3, 230);
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.TabStop = false;
//
@@ -273,7 +273,7 @@
this.tableLayoutPanel3.Controls.Add(this.label12, 0, 9);
this.tableLayoutPanel3.Controls.Add(this.shortcutNameInput, 0, 10);
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.RowCount = 11;
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());
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;
//
// label5
@@ -476,14 +476,14 @@
this.tableLayoutPanel4.Controls.Add(this.imageSizeList, 0, 1);
this.tableLayoutPanel4.Controls.Add(this.imagesPreview, 0, 3);
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.RowCount = 4;
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());
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;
//
// label8
@@ -500,7 +500,7 @@
//
this.label9.AutoSize = true;
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.Size = new System.Drawing.Size(229, 20);
this.label9.TabIndex = 1;
@@ -516,7 +516,7 @@
this.imageSizeList.Location = new System.Drawing.Point(3, 23);
this.imageSizeList.Name = "imageSizeList";
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.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.imageSizeList_CellDoubleClick);
//
@@ -536,7 +536,7 @@
this.imagesPreview.AutoScroll = true;
this.imagesPreview.Dock = System.Windows.Forms.DockStyle.Fill;
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.Size = new System.Drawing.Size(229, 136);
this.imagesPreview.TabIndex = 3;

View File

@@ -17,15 +17,15 @@ namespace PriFileFormat
}
public override bool CanRead
{
get { return comStream != null; }
get { return true; }
}
public override bool CanSeek
{
get { return comStream != null; }
get { return true; }
}
public override bool CanWrite
{
get { return comStream != null; }
get { return true; }
}
public override long Length
{
@@ -144,8 +144,9 @@ namespace PriFileFormat
}
public override void Close ()
{
base.Close ();
comStream = null;
base.Close ();
}
~ComStreamWrapper () { comStream = null;}
}
}

View File

@@ -48,6 +48,7 @@ namespace PriFileFormat
_dataItems?.Clear ();
_dataItems = null;
}
~DataItemSection () { ClearData (); }
}
public struct DataItemRef

213
PriFileFormat/DataTree.cs Normal file
View 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", "")
{
}
}
}

View File

@@ -10,8 +10,8 @@ namespace PriFileFormat
public HierarchicalSchemaVersionInfo Version { get; private set; }
public string UniqueName { get; private set; }
public string Name { get; private set; }
public IReadOnlyList<ResourceMapScope> Scopes { get; private set; }
public IReadOnlyList<ResourceMapItem> Items { get; private set; }
public IReadOnlyList <ResourceMapScope> Scopes { get; private set; }
public IReadOnlyList <ResourceMapItem> Items { get; private set; }
bool extendedVersion;
internal const string Identifier1 = "[mrm_hschema] \0";
internal const string Identifier2 = "[mrm_hschemaex] ";
@@ -64,7 +64,7 @@ namespace PriFileFormat
uint unicodeDataLength = binaryReader.ReadUInt32 ();
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++)
{
ushort parent = binaryReader.ReadUInt16 ();
@@ -78,7 +78,7 @@ namespace PriFileFormat
bool nameInAscii = (flags & 0x20) != 0;
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++)
{
ushort scopeIndex = binaryReader.ReadUInt16 ();
@@ -127,7 +127,7 @@ namespace PriFileFormat
}
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++)
{
ScopeAndItemInfo saiInfo = scopeAndItemInfos [scopeExInfos [i].FirstChildIndex + j];
@@ -172,6 +172,18 @@ namespace PriFileFormat
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
//private uint ComputeHierarchicalSchemaVersionInfoChecksum()
@@ -258,19 +270,21 @@ namespace PriFileFormat
return fullName;
}
}
~ResourceMapEntry () { Parent = null; }
}
public class ResourceMapScope: ResourceMapEntry
{
internal ResourceMapScope (ushort index, ResourceMapScope parent, string name) : base (index, parent, name) { }
public IReadOnlyList<ResourceMapEntry> Children { get; internal set; }
internal ResourceMapScope (ushort index, ResourceMapScope parent, string name) : base (index, parent, name) {}
public IReadOnlyList <ResourceMapEntry> Children { get; internal set; }
public override string ToString ()
{
return $"Scope {Index} {FullName} ({Children.Count} children)";
}
~ResourceMapScope () { Children = null; }
}
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 ()
{
return $"Item {Index} {FullName}";

View File

@@ -46,6 +46,15 @@ namespace PriFileFormat
DataItemSections = dataItemSections;
return true;
}
~PriDescriptorSection ()
{
HierarchicalSchemaSections = null;
DecisionInfoSections = null;
ResourceMapSections = null;
ReferencedFileSections = null;
DataItemSections = null;
PrimaryResourceMapSection = null;
}
}
[Flags]
public enum PriDescriptorFlags: ushort

View File

@@ -6,12 +6,14 @@ using System;
namespace PriFileFormat
{
public class PriFile
public class PriFile: IDisposable
{
public string Version { get; private set; }
public uint TotalFileSize { get; private set; }
public IReadOnlyList <TocEntry> TableOfContents { get; private set; }
public IReadOnlyList <Section> Sections { get; private set; }
private bool _disposed = false;
private Stream _internalStream; // 跟踪内部流
private PriFile ()
{
}
@@ -35,6 +37,7 @@ namespace PriFileFormat
private void ParseInternal (Stream stream, bool ownStream)
{
if (ownStream) { _internalStream = stream; }
using (BinaryReader binaryReader = new BinaryReader (stream, Encoding.ASCII, true))
{
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;
public PriDescriptorSection PriDescriptorSection

View File

@@ -121,6 +121,11 @@ namespace PriFileFormat
FileNameOffset = fileNameOffset;
}
}
~ReferencedFileSection ()
{
foreach (var file in ReferencedFiles) { file.Parent = null; }
ReferencedFiles = null;
}
}
public class ReferencedEntry
{
@@ -145,11 +150,13 @@ namespace PriFileFormat
return fullName;
}
}
~ReferencedEntry () { Parent = null; }
}
public class ReferencedFolder: ReferencedEntry
{
internal ReferencedFolder (ReferencedFolder parent, string name) : base (parent, name) {}
public IReadOnlyList<ReferencedEntry> Children { get; internal set; }
~ReferencedFolder () { Children = null; }
}
public class ReferencedFile: ReferencedEntry
{

View File

@@ -296,6 +296,11 @@ namespace PriFileFormat
DataOffset = dataOffset;
}
}
~ResourceMapSection ()
{
HierarchicalSchemaReference = null;
CandidateSets = null;
}
}
public enum ResourceValueType
{
@@ -318,6 +323,10 @@ namespace PriFileFormat
DecisionIndex = decisionIndex;
Candidates = candidates;
}
~CandidateSet ()
{
Candidates = null;
}
}
public class Candidate
@@ -343,6 +352,12 @@ namespace PriFileFormat
DataItem = null;
Data = data;
}
~Candidate ()
{
SourceFile = null;
DataItem = null;
Data = null;
}
}
public class HierarchicalSchemaReference
{
@@ -357,6 +372,10 @@ namespace PriFileFormat
Unknown2 = unknown2;
UniqueName = uniqueName;
}
~HierarchicalSchemaReference ()
{
VersionInfo = null;
}
}
public struct ResourceMapItemRef
{

View File

@@ -148,6 +148,12 @@ namespace PriFileFormat
return true;
}
~ReverseMapSection ()
{
Mapping = null;
Scopes = null;
Items = null;
}
}
}

View File

@@ -81,5 +81,9 @@ namespace PriFileFormat
}
}
~Section ()
{
PriFile = null;
}
}
}

View File

@@ -71,10 +71,6 @@ namespace PriFileFormat
throw new NotSupportedException ();
}
public override void Close ()
{
base.Close ();
baseStream = null;
}
~SubStream () { baseStream = null; }
}
}

View File

@@ -18,5 +18,6 @@ namespace PriFileFormat
{
SectionContent = null;
}
~UnknownSection () { ClearContent (); }
}
}

View File

@@ -12,6 +12,10 @@
<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>
<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>
<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>

View File

@@ -224,7 +224,7 @@ typedef class prifile
{
LPWSTR lpstr = nullptr;
reltask release ([&lpstr] () {
if (lpstr) free (lpstr);
if (lpstr) PriFormatFreeString (lpstr);
lpstr = nullptr;
});
lpstr = GetPriResource (m_hPriFile, resname.c_str ());

View File

@@ -127,6 +127,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PRIFORMATCLI_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<WholeProgramOptimization>true</WholeProgramOptimization>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>

View File

@@ -264,7 +264,7 @@
<span class="support" data-res-byname="IDS_PREINSTALL_SUPPOS"></span>
<span class="not-support" data-res-byname="IDS_PREINSTALL_NOSUPPOS"></span>
</p>
<br id="newline-divide" />
<br />
<p class="pkgfunctions-label" data-res-byname="IDS_FUNCTIONNAME"></p>
<div class="functions">
<ul>
@@ -394,27 +394,6 @@
<p data-res-byname="IDS_FAILED_REASONNAME"></p>
<textarea class="win-textarea" readonly></textarea>
</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="checkbox">
<input type="checkbox" id="preinst-enablelaunch" class="win-checkbox" style="margin-left: 0;">

View File

@@ -127,4 +127,11 @@
.win-ui-dark .win-contentdialog .win-contentdialog-dialog,
.win-contentdialog.win-ui-dark .win-contentdialog-dialog {
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;
}

View File

@@ -3,7 +3,7 @@
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
*/

View File

@@ -3,7 +3,7 @@
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
*/

View File

@@ -4,7 +4,7 @@
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
*/

View File

@@ -4,7 +4,7 @@
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
*/

View File

@@ -4,7 +4,7 @@
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
*/

View File

@@ -4,7 +4,7 @@
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
*/
@@ -12320,7 +12320,7 @@ WinJS.Namespace.define("WinJS.UI", {
var animations = WinJS.UI.Animation;
var leftBufferAmount = 500,
var leftBufferAmount = 50,
itemSelectedEventDelay = 250;
var strings = {
@@ -12401,8 +12401,9 @@ WinJS.Namespace.define("WinJS.UI", {
}, true);
this._panningDivContainer.addEventListener("MSManipulationStateChanged", function (event) {
that._manipulationState = event.currentState;
if (event.currentState === 0) {
if (event.currentState === 0 && event.srcElement === that._panningDivContainer) {
that._itemSettledOn();
that._ensureCentered();
}
}, true);
},

Binary file not shown.

View File

@@ -568,12 +568,12 @@ We will use default encoding.]]></lang>
<lang name="zh-CN"><![CDATA[异常 {0}:
信息:
{1}
堆栈回溯
堆栈轨迹
{2}]]></lang>
<lang name="en-US"><![CDATA[Exception {0}:
Message:
{1}
Stack Trace:
Stack:
{2}]]></lang>
</resource>
</resources>

View File

@@ -1 +1 @@
0.3.1.5
0.3.1.7