mirror of
https://github.com/modernw/App-Installer-For-Windows-8.x-Reset.git
synced 2026-06-17 12:50:09 +10:00
Update Shell and Fix Bugs
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>App Installer Settings</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<script type="text/javascript" src="../../js/module.js"></script>
|
||||
<script type="text/javascript" src="../../js/polyfill-ie.js"></script>
|
||||
<link rel="stylesheet" href="../../libs/winjs/2.0/css/ui-light.css" id="winjs-style">
|
||||
<script type="text/javascript" src="../../libs/winjs/1.0/js/base.js"></script>
|
||||
<script type="text/javascript" src="../../libs/winjs/1.0/js/ui.js"></script>
|
||||
<script type="text/javascript" src="../../js/color.js"></script>
|
||||
<script type="text/javascript" src="../../js/promise.js"></script>
|
||||
<script type="text/javascript" src="../../js/bridge.js"></script>
|
||||
<script type="text/javascript" src="../../js/dpimodes.js"></script>
|
||||
<script type="text/javascript" src="../../js/resources.js"></script>
|
||||
<script type="text/javascript" src="../../js/animation.js"></script>
|
||||
<link rel="stylesheet" href="../../fonts/fonts.css">
|
||||
<script type="text/javascript" src="../../js/event.js"></script>
|
||||
<script type="text/javascript" src="../../js/tileback.js"></script>
|
||||
<script type="text/javascript" src="../../js/load.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../../libs/msgbox/msgbox.css">
|
||||
<script type="text/javascript" src="../../libs/msgbox/msgbox.js"></script>
|
||||
<script type="text/javascript" src="../../js/init.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../page.css">
|
||||
<link rel="stylesheet" type="text/css" href="../subpage.css">
|
||||
<script type="text/javascript" src="preinit.js"></script>
|
||||
<script type="text/javascript" src="initsame.js"></script>
|
||||
<script>
|
||||
try {
|
||||
window.parent.setItemHighlight("about");
|
||||
} catch (e) {}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="pagecontainer full pagesection">
|
||||
<div class="section padding">
|
||||
<h2 data-res-fromfile="publicRes(124)"></h2>
|
||||
<p data-res-fromfile="getFileResPair(exepath, 300)"></p>
|
||||
<p style="white-space: pre-wrap;"><span data-res-fromfile="publicRes (130)"></span>	<span id="current-version"></span></p>
|
||||
<script>
|
||||
try {
|
||||
var storage = Bridge.External.Storage;
|
||||
var path = storage.path;
|
||||
var versionFilePath = path.combine(path.root, "version");
|
||||
var versionFile = storage.getFile(versionFilePath);
|
||||
window.currver = versionFile.content;
|
||||
} catch (e) {
|
||||
window.currver = "0.0.0.1";
|
||||
}
|
||||
document.getElementById("current-version").textContent = window.currver;
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,166 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>App Installer Settings</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<script type="text/javascript" src="../../js/module.js"></script>
|
||||
<script type="text/javascript" src="../../js/polyfill-ie.js"></script>
|
||||
<link rel="stylesheet" href="../../libs/winjs/2.0/css/ui-light.css" id="winjs-style">
|
||||
<script type="text/javascript" src="../../libs/winjs/1.0/js/base.js"></script>
|
||||
<script type="text/javascript" src="../../libs/winjs/1.0/js/ui.js"></script>
|
||||
<script type="text/javascript" src="../../js/color.js"></script>
|
||||
<script type="text/javascript" src="../../js/promise.js"></script>
|
||||
<script type="text/javascript" src="../../js/bridge.js"></script>
|
||||
<script type="text/javascript" src="../../js/dpimodes.js"></script>
|
||||
<script type="text/javascript" src="../../js/resources.js"></script>
|
||||
<script type="text/javascript" src="../../js/animation.js"></script>
|
||||
<link rel="stylesheet" href="../../fonts/fonts.css">
|
||||
<script type="text/javascript" src="../../js/event.js"></script>
|
||||
<script type="text/javascript" src="../../js/tileback.js"></script>
|
||||
<script type="text/javascript" src="../../js/load.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../../libs/msgbox/msgbox.css">
|
||||
<script type="text/javascript" src="../../libs/msgbox/msgbox.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../../libs/toggle/toggle.css">
|
||||
<script type="text/javascript" src="../../libs/toggle/toggle.js"></script>
|
||||
<script type="text/javascript" src="../../js/init.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../page.css">
|
||||
<link rel="stylesheet" type="text/css" href="../subpage.css">
|
||||
<script type="text/javascript" src="preinit.js"></script>
|
||||
<script type="text/javascript" src="initsame.js"></script>
|
||||
<script>
|
||||
try {
|
||||
window.parent.setItemHighlight("general");
|
||||
} catch (e) {}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="pagecontainer full pagesection">
|
||||
<div class="section padding">
|
||||
<h2 id="page-title" data-res-fromfile="publicRes (101)"></h2>
|
||||
<div class="win-settings-section">
|
||||
<br>
|
||||
<label class="win-label" for="save-wnd-size" id="save-wnd-size-label" data-res-fromfile="publicRes (125)"></label>
|
||||
<script>
|
||||
(function() {
|
||||
"use strict";
|
||||
var label = document.getElementById("save-wnd-size-label");
|
||||
var toggle = new Toggle();
|
||||
toggle.create();
|
||||
toggle.parent = label.parentNode;
|
||||
toggle.showlabel = true;
|
||||
var winjsres = Bridge.External.WinJsStringRes;
|
||||
toggle.setStatusText(winjsres.getString("ms-resource://Microsoft.WinJS.1.0/ui/on"), winjsres.getString("ms-resource://Microsoft.WinJS.1.0/ui/off"));
|
||||
toggle.inputId = "save-wnd-size";
|
||||
var ini = Bridge.External.Config.GetConfig();
|
||||
toggle.addEventListener("change", function() {
|
||||
ini.set("Settings", "AppInstaller:SavePosAndSizeBeforeCancel", toggle.checked);
|
||||
});
|
||||
toggle.checked = parseBool(ini.getSection("Settings").getKey("AppInstaller:SavePosAndSizeBeforeCancel").value);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
<div class="win-settings-section">
|
||||
<br>
|
||||
<label class="win-label" for="default-wndwidth" data-res-fromfile="publicRes(126)"></label><br>
|
||||
<input type="number" id="default-wndwidth" inputmode="numeric"><br><br>
|
||||
<label class="win-label" for="default-wndheight" data-res-fromfile="publicRes(127)"></label><br>
|
||||
<input type="number" id="default-wndheight" inputmode="numeric">
|
||||
<script>
|
||||
(function() {
|
||||
"use strict";
|
||||
var ini = Bridge.External.Config.GetConfig();
|
||||
var defWndWInput = document.getElementById("default-wndwidth");
|
||||
var defWndHInput = document.getElementById("default-wndheight");
|
||||
var setsect = ini.getSection("Settings");
|
||||
var defwk = setsect.getKey("AppInstaller:DefaultWidth");
|
||||
var defhk = setsect.getKey("AppInstaller:DefaultHeight");
|
||||
defWndWInput.value = defwk.value;
|
||||
defWndHInput.value = defhk.value;
|
||||
var eventutil = Windows.UI.Event.Util;
|
||||
|
||||
function inputDefaultWidthChangeEvent(e) {
|
||||
defwk.value = parseInt(defWndWInput.value);
|
||||
}
|
||||
|
||||
function inputDefaultHeightChangeEvent(e) {
|
||||
defhk.value = parseInt(defWndHInput.value);
|
||||
}
|
||||
var debounced_idwc = debounce(inputDefaultWidthChangeEvent, 500);
|
||||
var debounced_idhc = debounce(inputDefaultHeightChangeEvent, 500);
|
||||
eventutil.addEvent(defWndWInput, "input", debounced_idwc);
|
||||
eventutil.addEvent(defWndWInput, "propertychange", debounced_idwc);
|
||||
eventutil.addEvent(defWndWInput, "change", debounced_idwc);
|
||||
eventutil.addEvent(defWndHInput, "input", debounced_idhc);
|
||||
eventutil.addEvent(defWndHInput, "propertychange", debounced_idhc);
|
||||
eventutil.addEvent(defWndHInput, "change", debounced_idhc);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
<div class="win-settings-section">
|
||||
<br>
|
||||
<label class="win-label" for="min-wndwidth" data-res-fromfile="publicRes (128)"></label><br>
|
||||
<input type="number" id="min-wndwidth" inputmode="numeric"><br><br>
|
||||
<label class="win-label" for="min-wndheight" data-res-fromfile="publicRes (129)"></label><br>
|
||||
<input type="number" id="min-wndheight" inputmode="numeric">
|
||||
<script>
|
||||
(function() {
|
||||
"use strict";
|
||||
var ini = Bridge.External.Config.GetConfig();
|
||||
var minWndWInput = document.getElementById("min-wndwidth");
|
||||
var minWndHInput = document.getElementById("min-wndheight");
|
||||
var setsect = ini.getSection("Settings");
|
||||
var minwk = setsect.getKey("AppInstaller:MinimumWidth");
|
||||
var minhk = setsect.getKey("AppInstaller:MinimumHeight");
|
||||
minWndWInput.value = minwk.value;
|
||||
minWndHInput.value = minhk.value;
|
||||
var eventutil = Windows.UI.Event.Util;
|
||||
|
||||
function inputDefaultWidthChangeEvent(e) {
|
||||
minwk.value = parseInt(minWndWInput.value);
|
||||
}
|
||||
|
||||
function inputDefaultHeightChangeEvent(e) {
|
||||
minhk.value = parseInt(minWndHInput.value);
|
||||
}
|
||||
var debounced_idwc = debounce(inputDefaultWidthChangeEvent, 500);
|
||||
var debounced_idhc = debounce(inputDefaultHeightChangeEvent, 500);
|
||||
eventutil.addEvent(minWndWInput, "input", debounced_idwc);
|
||||
eventutil.addEvent(minWndWInput, "propertychange", debounced_idwc);
|
||||
eventutil.addEvent(minWndWInput, "change", debounced_idwc);
|
||||
eventutil.addEvent(minWndHInput, "input", debounced_idhc);
|
||||
eventutil.addEvent(minWndHInput, "propertychange", debounced_idhc);
|
||||
eventutil.addEvent(minWndHInput, "change", debounced_idhc);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
<div class="win-settings-section">
|
||||
<br>
|
||||
<label class="win-label" for="launch-when-ready" id="launch-when-ready-label" data-res-fromfile="getFileResPair(exepath, 330)"></label>
|
||||
<script>
|
||||
(function() {
|
||||
"use strict";
|
||||
var label = document.getElementById("launch-when-ready-label");
|
||||
var toggle = new Toggle();
|
||||
toggle.create();
|
||||
toggle.parent = label.parentNode;
|
||||
toggle.showlabel = true;
|
||||
var winjsres = Bridge.External.WinJsStringRes;
|
||||
toggle.setStatusText(winjsres.getString("ms-resource://Microsoft.WinJS.1.0/ui/on"), winjsres.getString("ms-resource://Microsoft.WinJS.1.0/ui/off"));
|
||||
toggle.inputId = "launch-when-ready";
|
||||
var ini = Bridge.External.Config.GetConfig();
|
||||
toggle.addEventListener("change", function() {
|
||||
ini.set("Settings", "AppInstaller:LaunchWhenReady", toggle.checked);
|
||||
});
|
||||
toggle.checked = parseBool(ini.getSection("Settings").getKey("AppInstaller:LaunchWhenReady").value);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -28,6 +28,11 @@
|
||||
<link rel="stylesheet" type="text/css" href="../subpage.css">
|
||||
<script type="text/javascript" src="preinit.js"></script>
|
||||
<script type="text/javascript" src="initsame.js"></script>
|
||||
<script>
|
||||
try {
|
||||
window.parent.setItemHighlight("guide");
|
||||
} catch (e) {}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
}, 50);
|
||||
var content = guide.querySelector(".main");
|
||||
var list = slide.querySelector("ul");
|
||||
var backbtn = slide.querySelector("#back");
|
||||
var title = slide.querySelector("#apptitle");
|
||||
list.innerHTML = "";
|
||||
var items = pages;
|
||||
var tags = Object.keys(items);
|
||||
@@ -21,8 +23,10 @@
|
||||
var item = items[tag];
|
||||
var li = document.createElement("li");
|
||||
li.setAttribute("data-page", item.page);
|
||||
li.setAttribute("data-tag", item.tag);
|
||||
li.innerHTML = item.title;
|
||||
eventutil.addEvent(li, "click", function() {
|
||||
if (li.hasAttribute("data-require-disabled")) return;
|
||||
content.style.display = "none";
|
||||
for (var j = 0; j < list.children.length; j++) {
|
||||
var child = list.children[j];
|
||||
@@ -32,13 +36,42 @@
|
||||
content.src = this.getAttribute("data-page");
|
||||
setTimeout(function() {
|
||||
content.style.display = "";
|
||||
Windows.UI.Animation.runAsync(content, Windows.UI.Animation.Keyframes.SlideInFromBottom);
|
||||
Windows.UI.Animation.runAsync(content, [Windows.UI.Animation.Keyframes.Flyout.toLeft, Windows.UI.Animation.Keyframes.Opacity.visible]);
|
||||
}, 0);
|
||||
this.classList.add("selected");
|
||||
});
|
||||
list.appendChild(li);
|
||||
}
|
||||
content.src = guidePage.page;
|
||||
global.setDisabledForOperation = function(disabled) {
|
||||
var list = document.querySelector("#settingpage .guide aside ul");
|
||||
for (var i = 0; i < list.children.length; i++) {
|
||||
var child = list.children[i];
|
||||
if (disabled) {
|
||||
child.setAttribute("data-require-disabled", "true");
|
||||
} else {
|
||||
child.removeAttribute("data-require-disabled");
|
||||
}
|
||||
}
|
||||
if (disabled) {
|
||||
backbtn.disabled = true;
|
||||
title.style.marginLeft = backbtn.style.marginLeft;
|
||||
} else {
|
||||
backbtn.disabled = false;
|
||||
title.style.marginLeft = "";
|
||||
}
|
||||
}
|
||||
global.setItemHighlight = function(tag) {
|
||||
var list = document.querySelector("#settingpage .guide aside ul");
|
||||
for (var i = 0; i < list.children.length; i++) {
|
||||
var child = list.children[i];
|
||||
if (Bridge.NString.equals(child.getAttribute("data-tag"), tag)) {
|
||||
if (!child.classList.contains("selected")) child.classList.add("selected");
|
||||
} else {
|
||||
if (child.classList.contains("selected")) child.classList.remove("selected");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OnLoad.add(ready);
|
||||
})(this);
|
||||
@@ -1,16 +1,18 @@
|
||||
(function(global) {
|
||||
"use strict";
|
||||
|
||||
function getPage(page, display) {
|
||||
function getPage(tag, page, display) {
|
||||
return {
|
||||
tag: tag,
|
||||
page: page,
|
||||
title: display
|
||||
};
|
||||
}
|
||||
var pages = {
|
||||
general: getPage("appinstaller/general.html", getPublicRes(101)),
|
||||
theme: getPage("appinstaller/theme.html", getPublicRes(102)),
|
||||
update: getPage("update.html", getPublicRes(103))
|
||||
general: getPage("general", "appinstaller/general.html", getPublicRes(101)),
|
||||
theme: getPage("theme", "appinstaller/theme.html", getPublicRes(102)),
|
||||
update: getPage("update", "update.html", getPublicRes(103)),
|
||||
about: getPage("about", "appinstaller/about.html", getPublicRes(124))
|
||||
};
|
||||
Object.defineProperty(global, "pages", {
|
||||
get: function() {
|
||||
@@ -19,7 +21,7 @@
|
||||
});
|
||||
Object.defineProperty(global, "guidePage", {
|
||||
get: function() {
|
||||
return getPage("appinstaller/guide.html", "Guide");
|
||||
return getPage("guide", "appinstaller/guide.html", "Guide");
|
||||
}
|
||||
});
|
||||
})(this);
|
||||
@@ -9,4 +9,22 @@
|
||||
global.slideback = slideback;
|
||||
global.exepath = exepath;
|
||||
global.visual = ve;
|
||||
var strutil = Bridge.External.String;
|
||||
var nstrutil = Bridge.NString;
|
||||
var boolTrue = ["true", "1", "yes", "on", "y", "t", "zhen", "真"];
|
||||
var boolFalse = ["false", "0", "no", "off", "n", "f", "jia", "假"];
|
||||
global.parseBool = function(str) {
|
||||
str = "" + str;
|
||||
for (var i = 0; i < boolTrue.length; i++) {
|
||||
if (nstrutil.equals(str, boolTrue[i])) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < boolFalse.length; i++) {
|
||||
if (nstrutil.equals(str, boolFalse[i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
})(this);
|
||||
@@ -0,0 +1,102 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>App Installer Settings</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<script type="text/javascript" src="../../js/module.js"></script>
|
||||
<script type="text/javascript" src="../../js/polyfill-ie.js"></script>
|
||||
<link rel="stylesheet" href="../../libs/winjs/2.0/css/ui-light.css" id="winjs-style">
|
||||
<script type="text/javascript" src="../../libs/winjs/1.0/js/base.js"></script>
|
||||
<script type="text/javascript" src="../../libs/winjs/1.0/js/ui.js"></script>
|
||||
<script type="text/javascript" src="../../js/color.js"></script>
|
||||
<script type="text/javascript" src="../../js/promise.js"></script>
|
||||
<script type="text/javascript" src="../../js/bridge.js"></script>
|
||||
<script type="text/javascript" src="../../js/dpimodes.js"></script>
|
||||
<script type="text/javascript" src="../../js/resources.js"></script>
|
||||
<script type="text/javascript" src="../../js/animation.js"></script>
|
||||
<link rel="stylesheet" href="../../fonts/fonts.css">
|
||||
<script type="text/javascript" src="../../js/event.js"></script>
|
||||
<script type="text/javascript" src="../../js/tileback.js"></script>
|
||||
<script type="text/javascript" src="../../js/load.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../../libs/msgbox/msgbox.css">
|
||||
<script type="text/javascript" src="../../libs/msgbox/msgbox.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../../libs/toggle/toggle.css">
|
||||
<script type="text/javascript" src="../../libs/toggle/toggle.js"></script>
|
||||
<script type="text/javascript" src="../../js/init.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../page.css">
|
||||
<link rel="stylesheet" type="text/css" href="../subpage.css">
|
||||
<script type="text/javascript" src="preinit.js"></script>
|
||||
<script type="text/javascript" src="initsame.js"></script>
|
||||
<script>
|
||||
try {
|
||||
window.parent.setItemHighlight("theme");
|
||||
} catch (e) {}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="pagecontainer full pagesection">
|
||||
<div class="section padding">
|
||||
<h2 id="page-title" data-res-fromfile="publicRes (102)"></h2>
|
||||
<div class="win-settings-section">
|
||||
<br>
|
||||
<label>主题模式</label><br>
|
||||
<select>
|
||||
<option>深色</option>
|
||||
<option>浅色</option>
|
||||
<option>自动变换</option>
|
||||
<option>自定义</option>
|
||||
</select>
|
||||
<br>
|
||||
</div>
|
||||
<div class="win-settings-section">
|
||||
<br>
|
||||
<label>自动变换选项</label><br>
|
||||
<select>
|
||||
<option>跟随系统</option>
|
||||
<option>设置变换时间</option>
|
||||
</select><br>
|
||||
<div class="win-settings-section" id="item-automode">
|
||||
<p>设置变换时间</p>
|
||||
<div class="win-settings-row">
|
||||
<div class="win-settings-label" style="font-weight: normal;">白天</div>
|
||||
<div class="win-settings-control">
|
||||
<div data-win-control="WinJS.UI.TimePicker" data-win-options="{ hour: 9, minute: 0, clock: '24HourClock' }">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="win-settings-row">
|
||||
<div class="win-settings-label" style="font-weight: normal;">夜晚</div>
|
||||
<div class="win-settings-control">
|
||||
<div data-win-control="WinJS.UI.TimePicker" data-win-options="{ hour: 18, minute: 0, clock: '24HourClock' }">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="win-settings-section" id="item-theme">
|
||||
<br>
|
||||
<label>主题模式</label><br>
|
||||
<script>
|
||||
(function() {
|
||||
var sect = document.getElementById("item-theme");
|
||||
var toggle = new Toggle();
|
||||
toggle.create();
|
||||
toggle.parent = sect;
|
||||
toggle.setColor("#202020");
|
||||
toggle.showlabel = true;
|
||||
toggle.setStatusText("深色", "浅色");
|
||||
})();
|
||||
</script>
|
||||
<br>
|
||||
<label>选择主题</label>
|
||||
<div id="theme-items-select" data-win-control="WinJS.UI.ListView"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -46,7 +46,7 @@
|
||||
}, 50);
|
||||
setTimeout(function() {
|
||||
content.style.display = "";
|
||||
Windows.UI.Animation.runAsync(content, Windows.UI.Animation.Keyframes.SlideInFromBottom);
|
||||
Windows.UI.Animation.runAsync(content, [Windows.UI.Animation.Keyframes.Flyout.toLeft, Windows.UI.Animation.Keyframes.Opacity.visible]);
|
||||
}, 100);
|
||||
}
|
||||
OnLoad.add(ready);
|
||||
|
||||
@@ -179,6 +179,12 @@ aside .container ul li:focus {
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
aside .container ul li:disabled,
|
||||
aside .container ul li[data-require-disabled] {
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
color: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
#back:disabled {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -33,14 +33,12 @@
|
||||
.section .block {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
transition: all 0.5s cubic-bezier(0.1, 0.9, 0.2, 1);
|
||||
overflow-x: hidden;
|
||||
overflow-y: hidden;
|
||||
background-color: blanchedalmond;
|
||||
/* background-color: blanchedalmond; */
|
||||
}
|
||||
|
||||
.pagesection .section {
|
||||
@@ -174,16 +172,86 @@
|
||||
);
|
||||
});
|
||||
};
|
||||
var process = Bridge.External.Process;
|
||||
global.createProcessAsync = function(cmdline, filepath, wndshow, runpath) {
|
||||
return new WinJS.Promise(function(resolve, reject) {
|
||||
var callback = resolve || reject;
|
||||
process.runAsync(cmdline, filepath, wndshow, runpath, callback);
|
||||
});
|
||||
};
|
||||
global.createProcess = function(cmdline, filepath, wndshow, wait, runpath) {
|
||||
return process.run(cmdline, filepath, wndshow, wait, runpath);
|
||||
};
|
||||
global.wndDisplayMode = {
|
||||
hide: 0, // SW_HIDE
|
||||
showNormal: 1, // SW_SHOWNORMAL / SW_NORMAL
|
||||
showMinimized: 2, // SW_SHOWMINIMIZED
|
||||
showMaximized: 3, // SW_SHOWMAXIMIZED
|
||||
showNoActivate: 4, // SW_SHOWNOACTIVATE
|
||||
show: 5, // SW_SHOW
|
||||
minimize: 6, // SW_MINIMIZE
|
||||
showMinNoActivate: 7, // SW_SHOWMINNOACTIVE
|
||||
showNA: 8, // SW_SHOWNA
|
||||
restore: 9, // SW_RESTORE
|
||||
showDefault: 10, // SW_SHOWDEFAULT
|
||||
forceMinimize: 11 // SW_FORCEMINIMIZE
|
||||
};
|
||||
|
||||
})(this);
|
||||
</script>
|
||||
<script>
|
||||
function formatBytesSize(bytes) {
|
||||
if (isNaN(bytes) || bytes < 0) return "0 B";
|
||||
|
||||
var units = ["B", "KB", "MB", "GB", "TB", "PB"];
|
||||
var i = 0;
|
||||
var num = bytes;
|
||||
|
||||
while (num >= 1024 && i < units.length - 1) {
|
||||
num = num / 1024;
|
||||
i++;
|
||||
}
|
||||
|
||||
// 保留 2 位小数,整数不显示小数
|
||||
if (num >= 100) num = Math.round(num);
|
||||
else if (num >= 10) num = Math.round(num * 10) / 10;
|
||||
else num = Math.round(num * 100) / 100;
|
||||
|
||||
return num + " " + units[i];
|
||||
}
|
||||
|
||||
function formatBytesTransmissionSpeed(bps) {
|
||||
if (isNaN(bps) || bps < 0) return "0 B/s";
|
||||
|
||||
var units = ["B/s", "KB/s", "MB/s", "GB/s", "TB/s"];
|
||||
var i = 0;
|
||||
var num = bps;
|
||||
|
||||
while (num >= 1024 && i < units.length - 1) {
|
||||
num = num / 1024;
|
||||
i++;
|
||||
}
|
||||
|
||||
if (num >= 100) num = Math.round(num);
|
||||
else if (num >= 10) num = Math.round(num * 10) / 10;
|
||||
else num = Math.round(num * 100) / 100;
|
||||
|
||||
return num + " " + units[i];
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
try {
|
||||
window.parent.setItemHighlight("update");
|
||||
} catch (e) {}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="pagecontainer full pagesection" style="overflow-y: auto;">
|
||||
<div class="section padding">
|
||||
<h2 id="section-title" data-res-fromfile="publicRes (103)"></h2>
|
||||
<p id="section-desc" style="white-space: pre-wrap;">在这里,检查一下应用的更新。</p>
|
||||
<p><span data-res-fromfile="publicRes (104)"></span>	<span id="current-version"></span></p>
|
||||
<p id="section-desc" style="white-space: pre-wrap;" data-res-fromfile="publicRes (105)"></p>
|
||||
<p style="white-space: pre-wrap;"><span data-res-fromfile="publicRes (104)"></span>	<span id="current-version"></span></p>
|
||||
<script>
|
||||
try {
|
||||
var storage = Bridge.External.Storage;
|
||||
@@ -199,19 +267,20 @@
|
||||
</div>
|
||||
<div class="section padding" style="">
|
||||
<div class="block" id="check-update-block" style="height: 0px;">
|
||||
<span id="loading-amine">123</span><span id="check-update-text">正在检查更新...</span><br>
|
||||
<span id="loading-amine">123</span><span id="check-update-text" data-res-fromfile="publicRes (106)"></span><br>
|
||||
<progress id="progress" min="0" max="100"></progress>
|
||||
<a target="_blank" id="doc-link">查看文档</a>
|
||||
<a target="_blank" id="doc-link" data-res-fromfile="publicRes (107)"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section padding" style="margin: 10px 0;"><button id="check-update" data-action="check">检查更新</button></div>
|
||||
<div class="section padding" style="margin: 10px 0;"><button id="check-update" data-action="check" data-res-fromfile="publicRes (115)"></button></div>
|
||||
<div class="section padding" style="display: none; overflow-y: auto; height: 0px; transition: all 0.5s cubic-bezier(0.1, 0.9, 0.2, 1); margin-top: 20px;">
|
||||
<h2>获取到的更新信息</h2>
|
||||
<h2 data-res-fromfile="publicRes (108)"></h2>
|
||||
<div class="block" id="newversion-details">
|
||||
<h3 id="newversion-title"><span>最新版本</span>: <span id="newversion-version"></span></h3>
|
||||
<h3 id="newversion-title"><span data-res-fromfile="publicRes (109)"></span>: <span id="newversion-version"></span></h3>
|
||||
<span id="newversion-releasedate"></span><br>
|
||||
<a id="newversion-url" target="_blank">查看链接</a><br>
|
||||
<span>发布说明: </span><a id="newversion-desc-showall-hide">展开</a>
|
||||
<a id="newversion-url" target="_blank" data-res-fromfile="publicRes (110)"></a><br>
|
||||
<span data-res-fromfile="publicRes (111)"></span>:
|
||||
<a id="newversion-desc-showall-hide" data-res-fromfile="publicRes (122)"></a>
|
||||
<div id="newversion-desc"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -255,11 +324,11 @@
|
||||
var parentSection = newVersionBlock.parentNode;
|
||||
if (parentSection.hasAttribute("data-showall") == true) {
|
||||
parentSection.removeAttribute("data-showall");
|
||||
newVersionDescShowOrHide.textContent = "展开";
|
||||
newVersionDescShowOrHide.textContent = getPublicRes(122);
|
||||
parentSection.style.height = parentSection.getAttribute("data-height") + "px";
|
||||
} else {
|
||||
parentSection.setAttribute("data-showall", true);
|
||||
newVersionDescShowOrHide.textContent = "收起";
|
||||
newVersionDescShowOrHide.textContent = getPublicRes(123);
|
||||
parentSection.style.height = "auto";
|
||||
}
|
||||
debunced_resize();
|
||||
@@ -270,8 +339,9 @@
|
||||
var self = this;
|
||||
this.disabled = true;
|
||||
progress.removeAttribute("value");
|
||||
window.parent.setDisabledForOperation(true);
|
||||
if (checkUpdateBtn.getAttribute("data-action") == "check") {
|
||||
checkUpdateText.textContent = "正在检查更新...";
|
||||
checkUpdateText.textContent = getPublicRes(106);
|
||||
checkUpdateBlock.style.height = checkUpdateBlock.scrollHeight + "px";
|
||||
progress.style.display = "";
|
||||
docLink.style.display = "none";
|
||||
@@ -285,17 +355,17 @@
|
||||
WinJS.xhr({
|
||||
url: "https://api.github.com/repos/modernw/App-Installer-For-Windows-8.x-Reset/releases/latest"
|
||||
}).done(function(resp) {
|
||||
console.log("success", resp);
|
||||
// console.log("success", resp);
|
||||
var json = JSON.parse(resp.responseText);
|
||||
console.log(json);
|
||||
// console.log(json);
|
||||
self.disabled = false;
|
||||
newVersionVersion.textContent = json.name;
|
||||
newVersionVersion.setAttribute("data-version", json.tag_name);
|
||||
window.newver = json.tag_name;
|
||||
newVersionReleaseDate.textContent = "发布日期: " + json.published_at;
|
||||
newVersionReleaseDate.textContent = getPublicRes(112) + ": " + json.published_at;
|
||||
newVersionUrl.href = json.html_url;
|
||||
newVersionDesc.innerHTML = markdown.toHTML(json.body);
|
||||
checkUpdateText.textContent = "检查更新完成";
|
||||
checkUpdateText.textContent = getPublicRes(113);
|
||||
progress.style.display = "none";
|
||||
newVersionBlock.parentNode.style.display = "";
|
||||
stopProcess = false;
|
||||
@@ -303,63 +373,86 @@
|
||||
for (var i = 0; i < json.assets.length; i++) {
|
||||
if (json.assets[i].browser_download_url.indexOf("/InstallerSetup.exe") > -1) {
|
||||
window.downloadUrl = json.assets[i].browser_download_url;
|
||||
window.fileDigest = json.assets[i].digest;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (compareVersion(window.currver, window.newver) > 0) {
|
||||
checkUpdateText.textContent = "当前已是最新版本";
|
||||
checkUpdateBtn.textContent = "检查更新";
|
||||
if (compareVersion(window.currver, window.newver) >= 0) {
|
||||
checkUpdateText.textContent = getPublicRes(114);
|
||||
checkUpdateBtn.textContent = getPublicRes(115);
|
||||
checkUpdateBtn.setAttribute("data-action", "check");
|
||||
} else {
|
||||
checkUpdateText.textContent = "有新版本可用: " + window.newver;
|
||||
checkUpdateBtn.textContent = "下载更新";
|
||||
checkUpdateText.textContent = Bridge.String.format(getPublicRes(116), window.newver);
|
||||
checkUpdateBtn.textContent = getPublicRes(118);
|
||||
checkUpdateBtn.setAttribute("data-action", "download");
|
||||
}
|
||||
window.parent.setDisabledForOperation(false);
|
||||
}, function(error) {
|
||||
console.log("error", error);
|
||||
// console.log("error", error);
|
||||
var json = JSON.parse(error.responseText);
|
||||
checkUpdateText.textContent = json.message;
|
||||
progress.style.display = "none";
|
||||
docLink.style.display = "";
|
||||
docLink.href = json.documentation_url;
|
||||
self.disabled = false;
|
||||
window.parent.setDisabledForOperation(false);
|
||||
});
|
||||
} catch (error) {
|
||||
console.log("error", error);
|
||||
// console.log("error", error);
|
||||
checkUpdateText.textContent = error.message || e || "Unknown Exception"
|
||||
progress.style.display = "none";
|
||||
docLink.style.display = "none";
|
||||
docLink.href = "";
|
||||
self.disabled = false;
|
||||
window.parent.setDisabledForOperation(false);
|
||||
}
|
||||
} else if (checkUpdateBtn.getAttribute("data-action") == "download") {
|
||||
var storage = Bridge.External.Storage;
|
||||
var path = storage.path;
|
||||
stopProcess = true;
|
||||
newVersionBlock.parentNode.style.height = "0px";
|
||||
checkUpdateText.textContent = "正在下载更新...";
|
||||
checkUpdateText.textContent = getPublicRes(117);
|
||||
progress.style.display = "";
|
||||
checkUpdateBlock.style.height = checkUpdateBlock.scrollHeight + "px";
|
||||
var anime = Windows.UI.Animation;
|
||||
var strutil = Bridge.External.String;
|
||||
|
||||
function setError(error) {
|
||||
console.error("download error", error);
|
||||
checkUpdateText.textContent = "下载失败,请重试: " + error.reason;
|
||||
//console.error("download error", error);
|
||||
checkUpdateText.textContent = strutil.format(getPublicRes(119), error.reason);
|
||||
progress.style.display = "none";
|
||||
self.disabled = false;
|
||||
self.textContent = "重试";
|
||||
window.parent.setDisabledForOperation(false);
|
||||
checkUpdateBlock.style.height = checkUpdateBlock.scrollHeight + "px";
|
||||
}
|
||||
|
||||
function setException(e) {
|
||||
console.error("download exception", e);
|
||||
checkUpdateText.textContent = "下载出现异常,请重试: " + e.message;
|
||||
//console.error("download exception", e);
|
||||
checkUpdateText.textContent = strutil.format(getPublicRes(119), e.message);
|
||||
window.parent.setDisabledForOperation(false);
|
||||
checkUpdateBlock.style.height = checkUpdateBlock.scrollHeight + "px";
|
||||
}
|
||||
|
||||
function setComplete(complete) {
|
||||
console.log("download complete", complete);
|
||||
checkUpdateText.textContent = "下载完成,即将进行安装...";
|
||||
// console.log("download complete", complete);
|
||||
checkUpdateText.textContent = getPublicRes(120);
|
||||
var cmdline = strutil.format("\"{0}\" /passive", tempfile);
|
||||
var appinstallerpath = path.combine(path.root, "appinstaller.exe");
|
||||
var settingsapppath = path.combine(path.root, "settings.exe");
|
||||
window.parent.setDisabledForOperation(false);
|
||||
var process = Bridge.External.Process;
|
||||
process.kill(appinstallerpath, true, false);
|
||||
checkUpdateBlock.style.height = checkUpdateBlock.scrollHeight + "px";
|
||||
createProcess(cmdline, tempfile, wndDisplayMode.showNormal, false);
|
||||
process.kill(settingsapppath, true, false);
|
||||
//Bridge.External.closeWindow();
|
||||
}
|
||||
progress.value = 0;
|
||||
anime.loading(checkUpdateLoading, true);
|
||||
downloadFile(downloadUrl, "E:\\Profiles\\Bruce\\Desktop\\InstallerSetup.exe").done(
|
||||
var tempdir = path.expand("%temp%");
|
||||
var tempfile = path.combine(tempdir, "InstallerSetup.exe");
|
||||
downloadFile(downloadUrl, tempfile).done(
|
||||
function(complete) {
|
||||
anime.loading(checkUpdateLoading, false);
|
||||
if (complete.status == "ok") setComplete(complete);
|
||||
@@ -370,9 +463,10 @@
|
||||
setError(error);
|
||||
},
|
||||
function(prog) {
|
||||
console.log("download progress", progress);
|
||||
//console.log("download progress", prog);
|
||||
progress.value = prog.progress;
|
||||
checkUpdateText.textContent = "正在下载更新... (" + Math.round(prog.progress) + "%)";
|
||||
checkUpdateText.textContent = strutil.format(getPublicRes(121), Math.floor(prog.progress), formatBytesSize(prog.received), formatBytesSize(prog.total));
|
||||
checkUpdateBlock.style.height = checkUpdateBlock.scrollHeight + "px";
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user