mirror of
https://github.com/modernw/App-Installer-For-Windows-8.x-Reset.git
synced 2026-04-11 17:57:19 +10:00
223 lines
10 KiB
JavaScript
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); |