Updates for WebUI:

· [Important] Fixed the destruction issue with PriReader (caused by incorrect pointer types leading to unexecuted object destruction tasks).
· [Important] Added a program execution selection interface for packages containing multiple applications (still using WebUI).
 Issue: Since the selection window is set to close when losing focus, checking the "Launch when ready" option after successful installation causes the pop-up window to disappear when a Toast notification appears (due to focus loss). Currently, the selection window can only be displayed by clicking a button.
· [Optimization] Reduced the creation of PriReader objects to lower memory and storage consumption.
(Translated by DeepSeek)
This commit is contained in:
Bruce
2025-03-02 00:33:09 +08:00
parent ff0cebc7cc
commit 949759ffe9
14 changed files with 2445 additions and 60 deletions

View File

@@ -89,9 +89,40 @@ struct PackageInfomation
this->properties.description = reader.getPropertyDescription ();
this->properties.publisher = reader.getPropertyPublisher ();
}
this->properties.logoBase64 = GetLogoBase64FromReader (reader, &this->properties.logoStream);
this->properties.logoBase64 = GetLogoBase64FromReader (reader, &this->properties.logoStream, &pri);
this->prerequisites.osMinVersion = reader.getPrerequisiteOSMinVersion ();
reader.getApplications (this->applications);
for (auto &it : this->applications)
{
for (auto &sit : it)
{
if (LabelEqual (sit.first, L"AppUserModelID")) continue;
else if (LabelEqual (sit.first, L"Id")) continue;
else if (LabelEqual (sit.first, L"DisplayName"))
{
if (isMsResourceLabel (sit.second))
{
std::wstring temp (L"");
temp += pri.findStringValue (sit.second);
it [L"DisplayName"] = temp;
}
}
else if (LabelEqual (sit.first, L"ShortName"))
{
if (isMsResourceLabel (sit.second))
{
std::wstring temp (L"");
temp += pri.findStringValue (sit.second);
it [L"ShortName"] = temp;
}
}
else if (LabelEqual (sit.first, L"Square44x44Logo"))
{
sit.second = pri.findFilePathValue (sit.second);
it [strlabel (L"Square44x44LogoBase64")] = GetBase64FromPathW (reader, sit.second.c_str (), NULL, &pri);
}
}
}
reader.getCapabilities (capabilities);
reader.getDependencies (dependencies);
return reader.isAvailable ();