Files
App-Installer-For-Windows-8…/shared/html/js/manager/pages.js
2026-02-06 18:12:21 +08:00

223 lines
10 KiB
JavaScript

(function(global) {
"use strict";
var pkg_ns = external.Package;
var strres = external.StringResources;
function archsToStr(archs) {
var arr = [];
for (var i = 0; i < archs.length; i++) {
switch (archs[i]) {
case 0:
arr.push("x86");
break;
case 5:
arr.push("ARM");
break;
case 9:
arr.push("x64");
break;
case 11:
arr.push("Neutral");
break;
case 12:
arr.push("ARM64");
break;
case 65535:
arr.push("Unknown");
break;
}
}
return arr.join(", ");
}
var showAppDetailTimer = null;
function updateAppDataSource(page, result, bar) {
try {
var json = result.json;
console.log(json);
page.appDataSource.updateList(json.applications);
} catch (e) {}
showAppDetailTimer = setTimeout(function() {
showAppDetailTimer = null;
bar.hide();
}, 3000);
}
function setAppInfoPageContent(info) {
var page = document.getElementById("page-appinfo");
page.data = info;
page.querySelector(".display-name").textContent = info.Properties.DisplayName;
page.querySelector(".publisher-display-name").textContent = info.Properties.Publisher;
page.querySelector(".version").textContent = info.Identity.Version.Expression;
page.querySelector(".description").textContent = info.Properties.Description;
page.querySelector(".identity .name").textContent = info.Identity.Name;
page.querySelector(".identity .publisher").textContent = info.Identity.Publisher;
page.querySelector(".identity .publisher-id").textContent = info.Identity.PublisherId;
page.querySelector(".identity .family-name").textContent = info.Identity.FamilyName;
page.querySelector(".identity .full-name").textContent = info.Identity.FullName;
page.querySelector(".identity .architecture").textContent = archsToStr(info.Identity.ProcessArchitecture);
var il = info.InstallLocation;
try { page.appDataSource.clear(); } catch (e) {}
var appLoading = page.querySelector("#appinfo-loading");
appLoading.classList.remove("noloading");
if (showAppDetailTimer) clearTimeout(showAppDetailTimer);
if (typeof appLoading.bar === "undefined") {
appLoading.bar = new TransitionPanel(appLoading, {
axis: 'y',
duration: 500,
});
}
appLoading.bar.show();
var appLoadingStatus = page.querySelector(".title");
appLoadingStatus.textContent = strres.get("MANAGER_APP_INSTALLEDAPPS_LOADING");
return Package.reader.readFromInstallLocation(il, true).then(
function(result) {
try {
var displayNameNode = page.querySelector(".display-name");
displayNameNode.textContent = displayNameNode.textContent || result.json.properties.display_name;
if ((displayNameNode.textContent || "").indexOf("ms-resource:") === 0) {
displayNameNode.textContent = "";
}
if (result.json.applications.length === 1) {
displayNameNode.textContent = displayNameNode.textContent || result.json.applications[0].DisplayName || result.json.applications[0].ShortName;
}
if ((displayNameNode.textContent || "").indexOf("ms-resource:") === 0) {
displayNameNode.textContent = "";
}
if (result.json.applications.length === 1) {
displayNameNode.textContent = displayNameNode.textContent || result.json.applications[0].ShortName;
}
if ((displayNameNode.textContent || "").indexOf("ms-resource:") === 0) {
displayNameNode.textContent = "";
}
displayNameNode.textContent = displayNameNode.textContent || info.Identity.FamilyName;
} catch (e) {}
appLoadingStatus.textContent = strres.get("MANAGER_APP_INSTALLEDAPPS_SUCCEED");
appLoading.classList.add("noloading");
updateAppDataSource(page, result, appLoading.bar);
},
function(result) {
try {
var displayNameNode = page.querySelector(".display-name");
displayNameNode.textContent = displayNameNode.textContent || result.json.properties.display_name;
if ((displayNameNode.textContent || "").indexOf("ms-resource:") === 0) {
displayNameNode.textContent = "";
}
if (result.json.applications.length === 1) {
displayNameNode.textContent = displayNameNode.textContent || result.json.applications[0].DisplayName || result.json.applications[0].ShortName;
}
if ((displayNameNode.textContent || "").indexOf("ms-resource:") === 0) {
displayNameNode.textContent = "";
}
if (result.json.applications.length === 1) {
displayNameNode.textContent = displayNameNode.textContent || result.json.applications[0].ShortName;
}
if ((displayNameNode.textContent || "").indexOf("ms-resource:") === 0) {
displayNameNode.textContent = "";
}
displayNameNode.textContent = displayNameNode.textContent || info.Identity.FamilyName;
} catch (e) {}
var msg = result.message;
appLoadingStatus.textContent = external.String.format(strres.get("MANAGER_APP_INSTALLEDAPPS_FAILED"), msg);
appLoading.classList.add("noloading");
updateAppDataSource(page, result, appLoading.bar);
}
);
}
function initLoaderPage() {
var page = document.getElementById("page-load");
var prefixs = ["ins", "reg", "sta"];
var opdict = {
ins: Package.manager.add,
reg: Package.manager.register,
sta: Package.manager.stage
};
var ingdict = {
ins: strres.get("MANAGER_LOAD_INSTALL_ING"),
reg: strres.get("MANAGER_LOAD_REGISTER_ING"),
sta: strres.get("MANAGER_LOAD_STAGE_ING")
};
var sdict = {
ins: strres.get("MANAGER_LOAD_INSTALL_SUCCEED"),
reg: strres.get("MANAGER_LOAD_REGISTER_SUCCEED"),
sta: strres.get("MANAGER_LOAD_STAGE_SUCCEED")
}
var explorer = external.Storage.Explorer;
prefixs.forEach(function(prefix) {
var checklist = document.getElementById(prefix + "-deployoptions");
var btn = document.getElementById(prefix + "-btn");
var statusbar = document.getElementById(prefix + "-progress");
var progressbar = statusbar.querySelector(".progress");
var status = statusbar.querySelector(".status");
progressbar.removeAttribute("value");
status.textContent = "";
var hideTimer = null;
btn.onclick = function() {
var self = this;
self.disabled = true;
var nextNextStep = function(statusbar) {
if (hideTimer) clearTimeout(hideTimer);
hideTimer = setTimeout(function() {
hideTimer = null;
statusbar.bar.hide();
}, 10000);
}
var nextStep = function(filename) {
if (filename === "" || filename === null || filename === void 0) {
self.disabled = false;
return;
}
if (hideTimer) clearTimeout(hideTimer);
var op = opdict[prefix];
var options = 0;
var items = checklist.querySelectorAll("input:checked");
if (items) {
for (var i = 0; i < items.length; i++) {
options |= parseInt(items[i].value);
}
}
progressbar.removeAttribute("value");
status.textContent = external.String.format(ingdict[prefix], "");
statusbar.bar.show();
op(filename, options).then(function(result) {
self.disabled = false;
status.textContent = sdict[prefix];
refreshAppList2();
nextNextStep(statusbar);
}, function(error) {
self.disabled = false;
status.textContent = error.message;
nextNextStep(statusbar);
}, function(_p) {
status.textContent = external.String.format(ingdict[prefix], _p + "%");
progressbar.value = _p;
});
}
if (prefix === "ins" || prefix === "sta") explorer.file(
external.String.format("{0}|{1}|{2}|{3}",
strres.get("MANAGER_LOAD_INS_OR_STA_FILTERDISPLAY"),
"*.appx;*.appxbundle;*.msix;*.msixbundle",
strres.get("MANAGER_LOAD_ALLFILES"),
"*.*"
),
"",
nextStep
);
else if (prefix === "reg") explorer.file(
external.String.format("{0}|{1}|{2}|{3}",
strres.get("MANAGER_LOAD_REG_FILTERDISPLAY"),
"*.appxmanifest;AppxManifest.xml",
strres.get("MANAGER_LOAD_ALLFILES"),
"*.*"
),
"",
nextStep
);
};
});
}
global.setAppInfoPageContent = setAppInfoPageContent;
global.initLoaderPage = initLoaderPage;
})(this);