mirror of
https://github.com/modernw/App-Installer-For-Windows-8.x-Reset.git
synced 2026-06-14 03:16:38 +10:00
Changed the UI and fixed bugs.
This commit is contained in:
Binary file not shown.
+31
-1
@@ -1,5 +1,4 @@
|
|||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#include <set>
|
|
||||||
#include <msclr/marshal_cppstd.h>
|
#include <msclr/marshal_cppstd.h>
|
||||||
#include <ShObjIdl.h>
|
#include <ShObjIdl.h>
|
||||||
#include <ShlObj.h> // KNOWNFOLDERID, SHGetKnownFolderPath
|
#include <ShlObj.h> // KNOWNFOLDERID, SHGetKnownFolderPath
|
||||||
@@ -286,6 +285,37 @@ public ref class _I_System
|
|||||||
return (error == ERROR_OLD_WIN_VERSION) ? FALSE : FALSE;
|
return (error == ERROR_OLD_WIN_VERSION) ? FALSE : FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
property int Archievement
|
||||||
|
{
|
||||||
|
int get ()
|
||||||
|
{
|
||||||
|
SYSTEM_INFO si;
|
||||||
|
ZeroMemory (&si, sizeof (si));
|
||||||
|
typedef VOID (WINAPI *LPFN_GetNativeSystemInfo)(LPSYSTEM_INFO);
|
||||||
|
LPFN_GetNativeSystemInfo fnGetNativeSystemInfo =
|
||||||
|
(LPFN_GetNativeSystemInfo)GetProcAddress (
|
||||||
|
GetModuleHandleW (L"kernel32.dll"),
|
||||||
|
"GetNativeSystemInfo");
|
||||||
|
if (fnGetNativeSystemInfo) fnGetNativeSystemInfo (&si);
|
||||||
|
else GetSystemInfo (&si);
|
||||||
|
return (int)si.wProcessorArchitecture;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
property _I_Version ^Version
|
||||||
|
{
|
||||||
|
_I_Version ^get ()
|
||||||
|
{
|
||||||
|
auto ver = Environment::OSVersion->Version;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return gcnew _I_Version (ver->Major, ver->Minor, ver->Build, ver->Revision);
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
return gcnew _I_Version (ver->Major, ver->Minor, ver->Build, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
public ref class _I_System2: public _I_System
|
public ref class _I_System2: public _I_System
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -88,7 +88,9 @@ std::map <std::string, unsigned> g_nameToId = {
|
|||||||
MAKENAMEIDMAP (IDS_MSGBOX_CLOSE),
|
MAKENAMEIDMAP (IDS_MSGBOX_CLOSE),
|
||||||
MAKENAMEIDMAP (IDS_MSGBOX_HELP),
|
MAKENAMEIDMAP (IDS_MSGBOX_HELP),
|
||||||
MAKENAMEIDMAP (IDS_MSGBOX_TRYAGAIN),
|
MAKENAMEIDMAP (IDS_MSGBOX_TRYAGAIN),
|
||||||
MAKENAMEIDMAP (IDS_MSGBOX_CONTINUE)
|
MAKENAMEIDMAP (IDS_MSGBOX_CONTINUE),
|
||||||
|
MAKENAMEIDMAP (IDS_PREINSTALL_SUPPOS),
|
||||||
|
MAKENAMEIDMAP (IDS_PREINSTALL_NOSUPPOS)
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef MAKENAMEIDMAP
|
#ifdef MAKENAMEIDMAP
|
||||||
|
|||||||
Binary file not shown.
@@ -354,29 +354,55 @@ PCSPRIFILE CreatePriFileInstanceFromPath (LPCWSTR lpswFilePath)
|
|||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
//void DestroyPriFileInstance (PCSPRIFILE pFilePri)
|
||||||
|
//{
|
||||||
|
// if (!pFilePri) return;
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// if (g_tasklist.find (pFilePri) != g_tasklist.end ())
|
||||||
|
// {
|
||||||
|
// g_tasklist [pFilePri].bIsRunning = false;
|
||||||
|
// g_tasklist.erase (pFilePri);
|
||||||
|
// }
|
||||||
|
// IntPtr handlePtr = IntPtr (pFilePri);
|
||||||
|
// System::Runtime::InteropServices::GCHandle handle = System::Runtime::InteropServices::GCHandle::FromIntPtr (handlePtr);
|
||||||
|
// PriFileInst ^inst = safe_cast <PriFileInst ^> (handle.Target);
|
||||||
|
// delete inst;
|
||||||
|
// handle.Free ();
|
||||||
|
// System::GC::Collect ();
|
||||||
|
// System::GC::WaitForPendingFinalizers ();
|
||||||
|
// System::GC::Collect ();
|
||||||
|
// }
|
||||||
|
// catch (System::Exception ^e)
|
||||||
|
// {
|
||||||
|
// SetPriLastError (MPStringToStdW (e->Message));
|
||||||
|
// }
|
||||||
|
//}
|
||||||
void DestroyPriFileInstance (PCSPRIFILE pFilePri)
|
void DestroyPriFileInstance (PCSPRIFILE pFilePri)
|
||||||
{
|
{
|
||||||
if (!pFilePri) return;
|
if (!pFilePri) return;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (g_tasklist.find (pFilePri) != g_tasklist.end ())
|
CreateScopedLock (g_threadlock);
|
||||||
|
auto it = g_tasklist.find (pFilePri);
|
||||||
|
if (it != g_tasklist.end ())
|
||||||
{
|
{
|
||||||
g_tasklist [pFilePri].bIsRunning = false;
|
it->second.bIsRunning = false;
|
||||||
g_tasklist.erase (pFilePri);
|
g_tasklist.erase (it);
|
||||||
}
|
}
|
||||||
IntPtr handlePtr = IntPtr (pFilePri);
|
IntPtr handlePtr = IntPtr (pFilePri);
|
||||||
System::Runtime::InteropServices::GCHandle handle = System::Runtime::InteropServices::GCHandle::FromIntPtr (handlePtr);
|
System::Runtime::InteropServices::GCHandle handle = System::Runtime::InteropServices::GCHandle::FromIntPtr (handlePtr);
|
||||||
PriFileInst ^inst = safe_cast <PriFileInst ^> (handle.Target);
|
PriFileInst ^inst = safe_cast <PriFileInst ^> (handle.Target);
|
||||||
delete inst;
|
delete inst;
|
||||||
handle.Free ();
|
handle.Free ();
|
||||||
System::GC::Collect ();
|
|
||||||
System::GC::WaitForPendingFinalizers ();
|
|
||||||
System::GC::Collect ();
|
|
||||||
}
|
}
|
||||||
catch (System::Exception ^e)
|
catch (System::Exception ^e)
|
||||||
{
|
{
|
||||||
SetPriLastError (MPStringToStdW (e->Message));
|
SetPriLastError (MPStringToStdW (e->Message));
|
||||||
}
|
}
|
||||||
|
System::GC::Collect ();
|
||||||
|
System::GC::WaitForPendingFinalizers ();
|
||||||
|
System::GC::Collect ();
|
||||||
}
|
}
|
||||||
LPCWSTR PriFileGetLastError ()
|
LPCWSTR PriFileGetLastError ()
|
||||||
{
|
{
|
||||||
@@ -724,44 +750,96 @@ void PriFileIterateTaskCli (Object^ pFilePriObj)
|
|||||||
PCSPRIFILE pFilePri = (PCSPRIFILE)ptr.ToPointer ();
|
PCSPRIFILE pFilePri = (PCSPRIFILE)ptr.ToPointer ();
|
||||||
PriFileIterateTask (pFilePri);
|
PriFileIterateTask (pFilePri);
|
||||||
}
|
}
|
||||||
|
//void AddPriResourceName (PCSPRIFILE pFilePri, const std::vector <std::wnstring> &urilist)
|
||||||
|
//{
|
||||||
|
// if (!pFilePri) return;
|
||||||
|
// if (!urilist.size ()) return;
|
||||||
|
// try { g_tasklist.at (pFilePri); } catch (const std::exception &e) { g_tasklist [pFilePri] = TASKINFO_SEARCH (); }
|
||||||
|
// auto &task = g_tasklist.at (pFilePri);
|
||||||
|
// bool isallfined = true;
|
||||||
|
// {
|
||||||
|
// CreateScopedLock (g_threadlock);
|
||||||
|
// CreateScopedLock (g_iterlock);
|
||||||
|
// for (auto &it : urilist)
|
||||||
|
// {
|
||||||
|
// if (it.empty ()) continue;
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// if (task.mapTasks [TASKITEM_SEARCH (it)].has_search ())
|
||||||
|
// {
|
||||||
|
// isallfined = isallfined && true;
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
// else isallfined = isallfined && false;
|
||||||
|
// }
|
||||||
|
// catch (const std::exception &e)
|
||||||
|
// {
|
||||||
|
// task.mapTasks [TASKITEM_SEARCH (it)] = TASKRESULT_FIND ();
|
||||||
|
// isallfined = isallfined && false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if (isallfined) return;
|
||||||
|
// // while (task.bIsRunning) { Sleep (200); }
|
||||||
|
// System::Threading::Thread ^t = nullptr;
|
||||||
|
// if (!task.bIsRunning)
|
||||||
|
// {
|
||||||
|
// // task.bIsRunning = true;
|
||||||
|
// t = gcnew System::Threading::Thread (gcnew System::Threading::ParameterizedThreadStart (PriFileIterateTaskCli));
|
||||||
|
// t->IsBackground = true;
|
||||||
|
// t->Start (IntPtr (pFilePri));
|
||||||
|
// }
|
||||||
|
//}
|
||||||
void AddPriResourceName (PCSPRIFILE pFilePri, const std::vector <std::wnstring> &urilist)
|
void AddPriResourceName (PCSPRIFILE pFilePri, const std::vector <std::wnstring> &urilist)
|
||||||
{
|
{
|
||||||
if (!pFilePri) return;
|
if (!pFilePri) return;
|
||||||
if (!urilist.size ()) return;
|
if (!urilist.size ()) return;
|
||||||
try { g_tasklist.at (pFilePri); } catch (const std::exception &e) { g_tasklist [pFilePri] = TASKINFO_SEARCH (); }
|
|
||||||
auto &task = g_tasklist.at (pFilePri);
|
|
||||||
bool isallfined = true;
|
|
||||||
{
|
{
|
||||||
CreateScopedLock (g_threadlock);
|
CreateScopedLock (g_threadlock);
|
||||||
|
if (g_tasklist.find (pFilePri) == g_tasklist.end ())
|
||||||
|
{
|
||||||
|
g_tasklist [pFilePri] = TASKINFO_SEARCH ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TASKINFO_SEARCH *ptask = nullptr;
|
||||||
|
{
|
||||||
|
CreateScopedLock (g_threadlock);
|
||||||
|
ptask = &g_tasklist.at (pFilePri);
|
||||||
|
}
|
||||||
|
auto &task = *ptask;
|
||||||
|
bool isallfined = true;
|
||||||
|
{
|
||||||
CreateScopedLock (g_iterlock);
|
CreateScopedLock (g_iterlock);
|
||||||
for (auto &it : urilist)
|
for (auto &it : urilist)
|
||||||
{
|
{
|
||||||
if (it.empty ()) continue;
|
if (it.empty ()) continue;
|
||||||
try
|
TASKITEM_SEARCH key (it);
|
||||||
|
auto itFound = task.mapTasks.find (key);
|
||||||
|
if (itFound != task.mapTasks.end ())
|
||||||
{
|
{
|
||||||
if (task.mapTasks [TASKITEM_SEARCH (it)].has_search ())
|
if (itFound->second.has_search ())
|
||||||
{
|
{
|
||||||
isallfined = isallfined && true;
|
isallfined = isallfined && true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else isallfined = isallfined && false;
|
else isallfined = isallfined && false;
|
||||||
}
|
}
|
||||||
catch (const std::exception &e)
|
else
|
||||||
{
|
{
|
||||||
task.mapTasks [TASKITEM_SEARCH (it)] = TASKRESULT_FIND ();
|
task.mapTasks [key] = TASKRESULT_FIND ();
|
||||||
isallfined = isallfined && false;
|
isallfined = isallfined && false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isallfined) return;
|
if (isallfined) return;
|
||||||
// while (task.bIsRunning) { Sleep (200); }
|
|
||||||
System::Threading::Thread ^t = nullptr;
|
|
||||||
if (!task.bIsRunning)
|
|
||||||
{
|
{
|
||||||
// task.bIsRunning = true;
|
CreateScopedLock (g_threadlock);
|
||||||
t = gcnew System::Threading::Thread (gcnew System::Threading::ParameterizedThreadStart (PriFileIterateTaskCli));
|
if (!task.bIsRunning)
|
||||||
t->IsBackground = true;
|
{
|
||||||
t->Start (IntPtr (pFilePri));
|
System::Threading::Thread ^t = gcnew System::Threading::Thread (gcnew System::Threading::ParameterizedThreadStart (PriFileIterateTaskCli));
|
||||||
|
t->IsBackground = true;
|
||||||
|
t->Start (IntPtr (pFilePri));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void FindPriResource (PCSPRIFILE pFilePri, HLPCWSTRLIST hUriList)
|
void FindPriResource (PCSPRIFILE pFilePri, HLPCWSTRLIST hUriList)
|
||||||
|
|||||||
@@ -328,7 +328,7 @@ progress.win-ring:indeterminate::-ms-fill {
|
|||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
min-height: 10%;
|
min-height: 5%;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
max-height: calc(100% - 10.5em);
|
max-height: calc(100% - 10.5em);
|
||||||
@@ -649,3 +649,23 @@ progress.win-ring:indeterminate::-ms-fill {
|
|||||||
.page.installfailed>.controls>.command button:nth-of-type(2) {
|
.page.installfailed>.controls>.command button:nth-of-type(2) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.page .content .pkgsupport {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page.preinstall .content .pkgsupport.preinstall {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page .content .pkgsupport>* {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page .content .pkgsupport.support>.support {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page .content .pkgsupport.not-support>.not-support {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
@@ -257,7 +257,12 @@
|
|||||||
<p class="pkgtitle multiple" data-res-byname="IDS_PREINSTALL_MPKGNAME"></p>
|
<p class="pkgtitle multiple" data-res-byname="IDS_PREINSTALL_MPKGNAME"></p>
|
||||||
<p class="pkgapplabel" data-res-byname="IDS_MSAPP"></p>
|
<p class="pkgapplabel" data-res-byname="IDS_MSAPP"></p>
|
||||||
<p class="pkgpublisher" data-res-byname="IDS_PUBLISHER"></p>
|
<p class="pkgpublisher" data-res-byname="IDS_PUBLISHER"></p>
|
||||||
<p class="pkgversion" data-res-byname="IDS_VERSION"></p><br />
|
<p class="pkgversion" data-res-byname="IDS_VERSION"></p>
|
||||||
|
<p class="pkgsupport preinstall">
|
||||||
|
<span class="support" data-res-byname="IDS_PREINSTALL_SUPPOS"></span>
|
||||||
|
<span class="not-support" data-res-byname="IDS_PREINSTALL_NOSUPPOS"></span>
|
||||||
|
</p>
|
||||||
|
<br />
|
||||||
<p class="pkgfunctions-label" data-res-byname="IDS_FUNCTIONNAME"></p>
|
<p class="pkgfunctions-label" data-res-byname="IDS_FUNCTIONNAME"></p>
|
||||||
<div class="functions">
|
<div class="functions">
|
||||||
<ul>
|
<ul>
|
||||||
@@ -317,6 +322,7 @@
|
|||||||
var slfilter = storelogo.querySelector(".filter");
|
var slfilter = storelogo.querySelector(".filter");
|
||||||
var pi = Bridge.Package.pkginfo(this.value);
|
var pi = Bridge.Package.pkginfo(this.value);
|
||||||
var reason = page.querySelector(".reason textarea");
|
var reason = page.querySelector(".reason textarea");
|
||||||
|
var support = page.querySelector(".pkgsupport");
|
||||||
if (pi && pi.valid) {
|
if (pi && pi.valid) {
|
||||||
var res = Bridge.Resources;
|
var res = Bridge.Resources;
|
||||||
pkgtitle.textContent = strutils.format(res.byname("IDS_PREINSTALL_MPKGNAME"), pi.properties.display_name);
|
pkgtitle.textContent = strutils.format(res.byname("IDS_PREINSTALL_MPKGNAME"), pi.properties.display_name);
|
||||||
@@ -355,7 +361,16 @@
|
|||||||
storelogo.style.backgroundColor = bc;
|
storelogo.style.backgroundColor = bc;
|
||||||
slfilter.style.background = Color.genTileBackFilter(bc);
|
slfilter.style.background = Color.genTileBackFilter(bc);
|
||||||
}
|
}
|
||||||
setFlyoutDisplayInfo(pi);
|
var support = setFlyoutDisplayInfo(pi);
|
||||||
|
var supportDisplay = page.querySelector(".pkgsupport");
|
||||||
|
if (support.architectureSupport && support.osminversionSupport) {
|
||||||
|
supportDisplay.classList.add("support");
|
||||||
|
supportDisplay.classList.remove("not-support");
|
||||||
|
} else {
|
||||||
|
supportDisplay.classList.add("not-support");
|
||||||
|
supportDisplay.classList.remove("support");
|
||||||
|
}
|
||||||
|
supportDisplay.setAttribute("title", strutils.format("OS Min Version: {0}, Architecture: {1}", support.showOsminversionText, support.showArchitectureText));
|
||||||
var hres = Bridge.Package.installResult(this.value);
|
var hres = Bridge.Package.installResult(this.value);
|
||||||
if (hres && hres.failed) {
|
if (hres && hres.failed) {
|
||||||
reason.textContent = hres.message;
|
reason.textContent = hres.message;
|
||||||
|
|||||||
+62
-6
@@ -113,6 +113,7 @@
|
|||||||
push_nonull(titlepart, content.querySelector(".pkgapplabel"));
|
push_nonull(titlepart, content.querySelector(".pkgapplabel"));
|
||||||
push_nonull(titlepart, content.querySelector(".pkgpublisher"));
|
push_nonull(titlepart, content.querySelector(".pkgpublisher"));
|
||||||
push_nonull(titlepart, content.querySelector(".pkgversion"));
|
push_nonull(titlepart, content.querySelector(".pkgversion"));
|
||||||
|
push_nonull(titlepart, content.querySelector(".pkgsupport"));
|
||||||
push_nonull(textpart, content.querySelector(".pkgfunctions-label"));
|
push_nonull(textpart, content.querySelector(".pkgfunctions-label"));
|
||||||
push_nonull(textpart, content.querySelector(".functions"));
|
push_nonull(textpart, content.querySelector(".functions"));
|
||||||
push_nonull(textpart, content.querySelector(".moreinfo"));
|
push_nonull(textpart, content.querySelector(".moreinfo"));
|
||||||
@@ -320,6 +321,13 @@
|
|||||||
function setFlyoutDisplayInfo(pkginfo) {
|
function setFlyoutDisplayInfo(pkginfo) {
|
||||||
var flyout = document.getElementById("moreinfo-flyout");
|
var flyout = document.getElementById("moreinfo-flyout");
|
||||||
var content = document.getElementById("moreinfo-flyout-content");
|
var content = document.getElementById("moreinfo-flyout-content");
|
||||||
|
var ret = {
|
||||||
|
architectureSupport: false,
|
||||||
|
osminversionSupport: false,
|
||||||
|
showArchitectureText: "",
|
||||||
|
showOsminversionText: "",
|
||||||
|
};
|
||||||
|
var sysArch = Bridge.External.System.Archievement;
|
||||||
(function() {
|
(function() {
|
||||||
var name = content.querySelector(".id.name");
|
var name = content.querySelector(".id.name");
|
||||||
name.textContent = pkginfo.identity.name;
|
name.textContent = pkginfo.identity.name;
|
||||||
@@ -328,32 +336,52 @@
|
|||||||
var version = content.querySelector(".id.version");
|
var version = content.querySelector(".id.version");
|
||||||
version.textContent = stringifyVersion(pkginfo.identity.realver);
|
version.textContent = stringifyVersion(pkginfo.identity.realver);
|
||||||
var arch = content.querySelector(".id.arch");
|
var arch = content.querySelector(".id.arch");
|
||||||
|
console.log(pkginfo.identity.architecture);
|
||||||
if (pkginfo.type === 1) {
|
if (pkginfo.type === 1) {
|
||||||
switch (pkginfo.identity.architecture) {
|
switch (pkginfo.identity.architecture) {
|
||||||
case 1:
|
case 1:
|
||||||
arch.textContent = "x86";
|
arch.textContent = "x86";
|
||||||
|
if (sysArch == 0 || sysArch == 9) ret.architectureSupport = true;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
arch.textContent = "x64";
|
arch.textContent = "x64";
|
||||||
|
if (sysArch == 9) ret.architectureSupport = true;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
arch.textContent = "ARM";
|
arch.textContent = "ARM";
|
||||||
|
if (sysArch == 5 || sysArch == 12) ret.architectureSupport = true;
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
arch.textContent = "ARM64";
|
arch.textContent = "ARM64";
|
||||||
|
if (sysArch == 12) ret.architectureSupport = true;
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 15:
|
||||||
arch.textContent = "Neutral";
|
arch.textContent = "Neutral";
|
||||||
|
if (sysArch != 6 && sysArch > 0) ret.architectureSupport = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
ret.showArchitectureText = arch.textContent;
|
||||||
} else if (pkginfo.type === 2) {
|
} else if (pkginfo.type === 2) {
|
||||||
var varch = pkginfo.identity.architecture;
|
var varch = pkginfo.identity.architecture;
|
||||||
var strarr = [];
|
var strarr = [];
|
||||||
if (varch & 1) strarr.push("x86");
|
if (varch & 1) {
|
||||||
if (varch & 2) strarr.push("x64");
|
strarr.push("x86");
|
||||||
if (varch & 4) strarr.push("ARM");
|
if (sysArch == 0 || sysArch == 9) ret.architectureSupport = true;
|
||||||
if (varch & 8) strarr.push("ARM64");
|
}
|
||||||
|
if (varch & 2) {
|
||||||
|
strarr.push("x64");
|
||||||
|
if (sysArch == 9) ret.architectureSupport = true;
|
||||||
|
}
|
||||||
|
if (varch & 4) {
|
||||||
|
strarr.push("ARM");
|
||||||
|
if (sysArch == 5 || sysArch == 12) ret.architectureSupport = true;
|
||||||
|
}
|
||||||
|
if (varch & 8) {
|
||||||
|
strarr.push("ARM64");
|
||||||
|
if (sysArch == 12) ret.architectureSupport = true;
|
||||||
|
}
|
||||||
arch.textContent = strarr.join(", ");
|
arch.textContent = strarr.join(", ");
|
||||||
|
ret.showArchitectureText = arch.textContent;
|
||||||
}
|
}
|
||||||
var family = content.querySelector(".id.family");
|
var family = content.querySelector(".id.family");
|
||||||
family.textContent = pkginfo.identity.package_family_name;
|
family.textContent = pkginfo.identity.package_family_name;
|
||||||
@@ -370,6 +398,24 @@
|
|||||||
var sys = content.querySelector(".info.sys");
|
var sys = content.querySelector(".info.sys");
|
||||||
var strutils = Bridge.External.String;
|
var strutils = Bridge.External.String;
|
||||||
sys.textContent = strutils.format(Bridge.Resources.byname("IDS_MOREINFO_INFOSYS_VALUE"), pkginfo.prerequisites.os_min_version_description, stringifyVersion(pkginfo.prerequisites.os_min_version));
|
sys.textContent = strutils.format(Bridge.Resources.byname("IDS_MOREINFO_INFOSYS_VALUE"), pkginfo.prerequisites.os_min_version_description, stringifyVersion(pkginfo.prerequisites.os_min_version));
|
||||||
|
var pkgSupportVer = pkginfo.prerequisites.os_min_version;
|
||||||
|
var systemSupportVer = Bridge.External.System.Version;
|
||||||
|
ret.showOsminversionText = stringifyVersion(pkgSupportVer);
|
||||||
|
if (pkgSupportVer.major < systemSupportVer.major) {
|
||||||
|
ret.osminversionSupport = true;
|
||||||
|
} else if (pkgSupportVer.major == systemSupportVer.major) {
|
||||||
|
if (pkgSupportVer.minor < systemSupportVer.minor) {
|
||||||
|
ret.osminversionSupport = true;
|
||||||
|
} else if (pkgSupportVer.minor == systemSupportVer.minor) {
|
||||||
|
if (pkgSupportVer.major == 6 && pkgSupportVer.minor == 3 && pkgSupportVer.build == 1) {
|
||||||
|
if (pkginfo.identity.architecture & (4 | 8)) {
|
||||||
|
ret.osminversionSupport = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ret.osminversionSupport = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
var lang = content.querySelector(".info.langs");
|
var lang = content.querySelector(".info.langs");
|
||||||
lang.innerHTML = "";
|
lang.innerHTML = "";
|
||||||
for (var i = 0; i < pkginfo.resources.languages.length; i++) {
|
for (var i = 0; i < pkginfo.resources.languages.length; i++) {
|
||||||
@@ -379,6 +425,7 @@
|
|||||||
lang.appendChild(li);
|
lang.appendChild(li);
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
function noticeLoadPreinstallPage(ismul) {
|
function noticeLoadPreinstallPage(ismul) {
|
||||||
@@ -451,7 +498,16 @@
|
|||||||
funclist.appendChild(li);
|
funclist.appendChild(li);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setFlyoutDisplayInfo(pkginfo);
|
var support = setFlyoutDisplayInfo(pkginfo);
|
||||||
|
var supportDisplay = page.querySelector(".pkgsupport");
|
||||||
|
if (support.architectureSupport && support.osminversionSupport) {
|
||||||
|
supportDisplay.classList.add("support");
|
||||||
|
supportDisplay.classList.remove("not-support");
|
||||||
|
} else {
|
||||||
|
supportDisplay.classList.add("not-support");
|
||||||
|
supportDisplay.classList.remove("support");
|
||||||
|
}
|
||||||
|
supportDisplay.setAttribute("title", strutils.format("OS Min Version: {0}, Architecture: {1}", support.showOsminversionText, support.showArchitectureText));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,12 +30,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.page .reason textarea {
|
.page .reason textarea {
|
||||||
background-color: rgba (255, 255, 255, 0);
|
background-color: rgba(255, 255, 255, 0);
|
||||||
color: white;
|
color: white;
|
||||||
border: 2px solid white;
|
border: 2px solid white;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.page .content .pkgsupport.support>.support {
|
||||||
|
color: rgb(84, 197, 52);
|
||||||
|
}
|
||||||
|
|
||||||
|
.page .content .pkgsupport.not-support>.not-support {
|
||||||
|
color: rgb(209, 57, 46);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* App Launch List */
|
/* App Launch List */
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,14 @@
|
|||||||
color: #0078d7;
|
color: #0078d7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.page .content .pkgsupport.support>.support {
|
||||||
|
color: rgb(0, 138, 23);
|
||||||
|
}
|
||||||
|
|
||||||
|
.page .content .pkgsupport.not-support>.not-support {
|
||||||
|
color: rgb(236, 28, 36);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* App Launch List */
|
/* App Launch List */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user