Add Microsoft Store MSIX package build (#14142)
* docs: add MSIX Store build design spec * docs: update MSIX spec (PFN deep link, .drc, Associate tab) and add implementation plan * ci: add MSIX logo asset generator and generated assets * ci: fix MSIX asset rendering edge bleed (PixelOffsetMode) and make output order deterministic * ci: add MSIX AppxManifest template * ci: add MSIX packaging script * ci: make build_msix.ps1 stage-only exit dot-source safe * ci: build MSIX Store package in Windows job * ci: run MSIX pack after existing Windows uploads and keep it out of release downloads * feat: add MSIX packaged-context detection helpers * fix: resolve MSIX package APIs dynamically to keep Win7 loadable * feat: suppress self-update in MSIX Store build * feat: suppress runtime file associations in MSIX Store build * feat: keep version check in MSIX build, point update dialog at the Store The update check is notification-only (OrcaSlicer never auto-downloads), so the Store build keeps checking for new versions instead of skipping the check. What changes when packaged is the new-version dialog: the Download button is hidden, the info text asks the user to update from the Microsoft Store, and the hyperlink / wxID_YES action opens the Store product page instead of the GitHub release page. * docs: align spec verification plan with Store-redirect updater behavior * feat: default MSIX identity to the reserved Partner Center values * feat: render MSIX logos full-bleed from the gradient-circle SVG * feat: point update dialog Download button at the Store in MSIX builds * feat: link Associate tab to Windows Default Apps settings in MSIX builds * docs: align spec with review-driven logo, dialog and Associate-tab changes * clearn up
This commit is contained in:
@@ -2859,7 +2859,11 @@ bool GUI_App::on_init_inner()
|
||||
switch (dialog.ShowModal())
|
||||
{
|
||||
case wxID_YES:
|
||||
wxLaunchDefaultBrowser(version_info.url);
|
||||
// Store builds get updates from the Microsoft Store, not the GitHub release page.
|
||||
if (is_running_in_msix())
|
||||
open_ms_store_product_page();
|
||||
else
|
||||
wxLaunchDefaultBrowser(version_info.url);
|
||||
break;
|
||||
case wxID_NO:
|
||||
break;
|
||||
@@ -9112,6 +9116,10 @@ static bool del_win_registry(HKEY hkeyHive, const wchar_t *pszVar, const wchar_t
|
||||
void GUI_App::associate_files(std::wstring extend)
|
||||
{
|
||||
#ifdef WIN32
|
||||
// MSIX: shell integration is declared in the package manifest; registry
|
||||
// writes from a packaged process are virtualized and invisible to the shell.
|
||||
if (is_running_in_msix())
|
||||
return;
|
||||
wchar_t app_path[MAX_PATH];
|
||||
::GetModuleFileNameW(nullptr, app_path, sizeof(app_path));
|
||||
|
||||
@@ -9137,6 +9145,8 @@ void GUI_App::associate_files(std::wstring extend)
|
||||
void GUI_App::disassociate_files(std::wstring extend)
|
||||
{
|
||||
#ifdef WIN32
|
||||
if (is_running_in_msix())
|
||||
return;
|
||||
wchar_t app_path[MAX_PATH];
|
||||
::GetModuleFileNameW(nullptr, app_path, sizeof(app_path));
|
||||
|
||||
@@ -9188,6 +9198,8 @@ bool GUI_App::check_url_association(std::wstring url_prefix, std::wstring& reg_b
|
||||
void GUI_App::associate_url(std::wstring url_prefix)
|
||||
{
|
||||
#ifdef WIN32
|
||||
if (is_running_in_msix())
|
||||
return;
|
||||
boost::filesystem::path binary_path(boost::filesystem::canonical(boost::dll::program_location()));
|
||||
wxString wbinary = from_path(binary_path);
|
||||
BOOST_LOG_TRIVIAL(info) << "Downloader registration: Path of binary: " << wbinary.ToUTF8().data();
|
||||
@@ -9213,6 +9225,8 @@ void GUI_App::associate_url(std::wstring url_prefix)
|
||||
void GUI_App::disassociate_url(std::wstring url_prefix)
|
||||
{
|
||||
#ifdef WIN32
|
||||
if (is_running_in_msix())
|
||||
return;
|
||||
wxRegKey key_full(wxRegKey::HKCU, "Software\\Classes\\" + url_prefix + "\\shell\\open\\command");
|
||||
if (!key_full.Exists()) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user