Files
App-Installer-For-Windows-8…/shared/html/install.html
2025-11-29 18:19:08 +08:00

346 lines
21 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>App Installer</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">
<link rel="stylesheet" href="css/pages.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/pages.js"></script>
<script type="text/javascript" src="js/theme.js"></script>
<script type="text/javascript" src="js/load.js"></script>
<script type="text/javascript" src="js/init.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="theme/light/default.css" id="theme-style">
</head>
<body>
<div id="page-container" class="pagecontainer full">
<div class="page splash">
<!-- Splash Screen -->
<img class="splash" src="images/splash.default.png" alt="Splash Screen" width="620" height="300">
<div class="content splash">
<progress class="win-ring"></progress>
<p class="status-text"></p>
</div>
<script>
(function() {
"use strict";
var img = document.querySelector(".pagecontainer .page img.splash");
if (img) img.src = Bridge.UI.Splash.imageurl;
var progress = document.querySelector(".pagecontainer .page .content.splash progress");
if (Bridge.Frame.WindowSize.height / Bridge.UI.dpi < 500) {
if (progress.classList.contains("win-ring")) progress.classList.remove("win-ring");
} else progress.classList.add("win-ring");
var splashpage = document.querySelector(".pagecontainer .page.splash");
if (splashpage) {
splashpage.style.backgroundColor = Bridge.UI.Splash.backcolor;
}
})();
</script>
<!-- Loading... -->
<div class="content loading">
<span class="ring-loading">&#57543;</span>&nbsp;
<span data-res-byname="IDS_PLEASEWAIT">Please wait...</span>
</div>
<!-- Main Page -->
<div class="content select preinstall installing installsuccess installfailed main">
<div style="width: 100%; box-sizing: border-box;" class="currentfile multiple">
<h1 class="win-type-x-large title multiple" data-res-byname="IDS_PREINSTALL_MTTITLE"></h1>
<label for="select-package" class="win-label" data-res-byname="IDS_PREINSTALL_MSELECT"></label><br />
<select id="select-package" style="width: 100%;"></select><br />
</div>
<div class="storelogo" style="margin-left: 24px;">
<div class="filter">
<img src="images/splash.default.png" alt="App Store Logo">
</div>
</div>
<script>
(function() {
"use strict";
var storelogo = document.querySelector(".page .content .storelogo");
var slimg = storelogo.querySelector("img");
var monitor = Windows.UI.Event.Monitor;
monitor.observe(slimg, monitor.EventType.attribute, function() {
if (slimg.hasAttribute("src") && slimg.src && slimg.src.length > 1 && slimg.naturalHeight > 0) {
storelogo.style.display = '';
} else {
storelogo.style.display = 'none';
}
});
})();
</script>
<h1 class="win-type-x-large pkgtitle title single" data-res-byname="IDS_PREINSTALL_TITLE"></h1>
<script>
(function() {
"use strict";
var monitor = Windows.UI.Event.Monitor;
var htitle = document.body.querySelector(".page .content h1.pkgtitle");
if (!htitle) return;
function getHeight(ele) {
if (typeof ele === "string") ele = document.getElementById(ele);
try {
return ele.offsetHeight;
} catch (e) {
try {
return ele.clientHeight;
} catch (e) {
return ele.getBoundingClientRect().height;
}
}
return 0;
}
function onChildChangeEventHandler(e) {
var span = htitle.querySelector("span");
if (!span) return;
if (!span.hasAttribute("data-original")) span.setAttribute("data-original", span.textContent);
else span.textContent = span.getAttribute("data-original");
if (!span.hasAttribute("data-showlength")) span.setAttribute("data-showlength", (span.textContent || "").length);
else span.setAttribute("data-showlength", (span.textContent || "").length);
var totalheight = getHeight(htitle);
var limitheight = (parseFloat(("" + (getComputedStyle(htitle, null).lineHeight || 25 / 72 * 96)).replace("px", "")) + 1) * 2;
while (totalheight > limitheight && span.textContent.length) {
totalheight = getHeight(htitle);
if (totalheight > limitheight) {
span.textContent = (span.textContent || "").slice(0, -1);
span.setAttribute("data-showlength", span.textContent.length);
// console.log(totalheight, limitheight, span.textContent.length, span.getAttribute("data-showlength"), span.getAttribute("data-original").length)
}
}
if (!(totalheight > limitheight && span.textContent.length)) {
var isfulllen =
span.getAttribute("data-original").length <=
parseInt(span.getAttribute("data-showlength"), 10);
if (isfulllen) {
span.removeAttribute("data-overflow");
} else {
span.setAttribute("data-overflow", true);
}
}
}
monitor.observe(htitle, monitor.EventType.child, onChildChangeEventHandler);
function getWidth(ele) {
if (typeof ele === "string") ele = document.getElementById(ele);
try {
return ele.getBoundingClientRect().width;
} catch (e) {
try {
return ele.offsetWidth;
} catch (e) {
return ele.clientWidth;
}
}
return 0;
}
var lastWidth = getWidth(htitle);
function onSizeChangeEventHandler(e) {
if (lastWidth === getWidth(htitle)) return;
lastWidth = getWidth(htitle);
onChildChangeEventHandler(e);
}
var deb_sizechange = debounce(onSizeChangeEventHandler, 500);
monitor.observe(htitle, monitor.EventType.resize, deb_sizechange);
var lastAttr = htitle.getAttribute("data-titlefmt") || "";
function onAttributeChangeEventHandler(e) {
if (lastAttr === htitle.getAttribute("data-titlefmt")) return;
lastAttr = htitle.getAttribute("data-titlefmt");
htitle.innerHTML = Bridge.String.formatInnerHtml(lastAttr, htitle.getAttribute("data-pkgname") || "");
}
monitor.observe(htitle, monitor.EventType.attribute, onAttributeChangeEventHandler);
})();
</script>
<p class="pkgtitle multiple" data-res-byname="IDS_PREINSTALL_MPKGNAME"></p>
<p class="pkgapplabel" data-res-byname="IDS_MSAPP"></p>
<p class="pkgpublisher" data-res-byname="IDS_PUBLISHER"></p>
<p class="pkgversion" data-res-byname="IDS_VERSION"></p><br />
<p class="pkgfunctions-label" data-res-byname="IDS_FUNCTIONNAME"></p>
<div class="functions">
<ul>
</ul>
</div>
<a class="moreinfo" data-res-byname="IDS_MOREINFO" tabindex="0"></a>
<script>
(function() {
"use strict";
var monitor = Windows.UI.Event.Monitor;
var page = document.querySelector(".page");
var content = page.querySelector(".content.main");
var functions = page.querySelector(".functions");
var funculist = functions.querySelector("ul");
var moreinfo = page.querySelector(".moreinfo");
function sizeChangeEvent(e) {
// var height = parseFloat((getComputedStyle(content, null).height || ("" + content.getBoundingClientRect().height)).replace("px", ""));
var height = content.getBoundingClientRect().height;
var iscomputedheight = false;
if (height < ("" + content.getBoundingClientRect().height)) iscomputedheight = true;
if (height <= 0) height = height || content.offsetHeight || content.clientHeight;
var top = functions.getBoundingClientRect().top;
var newheight = 0;
if (iscomputedheight) {
newheight = height - top;
} else {
newheight = parseInt((height - top - (moreinfo.offsetHeight || moreinfo.getBoundingClientRect().height || 10)));
}
var listheight = (funculist.scrollHeight || funculist.offsetHeight || funculist.clientHeight || funculist.getBoundingClientRect().height || 10) + 20;
// console.log(newheight, listheight);
if (newheight > listheight) newheight = listheight;
functions.style.height = newheight + "px";
}
var deb_sizechange = debounce(sizeChangeEvent, 500);
monitor.observe(content, Windows.UI.Event.Monitor.EventType.resize, deb_sizechange);
monitor.observe(content, Windows.UI.Event.Monitor.EventType.position, deb_sizechange);
monitor.observe(funculist, Windows.UI.Event.Monitor.EventType.child, deb_sizechange);
setTimeout(sizeChangeEvent, 0);
})();
</script>
<script>
(function() {
"use strict";
var eutils = Windows.UI.Event.Util;
var select = document.getElementById("select-package");
eutils.addEvent(select, "change", function() {
var strutils = Bridge.External.String;
var page = document.querySelector(".page");
var pkgtitle = page.querySelector(".pkgtitle.multiple");
var pkgpublisher = page.querySelector(".pkgpublisher");
var pkgversion = page.querySelector(".pkgversion");
var funculist = page.querySelector(".functions ul");
var storelogo = page.querySelector(".storelogo");
var slimg = storelogo.querySelector("img");
var slfilter = storelogo.querySelector(".filter");
var pi = Bridge.Package.pkginfo(this.value);
var reason = page.querySelector(".reason textarea");
if (pi && pi.valid) {
var res = Bridge.Resources;
pkgtitle.textContent = strutils.format(res.byname("IDS_PREINSTALL_MPKGNAME"), pi.properties.display_name);
slimg.src = pi.properties.logo_base64;
pkgpublisher.textContent = strutils.format(res.byname("IDS_PUBLISHER"), pi.properties.publisher_display_name);
pkgversion.textContent = strutils.format(res.byname("IDS_VERSION"), stringifyVersion(pi.identity.version));
funculist.innerHTML = "";
storelogo.setAttribute("data-logoimg", pi.properties.logo);
for (var j = 0; j < pi.capabilities.capabilities_name.length; j++) {
var li = document.createElement("li");
var capname = pi.capabilities.capabilities_name[j];
li.setAttribute("data-capability", capname);
li.textContent = Bridge.Package.capabilityDisplayName(capname);
if (Bridge.NString.empty(li.textContent)) li.textContent = capname;
funculist.appendChild(li);
}
for (var j = 0; j < pi.capabilities.device_capabilities.length; j++) {
var capname = pi.capabilities.device_capabilities[j];
var cdname = Bridge.Package.capabilityDisplayName(capname);
if (!Bridge.NString.empty(cdname)) {
var li = document.createElement("li");
li.setAttribute("data-capability", capname);
li.textContent = Bridge.Package.capabilityDisplayName(capname);
funculist.appendChild(li);
}
}
try {
var bc = pi.applications[0].BackgroundColor || Bridge.UI.themeColor;
if (strutils.tolower(bc) === "transparent") {
bc = Bridge.UI.themeColor;
}
storelogo.style.backgroundColor = bc;
slfilter.style.background = Color.genTileBackFilter(bc);
} catch (e) {
var bc = Bridge.UI.themeColor;
storelogo.style.backgroundColor = bc;
slfilter.style.background = Color.genTileBackFilter(bc);
}
setFlyoutDisplayInfo(pi);
var hres = Bridge.Package.installResult(this.value);
if (hres && hres.failed) {
reason.textContent = hres.message;
} else {
reason.textContent = Bridge.Resources.byname("IDS_FAILED_MSUCCESS");
}
}
});
})();
</script>
</div>
<div class="progress installing">
<div>
<span class="ring-loading">&#57543;</span>&nbsp;<span class="status" data-res-byname="IDS_INSTALLING_SLOADING"></span>
</div>
<progress min="0" max="100" class="win-progress-bar"></progress>
</div>
<div class="reason installfailed">
<p data-res-byname="IDS_FAILED_REASONNAME"></p>
<textarea class="win-textarea" readonly></textarea>
</div>
<div class="controls">
<div class="checkbox">
<input type="checkbox" id="preinst-enablelaunch" class="win-checkbox">
<label for="preinst-enablelaunch" data-res-byname="IDS_LAUNCHWHENREADY"></label>
</div>
<div class="command">
<button data-res-byname="IDS_PREINSTALL_TINSTALL" onclick="Bridge.Frame.callEvent ('OnPress_Button1')"></button>
<button data-res-byname="IDS_PREINSTALL_CANCEL" onclick="Bridge.Frame.callEvent ('OnPress_Button2')"></button>
</div>
</div>
</div>
</div>
<div data-win-control="WinJS.UI.Flyout" id="moreinfo-flyout" style="max-width: 80%; max-height: 80%; position: absolute;">
<div id="moreinfo-flyout-content" style="-ms-user-select: element; user-select: text; padding: 0 0 25px 0; box-sizing: border-box;;">
<div style="width: 100%;">
<p><span colspan="2" style="font-weight: bold;" data-res-byname="IDS_MOREINFO_ID"></span></p>
<p><span data-res-byname="IDS_MOREINFO_IDNAME"></span>: <span class="id name"></span></p>
<p><span data-res-byname="IDS_MOREINFO_IDPUBLISHER"></span>: <span class="id publisher"></span></p>
<p><span data-res-byname="IDS_MOREINFO_IDVERSION"></span>: <span class="id version"></span></p>
<p><span data-res-byname="IDS_MOREINFO_IDARCH"></span>: <span class="id arch"></span></p>
<p><span data-res-byname="IDS_MOREINFO_IDFAMILY"></span>: <span class="id family"></span></p>
<p><span data-res-byname="IDS_MOREINFO_IDFULL"></span>: <span class="id full"></span></p>
</div>
<div style="width: 100%; display: none;">
<p><span colspan="2" style="font-weight:bold;" data-res-byname="IDS_MOREINFO_PROP"></span></p>
<p><span data-res-byname="IDS_MOREINFO_PROPFREAMWORK"></span>: <span class="prop framework"></span></p>
<p><span data-res-byname="IDS_MOREINFO_PROPRESPKG"></span>: <span class="prop respkg"></span></p>
</div>
<div style="width: 100%;">
<p><span colspan="2" style="font-weight:bold;" data-res-byname="IDS_MOREINFO_INFO"></span></p>
<p><span data-res-byname="IDS_MOREINFO_INFOSYS"></span>: <span class="info sys"></span></p>
<p><span data-res-byname="IDS_MOREINFO_INFOLANG"></span>: </p>
<ul class="info langs"></ul>
</div>
</div>
</div>
<script>
(function() {
"Use strict";
var page = document.querySelector(".page");
var content = page.querySelector(".content.preinstall");
var moreinfo = page.querySelector(".moreinfo");
Windows.UI.Event.Util.addEvent(moreinfo, "click", function() {
var flyout = document.getElementById("moreinfo-flyout").winControl;
flyout.show(this);
});
})();
</script>
</body>
</html>