diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/CppWinUiDesktopInstancing (Package).wapproj b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/CppWinUiDesktopInstancing (Package).wapproj
similarity index 93%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/CppWinUiDesktopInstancing (Package).wapproj
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/CppWinUiDesktopInstancing (Package).wapproj
index eaf7f6445..94705d0e7 100644
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/CppWinUiDesktopInstancing (Package).wapproj
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/CppWinUiDesktopInstancing (Package).wapproj
@@ -36,9 +36,9 @@
- 2a6ee91d-5eff-4074-a8b1-7f222eb217cd
- 10.0.19041.0
- 10.0.19041.0
+ 9cb90dc4-272b-4414-9bb7-ba5412038211
+ 10.0.22621.0
+ 10.0.17763.0
en-US
false
..\CppWinUiDesktopInstancing\CppWinUiDesktopInstancing.vcxproj
@@ -63,10 +63,10 @@
-
+
build
-
+
build
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/LockScreenLogo.scale-200.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/LockScreenLogo.scale-200.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/LockScreenLogo.scale-200.png
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/LockScreenLogo.scale-200.png
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/SplashScreen.scale-200.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/SplashScreen.scale-200.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/SplashScreen.scale-200.png
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/SplashScreen.scale-200.png
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/Square150x150Logo.scale-200.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/Square150x150Logo.scale-200.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/Square150x150Logo.scale-200.png
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/Square150x150Logo.scale-200.png
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/Square44x44Logo.scale-200.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/Square44x44Logo.scale-200.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/Square44x44Logo.scale-200.png
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/Square44x44Logo.scale-200.png
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/Square44x44Logo.targetsize-24_altform-unplated.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/Square44x44Logo.targetsize-24_altform-unplated.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/Square44x44Logo.targetsize-24_altform-unplated.png
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/Square44x44Logo.targetsize-24_altform-unplated.png
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/StoreLogo.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/StoreLogo.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/StoreLogo.png
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/StoreLogo.png
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/Wide310x150Logo.scale-200.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/Wide310x150Logo.scale-200.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Images/Wide310x150Logo.scale-200.png
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Images/Wide310x150Logo.scale-200.png
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Package.appxmanifest b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Package.appxmanifest
similarity index 65%
rename from Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Package.appxmanifest
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Package.appxmanifest
index 73ec4da51..d9fd930d4 100644
--- a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Package.appxmanifest
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing (Package)/Package.appxmanifest
@@ -7,13 +7,13 @@
IgnorableNamespaces="uap rescap">
- CsWinUiDesktopInstancing
- Microsoft Corporation
+ CppWinUiDesktopInstancing (Package)
+ dahoehna
Images\StoreLogo.png
@@ -31,26 +31,14 @@
Executable="$targetnametoken$.exe"
EntryPoint="$targetentrypoint$">
-
-
-
-
- Images\StoreLogo.png
-
- .moo
-
-
-
-
-
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing.sln b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing.sln
index f60780c17..39df36d73 100644
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing.sln
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing.sln
@@ -1,11 +1,11 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31624.102
+# Visual Studio Version 17
+VisualStudioVersion = 17.3.32811.315
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "CppWinUiDesktopInstancing (Package)", "CppWinUiDesktopInstancing\CppWinUiDesktopInstancing (Package)\CppWinUiDesktopInstancing (Package).wapproj", "{2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}"
+Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "CppWinUiDesktopInstancing (Package)", "CppWinUiDesktopInstancing (Package)\CppWinUiDesktopInstancing (Package).wapproj", "{9CB90DC4-272B-4414-9BB7-BA5412038211}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppWinUiDesktopInstancing", "CppWinUiDesktopInstancing\CppWinUiDesktopInstancing\CppWinUiDesktopInstancing.vcxproj", "{49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppWinUiDesktopInstancing", "CppWinUiDesktopInstancing\CppWinUiDesktopInstancing.vcxproj", "{67844494-855A-468D-8D92-FA34D7E2F680}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -17,41 +17,41 @@ Global
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Debug|arm64.ActiveCfg = Debug|arm64
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Debug|arm64.Build.0 = Debug|arm64
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Debug|arm64.Deploy.0 = Debug|arm64
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Debug|x64.ActiveCfg = Debug|x64
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Debug|x64.Build.0 = Debug|x64
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Debug|x64.Deploy.0 = Debug|x64
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Debug|x86.ActiveCfg = Debug|x86
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Debug|x86.Build.0 = Debug|x86
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Debug|x86.Deploy.0 = Debug|x86
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Release|arm64.ActiveCfg = Release|arm64
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Release|arm64.Build.0 = Release|arm64
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Release|arm64.Deploy.0 = Release|arm64
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Release|x64.ActiveCfg = Release|x64
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Release|x64.Build.0 = Release|x64
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Release|x64.Deploy.0 = Release|x64
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Release|x86.ActiveCfg = Release|x86
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Release|x86.Build.0 = Release|x86
- {2A6EE91D-5EFF-4074-A8B1-7F222EB217CD}.Release|x86.Deploy.0 = Release|x86
- {49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}.Debug|arm64.ActiveCfg = Debug|arm64
- {49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}.Debug|arm64.Build.0 = Debug|arm64
- {49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}.Debug|x64.ActiveCfg = Debug|x64
- {49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}.Debug|x64.Build.0 = Debug|x64
- {49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}.Debug|x86.ActiveCfg = Debug|Win32
- {49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}.Debug|x86.Build.0 = Debug|Win32
- {49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}.Release|arm64.ActiveCfg = Release|arm64
- {49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}.Release|arm64.Build.0 = Release|arm64
- {49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}.Release|x64.ActiveCfg = Release|x64
- {49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}.Release|x64.Build.0 = Release|x64
- {49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}.Release|x86.ActiveCfg = Release|Win32
- {49AC0C00-DF6B-4F6C-A5DD-D178BF133A2C}.Release|x86.Build.0 = Release|Win32
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Debug|arm64.ActiveCfg = Debug|arm64
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Debug|arm64.Build.0 = Debug|arm64
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Debug|arm64.Deploy.0 = Debug|arm64
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Debug|x64.ActiveCfg = Debug|x64
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Debug|x64.Build.0 = Debug|x64
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Debug|x64.Deploy.0 = Debug|x64
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Debug|x86.ActiveCfg = Debug|x86
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Debug|x86.Build.0 = Debug|x86
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Debug|x86.Deploy.0 = Debug|x86
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Release|arm64.ActiveCfg = Release|arm64
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Release|arm64.Build.0 = Release|arm64
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Release|arm64.Deploy.0 = Release|arm64
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Release|x64.ActiveCfg = Release|x64
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Release|x64.Build.0 = Release|x64
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Release|x64.Deploy.0 = Release|x64
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Release|x86.ActiveCfg = Release|x86
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Release|x86.Build.0 = Release|x86
+ {9CB90DC4-272B-4414-9BB7-BA5412038211}.Release|x86.Deploy.0 = Release|x86
+ {67844494-855A-468D-8D92-FA34D7E2F680}.Debug|arm64.ActiveCfg = Debug|arm64
+ {67844494-855A-468D-8D92-FA34D7E2F680}.Debug|arm64.Build.0 = Debug|arm64
+ {67844494-855A-468D-8D92-FA34D7E2F680}.Debug|x64.ActiveCfg = Debug|x64
+ {67844494-855A-468D-8D92-FA34D7E2F680}.Debug|x64.Build.0 = Debug|x64
+ {67844494-855A-468D-8D92-FA34D7E2F680}.Debug|x86.ActiveCfg = Debug|Win32
+ {67844494-855A-468D-8D92-FA34D7E2F680}.Debug|x86.Build.0 = Debug|Win32
+ {67844494-855A-468D-8D92-FA34D7E2F680}.Release|arm64.ActiveCfg = Release|arm64
+ {67844494-855A-468D-8D92-FA34D7E2F680}.Release|arm64.Build.0 = Release|arm64
+ {67844494-855A-468D-8D92-FA34D7E2F680}.Release|x64.ActiveCfg = Release|x64
+ {67844494-855A-468D-8D92-FA34D7E2F680}.Release|x64.Build.0 = Release|x64
+ {67844494-855A-468D-8D92-FA34D7E2F680}.Release|x86.ActiveCfg = Release|Win32
+ {67844494-855A-468D-8D92-FA34D7E2F680}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {EF56AF65-60A9-4FB9-BCE7-4CA06BEDC705}
+ SolutionGuid = {5C838CC3-9397-401F-A1E9-08FD04D02E7A}
EndGlobalSection
EndGlobal
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/ActivationTrackerHelper.h b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/ActivationTrackerHelper.h
new file mode 100644
index 000000000..754f23f78
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/ActivationTrackerHelper.h
@@ -0,0 +1,53 @@
+#pragma once
+#include
+#include
+#include
+#include
+#include
+
+constexpr std::wstring_view c_redirectionKeyName{ L"SOFTWARE\\AppLifecycleExample"};
+constexpr std::wstring_view c_redirectionValueName{ L"NumberOfActivations" };
+
+inline wil::unique_hkey GetRegistryKey()
+{
+ wil::unique_hkey keyToRedirectionTracker{};
+ THROW_IF_WIN32_ERROR(RegCreateKeyEx(HKEY_CURRENT_USER, c_redirectionKeyName.data(), 0, nullptr, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, nullptr, keyToRedirectionTracker.put(), nullptr));
+
+ return std::move(keyToRedirectionTracker);
+}
+
+inline void SetNumberOfActivations(DWORD newNumberOfActivations)
+{
+ auto keyToRedirectionTracker{GetRegistryKey()};
+ THROW_IF_WIN32_ERROR(RegSetValueEx(keyToRedirectionTracker.get(), c_redirectionValueName.data(), 0, REG_DWORD, reinterpret_cast(&newNumberOfActivations), sizeof(newNumberOfActivations)));
+}
+
+inline DWORD GetNumberOfActivations()
+{
+ DWORD numberOfActivations = 0;
+ auto instanceTrackerKey = GetRegistryKey();
+
+ DWORD sizeOfEntry{};
+ auto getResult{ RegQueryValueEx(instanceTrackerKey.get(), c_redirectionValueName.data(), nullptr, nullptr, reinterpret_cast(&numberOfActivations), &sizeOfEntry) };
+
+ if (getResult == ERROR_FILE_NOT_FOUND)
+ {
+ THROW_IF_WIN32_ERROR(RegSetValueEx(instanceTrackerKey.get(), c_redirectionValueName.data(), 0, REG_DWORD, reinterpret_cast(&numberOfActivations), sizeof(numberOfActivations)));
+ return numberOfActivations;
+ }
+ else if (getResult != ERROR_MORE_DATA)
+ {
+ THROW_WIN32(getResult);
+ }
+
+ THROW_IF_WIN32_ERROR(RegQueryValueEx(instanceTrackerKey.get(), c_redirectionValueName.data(), nullptr, nullptr, reinterpret_cast(&numberOfActivations), &sizeOfEntry));
+ return numberOfActivations;
+}
+
+inline DWORD IncrementNumberOfRedirections()
+{
+ auto numberOfActivations{GetNumberOfActivations()};
+ numberOfActivations++;
+ SetNumberOfActivations(numberOfActivations);
+ return numberOfActivations;
+}
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/App.idl b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/App.idl
new file mode 100644
index 000000000..4d00ca1cb
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/App.idl
@@ -0,0 +1,3 @@
+namespace CppWinUiDesktopInstancing
+{
+}
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/App.xaml b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/App.xaml
similarity index 88%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/App.xaml
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/App.xaml
index 036fb69c9..5eabbbba8 100644
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/App.xaml
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/App.xaml
@@ -1,5 +1,4 @@
-
+
+
+using namespace winrt;
+using namespace Windows::Foundation;
+using namespace winrt::Microsoft::UI::Xaml;
+using namespace winrt::Microsoft::UI::Xaml::Controls;
+using namespace winrt::Microsoft::UI::Xaml::Navigation;
+using namespace CppWinUiDesktopInstancing;
+using namespace CppWinUiDesktopInstancing::implementation;
+
+// To learn more about WinUI, the WinUI project structure,
+// and more about our project templates, see: http://aka.ms/winui-project-info.
+
+///
+/// Initializes the singleton application object. This is the first line of authored code
+/// executed, and as such is the logical equivalent of main() or WinMain().
+///
+App::App()
+{
+ InitializeComponent();
+
+#if defined _DEBUG && !defined DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
+ UnhandledException([this](IInspectable const&, UnhandledExceptionEventArgs const& e)
+ {
+ if (IsDebuggerPresent())
+ {
+ auto errorMessage = e.Message();
+ __debugbreak();
+ }
+ });
+#endif
+}
+
+///
+/// Invoked when the application is launched normally by the end user. Other entry points
+/// will be used such as when the application is launched to open a specific file.
+///
+/// Details about the launch request and process.
+void App::OnLaunched(LaunchActivatedEventArgs const&)
+{
+ auto numberOfActivations{ IncrementNumberOfRedirections() };
+ window = make();
+
+ // GetInstances also gets the current instance.
+ // Meat and potatoes of redirection.
+ auto instances = winrt::Microsoft::Windows::AppLifecycle::AppInstance::GetInstances();
+
+ // Number will be incorrect if instance (instanceNumber < c_maxNumberOfInstances) is closed.
+ // Can be fixed on an OnExit event handler.
+ std::wstring windowTitle{L"Instances: "};
+ windowTitle.append(std::to_wstring(instances.Size() - 1));
+ window.Title(windowTitle);
+
+
+ // Need activated event args to pass into the redirected instance.
+ auto activatedArgs = winrt::Microsoft::Windows::AppLifecycle::AppInstance::GetCurrent().GetActivatedEventArgs();
+ bool isActivationRedirected = false;
+ if (instances.Size() > c_maxNumberOfInstances)
+ {
+ // Time to redirect
+ // Choose what instance to redirect to.
+ int instanceToRedirectTo = (numberOfActivations % c_maxNumberOfInstances);
+ isActivationRedirected = true;
+
+ // Need to call RedirectActivationToAsync on the instance to redirect to.
+ // Not passing in the instance into RedirectionActivationToAsync.
+ instances.GetAt(instanceToRedirectTo).RedirectActivationToAsync(activatedArgs).GetResults();
+ }
+
+ if (isActivationRedirected)
+ {
+ this->Exit();
+ }
+ else
+ {
+ window.Activate();
+ }
+}
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/App.xaml.h b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/App.xaml.h
new file mode 100644
index 000000000..9de4d849e
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/App.xaml.h
@@ -0,0 +1,17 @@
+#pragma once
+
+#include "App.xaml.g.h"
+
+namespace winrt::CppWinUiDesktopInstancing::implementation
+{
+ struct App : AppT
+ {
+ const DWORD c_maxNumberOfInstances{ 2 };
+ App();
+
+ void OnLaunched(Microsoft::UI::Xaml::LaunchActivatedEventArgs const&);
+
+ private:
+ winrt::Microsoft::UI::Xaml::Window window{ nullptr };
+ };
+}
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing.vcxproj b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing.vcxproj
similarity index 58%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing.vcxproj
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing.vcxproj
index c29d2bcce..8029a052e 100644
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing.vcxproj
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing.vcxproj
@@ -1,14 +1,13 @@
-
-
-
-
+
+
+
true
true
true
- {49ac0c00-df6b-4f6c-a5dd-d178bf133a2c}
+ {67844494-855a-468d-8d92-fa34d7e2f680}
CppWinUiDesktopInstancing
CppWinUiDesktopInstancing
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/MainWindow.xaml.cpp b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/MainWindow.xaml.cpp
deleted file mode 100644
index 60265969f..000000000
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/MainWindow.xaml.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-#include "pch.h"
-#include "App.xaml.h"
-#include "MainWindow.xaml.h"
-#if __has_include("MainWindow.g.cpp")
-#include "MainWindow.g.cpp"
-#endif
-
-using namespace winrt;
-using namespace winrt::Microsoft::UI::Xaml;
-
-namespace winrt::CppWinUiDesktopInstancing::implementation
-{
- MainWindow::MainWindow()
- {
- InitializeComponent();
- this->StatusListView().ItemsSource(messages);
- this->Title(winrt::hstring(L"CppWinUiDesktopInstancing"));
- }
-}
-
-void winrt::CppWinUiDesktopInstancing::implementation::MainWindow::ActivationInfoButton_Click(
- winrt::Windows::Foundation::IInspectable const& /*sender*/,
- winrt::Microsoft::UI::Xaml::RoutedEventArgs const& /*e*/)
-{
- GetActivationInfo();
-}
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/pch.cpp b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/pch.cpp
deleted file mode 100644
index f9d486919..000000000
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/pch.cpp
+++ /dev/null
@@ -1,4 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-#include "pch.h"
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/MainWindow.idl b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/MainWindow.idl
similarity index 51%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/MainWindow.idl
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/MainWindow.idl
index 1601f3d01..c4bf8e124 100644
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/MainWindow.idl
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/MainWindow.idl
@@ -1,7 +1,4 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-namespace CppWinUiDesktopInstancing
+namespace CppWinUiDesktopInstancing
{
[default_interface]
runtimeclass MainWindow : Microsoft.UI.Xaml.Window
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/MainWindow.xaml b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/MainWindow.xaml
new file mode 100644
index 000000000..6bfa4ebc7
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/MainWindow.xaml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/MainWindow.xaml.cpp b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/MainWindow.xaml.cpp
new file mode 100644
index 000000000..3bf0507c3
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/MainWindow.xaml.cpp
@@ -0,0 +1,30 @@
+#include "pch.h"
+#include "MainWindow.xaml.h"
+#if __has_include("MainWindow.g.cpp")
+#include "MainWindow.g.cpp"
+#endif
+#include "ActivationTrackerHelper.h"
+
+using namespace winrt;
+using namespace winrt::Microsoft::UI::Xaml;
+
+// To learn more about WinUI, the WinUI project structure,
+// and more about our project templates, see: http://aka.ms/winui-project-info.
+
+namespace winrt::CppWinUiDesktopInstancing::implementation
+{
+ MainWindow::MainWindow()
+ {
+ auto numberOfActivations{ GetNumberOfActivations() };
+ this->Title(winrt::to_hstring(static_cast(numberOfActivations)));
+ InitializeComponent();
+ auto activationTextBox{ activationTrackerTextBox()};
+ activationTextBox.Text(winrt::to_hstring(static_cast(numberOfActivations)));
+ }
+
+ void MainWindow::activationTrackerButton_Click(IInspectable const&, RoutedEventArgs const&)
+ {
+ auto activationTextBox{ activationTrackerTextBox() };
+ activationTextBox.Text(winrt::to_hstring(static_cast(GetNumberOfActivations())));
+ }
+}
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/MainWindow.xaml.h b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/MainWindow.xaml.h
similarity index 55%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/MainWindow.xaml.h
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/MainWindow.xaml.h
index 6b238a73d..71844da81 100644
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/MainWindow.xaml.h
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/MainWindow.xaml.h
@@ -1,7 +1,4 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-#pragma once
+#pragma once
#include "MainWindow.g.h"
namespace winrt::CppWinUiDesktopInstancing::implementation
@@ -9,10 +6,7 @@ namespace winrt::CppWinUiDesktopInstancing::implementation
struct MainWindow : MainWindowT
{
MainWindow();
-
- void ActivationInfoButton_Click(
- winrt::Windows::Foundation::IInspectable const& sender,
- winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e);
+ void activationTrackerButton_Click(Windows::Foundation::IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args);
};
}
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/app.manifest b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/app.manifest
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/app.manifest
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/app.manifest
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/packages.config b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/packages.config
similarity index 63%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/packages.config
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/packages.config
index 4d5709d40..b376144b5 100644
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/packages.config
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/packages.config
@@ -1,7 +1,7 @@
-
+
-
-
+
+
\ No newline at end of file
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/pch.cpp b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/pch.cpp
new file mode 100644
index 000000000..bcb5590be
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/pch.cpp
@@ -0,0 +1 @@
+#include "pch.h"
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/pch.h b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/pch.h
similarity index 72%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/pch.h
rename to Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/pch.h
index a9f87647a..2f32fca8c 100644
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing/pch.h
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/pch.h
@@ -1,19 +1,9 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-#pragma once
+#pragma once
#include
#include
#include
#include
-#include
-#include
-#include
-#include
-#include
-#include "strsafe.h"
-
// Undefine GetCurrentTime macro to prevent
// conflict with Storyboard::GetCurrentTime
#undef GetCurrentTime
@@ -32,8 +22,4 @@
#include
#include
#include
-
-#include
-#include
-
-#include
+#include
\ No newline at end of file
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/readme.txt b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/readme.txt
new file mode 100644
index 000000000..a84a00939
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/readme.txt
@@ -0,0 +1,27 @@
+========================================================================
+ CppWinUiDesktopInstancing Project Overview
+========================================================================
+
+This project demonstrates how to get started writing WinUI3 apps directly
+with standard C++, using the Windows App SDK and C++/WinRT packages and
+XAML compiler support to generate implementation headers from interface
+(IDL) files. These headers can then be used to implement the local
+Windows Runtime classes referenced in the app's XAML pages.
+
+Steps:
+1. Create an interface (IDL) file to define any local Windows Runtime
+ classes referenced in the app's XAML pages.
+2. Build the project once to generate implementation templates under
+ the "Generated Files" folder, as well as skeleton class definitions
+ under "Generated Files\sources".
+3. Use the skeleton class definitions for reference to implement your
+ Windows Runtime classes.
+
+========================================================================
+Learn more about Windows App SDK here:
+https://docs.microsoft.com/windows/apps/windows-app-sdk/
+Learn more about WinUI3 here:
+https://docs.microsoft.com/windows/apps/winui/winui3/
+Learn more about C++/WinRT here:
+http://aka.ms/cppwinrt/
+========================================================================
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/App.cpp b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/App.cpp
new file mode 100644
index 000000000..f4ae83b91
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/App.cpp
@@ -0,0 +1,118 @@
+#include "pch.h"
+
+#include "App.h"
+#include "MainPage.h"
+
+using namespace winrt;
+using namespace Windows::ApplicationModel;
+using namespace Windows::ApplicationModel::Activation;
+using namespace Windows::Foundation;
+using namespace Windows::UI::Xaml;
+using namespace Windows::UI::Xaml::Controls;
+using namespace Windows::UI::Xaml::Navigation;
+using namespace EMTrackingChecking;
+using namespace EMTrackingChecking::implementation;
+
+///
+/// Creates the singleton application object. This is the first line of authored code
+/// executed, and as such is the logical equivalent of main() or WinMain().
+///
+App::App()
+{
+ Suspending({ this, &App::OnSuspending });
+
+#if defined _DEBUG && !defined DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
+ UnhandledException([this](IInspectable const&, UnhandledExceptionEventArgs const& e)
+ {
+ if (IsDebuggerPresent())
+ {
+ auto errorMessage = e.Message();
+ __debugbreak();
+ }
+ });
+#endif
+}
+
+///
+/// Invoked when the application is launched normally by the end user. Other entry points
+/// will be used such as when the application is launched to open a specific file.
+///
+/// Details about the launch request and process.
+void App::OnLaunched(LaunchActivatedEventArgs const& e)
+{
+ Frame rootFrame{ nullptr };
+ auto content = Window::Current().Content();
+ if (content)
+ {
+ rootFrame = content.try_as();
+ }
+
+ // Do not repeat app initialization when the Window already has content,
+ // just ensure that the window is active
+ if (rootFrame == nullptr)
+ {
+ // Create a Frame to act as the navigation context and associate it with
+ // a SuspensionManager key
+ rootFrame = Frame();
+
+ rootFrame.NavigationFailed({ this, &App::OnNavigationFailed });
+
+ if (e.PreviousExecutionState() == ApplicationExecutionState::Terminated)
+ {
+ // Restore the saved session state only when appropriate, scheduling the
+ // final launch steps after the restore is complete
+ }
+
+ if (e.PrelaunchActivated() == false)
+ {
+ if (rootFrame.Content() == nullptr)
+ {
+ // When the navigation stack isn't restored navigate to the first page,
+ // configuring the new page by passing required information as a navigation
+ // parameter
+ rootFrame.Navigate(xaml_typename(), box_value(e.Arguments()));
+ }
+ // Place the frame in the current Window
+ Window::Current().Content(rootFrame);
+ // Ensure the current window is active
+ Window::Current().Activate();
+ }
+ }
+ else
+ {
+ if (e.PrelaunchActivated() == false)
+ {
+ if (rootFrame.Content() == nullptr)
+ {
+ // When the navigation stack isn't restored navigate to the first page,
+ // configuring the new page by passing required information as a navigation
+ // parameter
+ rootFrame.Navigate(xaml_typename(), box_value(e.Arguments()));
+ }
+ // Ensure the current window is active
+ Window::Current().Activate();
+ }
+ }
+}
+
+///
+/// Invoked when application execution is being suspended. Application state is saved
+/// without knowing whether the application will be terminated or resumed with the contents
+/// of memory still intact.
+///
+/// The source of the suspend request.
+/// Details about the suspend request.
+void App::OnSuspending([[maybe_unused]] IInspectable const& sender, [[maybe_unused]] SuspendingEventArgs const& e)
+{
+ // Save application state and stop any background activity
+}
+
+///
+/// Invoked when Navigation to a certain page fails
+///
+/// The Frame which failed navigation
+/// Details about the navigation failure
+void App::OnNavigationFailed(IInspectable const&, NavigationFailedEventArgs const& e)
+{
+ throw hresult_error(E_FAIL, hstring(L"Failed to load Page ") + e.SourcePageType().Name);
+}
\ No newline at end of file
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/App.h b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/App.h
new file mode 100644
index 000000000..c954c908f
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/App.h
@@ -0,0 +1,13 @@
+#pragma once
+#include "App.xaml.g.h"
+
+namespace winrt::EMTrackingChecking::implementation
+{
+ struct App : AppT
+ {
+ App();
+ void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs const&);
+ void OnSuspending(IInspectable const&, Windows::ApplicationModel::SuspendingEventArgs const&);
+ void OnNavigationFailed(IInspectable const&, Windows::UI::Xaml::Navigation::NavigationFailedEventArgs const&);
+ };
+}
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/App.idl b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/App.idl
new file mode 100644
index 000000000..66486506a
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/App.idl
@@ -0,0 +1,3 @@
+namespace EMTrackingChecking
+{
+}
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/App.xaml b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/App.xaml
new file mode 100644
index 000000000..8662056c5
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/App.xaml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/LockScreenLogo.scale-200.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/LockScreenLogo.scale-200.png
new file mode 100644
index 000000000..735f57adb
Binary files /dev/null and b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/LockScreenLogo.scale-200.png differ
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/SplashScreen.scale-200.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/SplashScreen.scale-200.png
new file mode 100644
index 000000000..023e7f1fe
Binary files /dev/null and b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/SplashScreen.scale-200.png differ
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/Square150x150Logo.scale-200.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/Square150x150Logo.scale-200.png
new file mode 100644
index 000000000..af49fec1a
Binary files /dev/null and b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/Square150x150Logo.scale-200.png differ
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/Square44x44Logo.scale-200.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/Square44x44Logo.scale-200.png
new file mode 100644
index 000000000..ce342a2ec
Binary files /dev/null and b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/Square44x44Logo.scale-200.png differ
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
new file mode 100644
index 000000000..f6c02ce97
Binary files /dev/null and b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/Square44x44Logo.targetsize-24_altform-unplated.png differ
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/StoreLogo.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/StoreLogo.png
new file mode 100644
index 000000000..7385b56c0
Binary files /dev/null and b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/StoreLogo.png differ
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/Wide310x150Logo.scale-200.png b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/Wide310x150Logo.scale-200.png
new file mode 100644
index 000000000..288995b39
Binary files /dev/null and b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Assets/Wide310x150Logo.scale-200.png differ
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/EMTrackingChecking.sln b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/EMTrackingChecking.sln
new file mode 100644
index 000000000..dd0f39613
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/EMTrackingChecking.sln
@@ -0,0 +1,51 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.3.32811.315
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EMTrackingChecking", "EMTrackingChecking.vcxproj", "{DF6319D7-92D4-413E-8699-6C50D552DAA9}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|ARM = Debug|ARM
+ Debug|ARM64 = Debug|ARM64
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|ARM = Release|ARM
+ Release|ARM64 = Release|ARM64
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Debug|ARM.ActiveCfg = Debug|ARM
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Debug|ARM.Build.0 = Debug|ARM
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Debug|ARM.Deploy.0 = Debug|ARM
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Debug|ARM64.Build.0 = Debug|ARM64
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Debug|ARM64.Deploy.0 = Debug|ARM64
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Debug|x64.ActiveCfg = Debug|x64
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Debug|x64.Build.0 = Debug|x64
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Debug|x64.Deploy.0 = Debug|x64
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Debug|x86.ActiveCfg = Debug|Win32
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Debug|x86.Build.0 = Debug|Win32
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Debug|x86.Deploy.0 = Debug|Win32
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Release|ARM.ActiveCfg = Release|ARM
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Release|ARM.Build.0 = Release|ARM
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Release|ARM.Deploy.0 = Release|ARM
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Release|ARM64.ActiveCfg = Release|ARM64
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Release|ARM64.Build.0 = Release|ARM64
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Release|ARM64.Deploy.0 = Release|ARM64
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Release|x64.ActiveCfg = Release|x64
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Release|x64.Build.0 = Release|x64
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Release|x64.Deploy.0 = Release|x64
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Release|x86.ActiveCfg = Release|Win32
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Release|x86.Build.0 = Release|Win32
+ {DF6319D7-92D4-413E-8699-6C50D552DAA9}.Release|x86.Deploy.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {DEF1C1A0-A22F-4909-817F-04A924BEAB1B}
+ EndGlobalSection
+EndGlobal
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/EMTrackingChecking.vcxproj b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/EMTrackingChecking.vcxproj
new file mode 100644
index 000000000..2553abcb5
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/EMTrackingChecking.vcxproj
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+ true
+ true
+ true
+ true
+ {df6319d7-92d4-413e-8699-6c50d552daa9}
+ EMTrackingChecking
+ EMTrackingChecking
+ en-US
+ 15.0
+ true
+ Windows Store
+ 10.0
+ 10.0.22621.0
+ 10.0.17134.0
+
+
+
+
+ Debug
+ ARM
+
+
+ Debug
+ ARM64
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ ARM
+
+
+ Release
+ ARM64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ Application
+ v143
+ v142
+ v141
+ v140
+ Unicode
+
+
+ true
+ true
+
+
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Use
+ pch.h
+ $(IntDir)pch.pch
+ Level4
+ %(AdditionalOptions) /bigobj
+ WIN32_LEAN_AND_MEAN;WINRT_LEAN_AND_MEAN;%(PreprocessorDefinitions)
+
+
+ false
+
+
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+
+
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+
+
+ true
+ true
+
+
+
+
+
+ App.xaml
+
+
+ MainPage.xaml
+
+
+
+
+ Designer
+
+
+ Designer
+
+
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create
+
+
+ App.xaml
+
+
+ MainPage.xaml
+
+
+
+
+
+ App.xaml
+
+
+ MainPage.xaml
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/EMTrackingChecking.vcxproj.filters b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/EMTrackingChecking.vcxproj.filters
new file mode 100644
index 000000000..28f03343a
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/EMTrackingChecking.vcxproj.filters
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Assets
+
+
+ Assets
+
+
+ Assets
+
+
+ Assets
+
+
+ Assets
+
+
+ Assets
+
+
+ Assets
+
+
+
+
+
+
+
+ {e48dc53e-40b1-40cb-970a-f89935452892}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/MainPage.cpp b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/MainPage.cpp
new file mode 100644
index 000000000..8b87c8ca7
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/MainPage.cpp
@@ -0,0 +1,24 @@
+#include "pch.h"
+#include "MainPage.h"
+#include "MainPage.g.cpp"
+
+using namespace winrt;
+using namespace Windows::UI::Xaml;
+
+namespace winrt::EMTrackingChecking::implementation
+{
+ int32_t MainPage::MyProperty()
+ {
+ throw hresult_not_implemented();
+ }
+
+ void MainPage::MyProperty(int32_t /* value */)
+ {
+ throw hresult_not_implemented();
+ }
+
+ void MainPage::ClickHandler(IInspectable const&, RoutedEventArgs const&)
+ {
+ myButton().Content(box_value(L"Clicked"));
+ }
+}
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/MainPage.h b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/MainPage.h
new file mode 100644
index 000000000..c1a61f55a
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/MainPage.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include "MainPage.g.h"
+
+namespace winrt::EMTrackingChecking::implementation
+{
+ struct MainPage : MainPageT
+ {
+ MainPage()
+ {
+ // Xaml objects should not call InitializeComponent during construction.
+ // See https://github.com/microsoft/cppwinrt/tree/master/nuget#initializecomponent
+ }
+
+ int32_t MyProperty();
+ void MyProperty(int32_t value);
+
+ void ClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args);
+ };
+}
+
+namespace winrt::EMTrackingChecking::factory_implementation
+{
+ struct MainPage : MainPageT
+ {
+ };
+}
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/MainPage.idl b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/MainPage.idl
new file mode 100644
index 000000000..60f6903e9
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/MainPage.idl
@@ -0,0 +1,9 @@
+namespace EMTrackingChecking
+{
+ [default_interface]
+ runtimeclass MainPage : Windows.UI.Xaml.Controls.Page
+ {
+ MainPage();
+ Int32 MyProperty;
+ }
+}
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/MainPage.xaml b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/MainPage.xaml
new file mode 100644
index 000000000..daa972dcd
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/MainPage.xaml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Package.appxmanifest b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Package.appxmanifest
new file mode 100644
index 000000000..c52e3f4c6
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/Package.appxmanifest
@@ -0,0 +1,32 @@
+
+
+
+
+
+ EMTrackingChecking
+ dahoehna
+ Assets\StoreLogo.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/PropertySheet.props b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/PropertySheet.props
new file mode 100644
index 000000000..e34141b01
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/PropertySheet.props
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/packages.config b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/packages.config
new file mode 100644
index 000000000..977d3c7aa
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/packages.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/pch.cpp b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/pch.cpp
new file mode 100644
index 000000000..bcb5590be
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/pch.cpp
@@ -0,0 +1 @@
+#include "pch.h"
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/pch.h b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/pch.h
new file mode 100644
index 000000000..b559e3664
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/pch.h
@@ -0,0 +1,15 @@
+#pragma once
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/readme.txt b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/readme.txt
new file mode 100644
index 000000000..8a0a7d768
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/EMTrackingChecking/readme.txt
@@ -0,0 +1,23 @@
+========================================================================
+ C++/WinRT EMTrackingChecking Project Overview
+========================================================================
+
+This project demonstrates how to get started writing XAML apps directly
+with standard C++, using the C++/WinRT SDK component and XAML compiler
+support to generate implementation headers from interface (IDL) files.
+These headers can then be used to implement the local Windows Runtime
+classes referenced in the app's XAML pages.
+
+Steps:
+1. Create an interface (IDL) file to define any local Windows Runtime
+ classes referenced in the app's XAML pages.
+2. Build the project once to generate implementation templates under
+ the "Generated Files" folder, as well as skeleton class definitions
+ under "Generated Files\sources".
+3. Use the skeleton class definitions for reference to implement your
+ Windows Runtime classes.
+
+========================================================================
+Learn more about C++/WinRT here:
+http://aka.ms/cppwinrt/
+========================================================================
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/Marlowe.moo b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/Marlowe.moo
deleted file mode 100644
index d61fd88f7..000000000
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/Marlowe.moo
+++ /dev/null
@@ -1,14 +0,0 @@
-And we will sit upon the rocks,
-And see the shepherds feed their flocks
-By shallow rivers, to whose falls
-Melodious birds sing madrigals.
-
-And I will make thee beds of roses
-And a thousand fragrant posies;
-A cap of flowers, and a kirtle
-Embroider'd all with leaves of myrtle.
-
-A gown made of the finest wool
-Which from our pretty lambs we pull;
-Fair-lined slippers for the cold,
-With buckles of the purest gold.
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/Shakespeare.moo b/Samples/AppLifecycle/Instancing/cpp-winui-packaged/Shakespeare.moo
deleted file mode 100644
index 70818da95..000000000
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/Shakespeare.moo
+++ /dev/null
@@ -1,14 +0,0 @@
-Shall I compare thee to a Summer's day?
-Thou art more lovely and more temperate:
-Rough winds do shake the darling buds of May,
-And Summer's lease hath all too short a date;
-Sometimes too hot the eye of heaven shines,
-And often is his gold complexion dimm'd;
-And every fair from fair sometimes declines,
-By chance or nature's changing course untrimm'd;
-But thy eternal Summer shall not fade
-Nor lose possession of that fair thou owest;
-Nor shall Death brag thou wanderest in his shade,
-When in eternal lines to time thou growest;
-So long as men can breathe, or eyes can see,
-So long lives this, and this gives life to thee.
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/CsWinUiDesktopInstancing (Package).wapproj b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/CsWinUiDesktopInstancing (Package).wapproj
similarity index 91%
rename from Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/CsWinUiDesktopInstancing (Package).wapproj
rename to Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/CsWinUiDesktopInstancing (Package).wapproj
index 28f906859..dbd3fd066 100644
--- a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/CsWinUiDesktopInstancing (Package).wapproj
+++ b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/CsWinUiDesktopInstancing (Package).wapproj
@@ -35,10 +35,10 @@
- 00c39744-8a06-4f19-8387-08d5d2f51efe
- 10.0.19041.0
- 10.0.19041.0
- net5.0-windows$(TargetPlatformVersion);$(AssetTargetFallback)
+ c52f1da3-cc53-48d6-bb67-f68556c9529f
+ 10.0.22621.0
+ 10.0.17763.0
+ net6.0-windows$(TargetPlatformVersion);$(AssetTargetFallback)
en-US
false
..\CsWinUiDesktopInstancing\CsWinUiDesktopInstancing.csproj
@@ -64,10 +64,10 @@
-
+
build
-
+
build
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/LockScreenLogo.scale-200.png b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/LockScreenLogo.scale-200.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/LockScreenLogo.scale-200.png
rename to Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/LockScreenLogo.scale-200.png
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/SplashScreen.scale-200.png b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/SplashScreen.scale-200.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/SplashScreen.scale-200.png
rename to Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/SplashScreen.scale-200.png
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/Square150x150Logo.scale-200.png b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/Square150x150Logo.scale-200.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/Square150x150Logo.scale-200.png
rename to Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/Square150x150Logo.scale-200.png
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/Square44x44Logo.scale-200.png b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/Square44x44Logo.scale-200.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/Square44x44Logo.scale-200.png
rename to Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/Square44x44Logo.scale-200.png
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/Square44x44Logo.targetsize-24_altform-unplated.png b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/Square44x44Logo.targetsize-24_altform-unplated.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/Square44x44Logo.targetsize-24_altform-unplated.png
rename to Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/Square44x44Logo.targetsize-24_altform-unplated.png
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/StoreLogo.png b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/StoreLogo.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/StoreLogo.png
rename to Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/StoreLogo.png
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/Wide310x150Logo.scale-200.png b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/Wide310x150Logo.scale-200.png
similarity index 100%
rename from Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing (Package)/Images/Wide310x150Logo.scale-200.png
rename to Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Images/Wide310x150Logo.scale-200.png
diff --git a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Package.appxmanifest b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Package.appxmanifest
similarity index 61%
rename from Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Package.appxmanifest
rename to Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Package.appxmanifest
index e97cb4ca1..1d8a37e90 100644
--- a/Samples/AppLifecycle/Instancing/cpp-winui-packaged/CppWinUiDesktopInstancing/CppWinUiDesktopInstancing (Package)/Package.appxmanifest
+++ b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing (Package)/Package.appxmanifest
@@ -7,19 +7,19 @@
IgnorableNamespaces="uap rescap">
- CppWinUiDesktopInstancing
- Microsoft Corporation
+ CsWinUiDesktopInstancing (Package)
+ dahoehna
Images\StoreLogo.png
-
-
+
+
@@ -31,26 +31,14 @@
Executable="$targetnametoken$.exe"
EntryPoint="$targetentrypoint$">
-
-
-
-
- Images\StoreLogo.png
-
- .moo
-
-
-
-
-
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing.sln b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing.sln
index 84208d4a7..ce72c22aa 100644
--- a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing.sln
+++ b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing.sln
@@ -1,11 +1,11 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31624.102
+# Visual Studio Version 17
+VisualStudioVersion = 17.3.32811.315
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "CsWinUiDesktopInstancing (Package)", "CsWinUiDesktopInstancing\CsWinUiDesktopInstancing (Package)\CsWinUiDesktopInstancing (Package).wapproj", "{00C39744-8A06-4F19-8387-08D5D2F51EFE}"
+Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "CsWinUiDesktopInstancing (Package)", "CsWinUiDesktopInstancing (Package)\CsWinUiDesktopInstancing (Package).wapproj", "{C52F1DA3-CC53-48D6-BB67-F68556C9529F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsWinUiDesktopInstancing", "CsWinUiDesktopInstancing\CsWinUiDesktopInstancing\CsWinUiDesktopInstancing.csproj", "{6F47035B-47C3-4DAB-A346-45364DD02004}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsWinUiDesktopInstancing", "CsWinUiDesktopInstancing\CsWinUiDesktopInstancing.csproj", "{57A96983-B741-4206-8C25-3E86E942264B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -17,41 +17,41 @@ Global
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Debug|arm64.ActiveCfg = Debug|arm64
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Debug|arm64.Build.0 = Debug|arm64
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Debug|arm64.Deploy.0 = Debug|arm64
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Debug|x64.ActiveCfg = Debug|x64
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Debug|x64.Build.0 = Debug|x64
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Debug|x64.Deploy.0 = Debug|x64
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Debug|x86.ActiveCfg = Debug|x86
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Debug|x86.Build.0 = Debug|x86
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Debug|x86.Deploy.0 = Debug|x86
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Release|arm64.ActiveCfg = Release|arm64
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Release|arm64.Build.0 = Release|arm64
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Release|arm64.Deploy.0 = Release|arm64
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Release|x64.ActiveCfg = Release|x64
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Release|x64.Build.0 = Release|x64
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Release|x64.Deploy.0 = Release|x64
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Release|x86.ActiveCfg = Release|x86
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Release|x86.Build.0 = Release|x86
- {00C39744-8A06-4F19-8387-08D5D2F51EFE}.Release|x86.Deploy.0 = Release|x86
- {6F47035B-47C3-4DAB-A346-45364DD02004}.Debug|arm64.ActiveCfg = Debug|arm64
- {6F47035B-47C3-4DAB-A346-45364DD02004}.Debug|arm64.Build.0 = Debug|arm64
- {6F47035B-47C3-4DAB-A346-45364DD02004}.Debug|x64.ActiveCfg = Debug|x64
- {6F47035B-47C3-4DAB-A346-45364DD02004}.Debug|x64.Build.0 = Debug|x64
- {6F47035B-47C3-4DAB-A346-45364DD02004}.Debug|x86.ActiveCfg = Debug|x86
- {6F47035B-47C3-4DAB-A346-45364DD02004}.Debug|x86.Build.0 = Debug|x86
- {6F47035B-47C3-4DAB-A346-45364DD02004}.Release|arm64.ActiveCfg = Release|arm64
- {6F47035B-47C3-4DAB-A346-45364DD02004}.Release|arm64.Build.0 = Release|arm64
- {6F47035B-47C3-4DAB-A346-45364DD02004}.Release|x64.ActiveCfg = Release|x64
- {6F47035B-47C3-4DAB-A346-45364DD02004}.Release|x64.Build.0 = Release|x64
- {6F47035B-47C3-4DAB-A346-45364DD02004}.Release|x86.ActiveCfg = Release|x86
- {6F47035B-47C3-4DAB-A346-45364DD02004}.Release|x86.Build.0 = Release|x86
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Debug|arm64.ActiveCfg = Debug|arm64
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Debug|arm64.Build.0 = Debug|arm64
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Debug|arm64.Deploy.0 = Debug|arm64
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Debug|x64.ActiveCfg = Debug|x64
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Debug|x64.Build.0 = Debug|x64
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Debug|x64.Deploy.0 = Debug|x64
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Debug|x86.ActiveCfg = Debug|x86
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Debug|x86.Build.0 = Debug|x86
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Debug|x86.Deploy.0 = Debug|x86
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Release|arm64.ActiveCfg = Release|arm64
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Release|arm64.Build.0 = Release|arm64
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Release|arm64.Deploy.0 = Release|arm64
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Release|x64.ActiveCfg = Release|x64
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Release|x64.Build.0 = Release|x64
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Release|x64.Deploy.0 = Release|x64
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Release|x86.ActiveCfg = Release|x86
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Release|x86.Build.0 = Release|x86
+ {C52F1DA3-CC53-48D6-BB67-F68556C9529F}.Release|x86.Deploy.0 = Release|x86
+ {57A96983-B741-4206-8C25-3E86E942264B}.Debug|arm64.ActiveCfg = Debug|arm64
+ {57A96983-B741-4206-8C25-3E86E942264B}.Debug|arm64.Build.0 = Debug|arm64
+ {57A96983-B741-4206-8C25-3E86E942264B}.Debug|x64.ActiveCfg = Debug|x64
+ {57A96983-B741-4206-8C25-3E86E942264B}.Debug|x64.Build.0 = Debug|x64
+ {57A96983-B741-4206-8C25-3E86E942264B}.Debug|x86.ActiveCfg = Debug|x86
+ {57A96983-B741-4206-8C25-3E86E942264B}.Debug|x86.Build.0 = Debug|x86
+ {57A96983-B741-4206-8C25-3E86E942264B}.Release|arm64.ActiveCfg = Release|arm64
+ {57A96983-B741-4206-8C25-3E86E942264B}.Release|arm64.Build.0 = Release|arm64
+ {57A96983-B741-4206-8C25-3E86E942264B}.Release|x64.ActiveCfg = Release|x64
+ {57A96983-B741-4206-8C25-3E86E942264B}.Release|x64.Build.0 = Release|x64
+ {57A96983-B741-4206-8C25-3E86E942264B}.Release|x86.ActiveCfg = Release|x86
+ {57A96983-B741-4206-8C25-3E86E942264B}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {6E3F7613-0E42-488E-A45A-A7ED4684A761}
+ SolutionGuid = {E30441A4-3660-43F3-8683-EFC42CF42C67}
EndGlobalSection
EndGlobal
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/ActivationTrackerHelper.cs b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/ActivationTrackerHelper.cs
new file mode 100644
index 000000000..1440c7195
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/ActivationTrackerHelper.cs
@@ -0,0 +1,52 @@
+using Microsoft.Win32;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CsWinUiDesktopInstancing
+{
+ internal static class ActivationTrackerHelper
+ {
+ private const string c_redirectionKeyName = @"SOFTWARE\AppLifecycleExample";
+ private const string c_redirectionValueName = "NumberOfActivations";
+
+ private static RegistryKey GetRegistryKey()
+ {
+ return Registry.CurrentUser.CreateSubKey(c_redirectionKeyName, true);
+ }
+
+ private static void SetNumberOfActivations(int newNumberOfActivations)
+ {
+ RegistryKey instanceTrackerKey = GetRegistryKey();
+ instanceTrackerKey.SetValue(c_redirectionValueName, newNumberOfActivations);
+ }
+
+ internal static int IncrementAndSetNumberOfRedirectionsReturnNewNumber()
+ {
+ int numberOfActivations = GetNumberOfActivations();
+ numberOfActivations++;
+ SetNumberOfActivations(numberOfActivations);
+ return numberOfActivations;
+ }
+
+ internal static int GetNumberOfActivations()
+ {
+ int numberOfActivations = 0;
+ RegistryKey instanceTrackerKey = GetRegistryKey();
+
+ object numberOfActivationsAsObject = instanceTrackerKey.GetValue(c_redirectionValueName);
+ if (numberOfActivationsAsObject == null)
+ {
+ instanceTrackerKey.SetValue(c_redirectionValueName, numberOfActivations);
+ }
+ else
+ {
+ numberOfActivations = Convert.ToInt32(numberOfActivationsAsObject);
+ }
+
+ return numberOfActivations;
+ }
+ }
+}
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/App.xaml b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/App.xaml
similarity index 87%
rename from Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/App.xaml
rename to Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/App.xaml
index 3433dfd5a..9ef05fece 100644
--- a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/App.xaml
+++ b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/App.xaml
@@ -1,6 +1,4 @@
-
-
+ /// Provides application-specific behavior to supplement the default Application class.
+ ///
+ public partial class App : Application
+ {
+ // Modify this to increase the number of active instances.
+ public const int c_maxNumberOfInstances = 2;
+
+ ///
+ /// Initializes the singleton application object. This is the first line of authored code
+ /// executed, and as such is the logical equivalent of main() or WinMain().
+ ///
+ public App()
+ {
+ this.InitializeComponent();
+ }
+
+ ///
+ /// Invoked when the application is launched normally by the end user. Other entry points
+ /// will be used such as when the application is launched to open a specific file.
+ ///
+ /// Details about the launch request and process.
+
+ // NOTE: Redirection needs to happen here. If redirection is done anywhere else the behavior is unknown.
+ // For example, I got a COM error when redirection was in the constructor for m_Window.
+ protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
+ {
+ int numberOfActivations = ActivationTrackerHelper.IncrementAndSetNumberOfRedirectionsReturnNewNumber();
+ m_window = new MainWindow();
+
+ // GetInstances also gets the current instance.
+ // Meat and potatoes of redirection.
+ var instances = Microsoft.Windows.AppLifecycle.AppInstance.GetInstances();
+
+ // Number will be incorrect if instance (instanceNumber < c_maxNumberOfInstances) is closed.
+ // Can be fixed on an OnExit event handler.
+ m_window.Title = "Instance: " + ((instances.Count) - 1).ToString();
+
+ // Need activated event args to pass into the redirected instance.
+ var activatedArgs = Microsoft.Windows.AppLifecycle.AppInstance.GetCurrent().GetActivatedEventArgs();
+ bool isActivationRedirected = false;
+ if (instances.Count > c_maxNumberOfInstances)
+ {
+ // Time to redirect
+ // Choose what instance to redirect to.
+ int instanceToRedirectTo = (numberOfActivations % c_maxNumberOfInstances);
+ isActivationRedirected = true;
+
+ // Need to call RedirectActivationToAsync on the instance to redirect to.
+ // Not passing in the instance into RedirectionActivationToAsync.
+ instances[instanceToRedirectTo].RedirectActivationToAsync(activatedArgs).GetAwaiter();
+ }
+
+ if (isActivationRedirected)
+ {
+ this.Exit();
+ }
+ else
+ {
+ m_window.Activate();
+ }
+ }
+
+ private Window m_window;
+ }
+}
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing.csproj b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing.csproj
new file mode 100644
index 000000000..7c4fdbe6a
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing.csproj
@@ -0,0 +1,18 @@
+
+
+ WinExe
+ net6.0-windows10.0.19041.0
+ 10.0.17763.0
+ CsWinUiDesktopInstancing
+ app.manifest
+ x86;x64;arm64
+ win10-x86;win10-x64;win10-arm64
+ true
+
+
+
+
+
+
+
+
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/App.xaml.cs b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/App.xaml.cs
deleted file mode 100644
index 4c9ca4970..000000000
--- a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/App.xaml.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-using Microsoft.UI.Xaml;
-
-namespace CsWinUiDesktopInstancing
-{
- public partial class App : Application
- {
- private Window m_window;
- public Window AppWindow
- {
- get { return m_window; }
- private set { }
- }
-
- public App()
- {
- InitializeComponent();
- }
-
- // NOTE: WinUI's App.OnLaunched is given a Microsoft.UI.Xaml.LaunchActivatedEventArgs,
- // where the UWPLaunchActivatedEventArgs property will be one of the
- // Windows.ApplicationModel.Activation.*ActivatedEventArgs types.
- // Conversely, AppInstance.GetActivatedEventArgs will return a
- // Microsoft.Windows.AppLifecycle.AppActivationArguments, where the Data property
- // will be one of the Windows.ApplicationModel.Activation.*ActivatedEventArgs types.
- protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
- {
- // NOTE: OnLaunched will always report that the ActivationKind == Launch,
- // even when it isn't.
- Windows.ApplicationModel.Activation.ActivationKind kind
- = args.UWPLaunchActivatedEventArgs.Kind;
- Program.ReportInfo($"OnLaunched: Kind={kind}");
-
- // NOTE: AppInstance is ambiguous between
- // Microsoft.Windows.AppLifecycle.AppInstance and
- // Windows.ApplicationModel.AppInstance
- var currentInstance =
- Microsoft.Windows.AppLifecycle.AppInstance.GetCurrent();
- if (currentInstance != null)
- {
- // AppInstance.GetActivatedEventArgs will report the correct ActivationKind,
- // even in WinUI's OnLaunched.
- Microsoft.Windows.AppLifecycle.AppActivationArguments activationArgs
- = currentInstance.GetActivatedEventArgs();
- if (activationArgs != null)
- {
- Microsoft.Windows.AppLifecycle.ExtendedActivationKind extendedKind
- = activationArgs.Kind;
- Program.ReportInfo($"activationArgs.Kind={extendedKind}");
- }
- }
-
- // Go ahead and do standard window initialization regardless.
- m_window = new MainWindow();
- m_window.Activate();
- }
- }
-}
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing.csproj b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing.csproj
deleted file mode 100644
index f573b6aca..000000000
--- a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing.csproj
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
- WinExe
- net5.0-windows10.0.19041.0
- 10.0.17763.0
- CsWinUiDesktopInstancing
- app.manifest
- x86;x64;arm64
- win10-x86;win10-x64;win10-arm64
- true
-
-
- DISABLE_XAML_GENERATED_MAIN
-
-
- DISABLE_XAML_GENERATED_MAIN
-
-
- DISABLE_XAML_GENERATED_MAIN
-
-
- DISABLE_XAML_GENERATED_MAIN
-
-
- DISABLE_XAML_GENERATED_MAIN
-
-
- DISABLE_XAML_GENERATED_MAIN
-
-
-
-
-
-
-
-
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/MainWindow.xaml b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/MainWindow.xaml
deleted file mode 100644
index e75cd9e8e..000000000
--- a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/MainWindow.xaml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/MainWindow.xaml.cs b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/MainWindow.xaml.cs
deleted file mode 100644
index d11ff07f2..000000000
--- a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/MainWindow.xaml.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-using Microsoft.UI.Xaml;
-
-namespace CsWinUiDesktopInstancing
-{
- public sealed partial class MainWindow : Window
- {
- public MainWindow()
- {
- InitializeComponent();
- Title = "CsWinUiDesktopInstancing";
-
- if (Program.OutputStack != null && Program.OutputStack.Count > 0)
- {
- foreach (string message in Program.OutputStack)
- {
- OutputMessage(message);
- }
- Program.OutputStack.Clear();
- }
- }
-
- public void OutputMessage(string message)
- {
- DispatcherQueue.TryEnqueue(() =>
- {
- StatusListView.Items.Add(message);
- });
- }
-
- private void ActivationInfoButton_Click(object sender, RoutedEventArgs e)
- {
- Program.GetActivationInfo();
- }
- }
-}
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/Program.cs b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/Program.cs
deleted file mode 100644
index 44325fe7b..000000000
--- a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/Program.cs
+++ /dev/null
@@ -1,241 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-
-using Microsoft.UI.Dispatching;
-using Microsoft.Windows.AppLifecycle;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.InteropServices;
-using System.Threading;
-using System.Threading.Tasks;
-using Windows.ApplicationModel.Activation;
-using Windows.Storage;
-
-namespace CsWinUiDesktopInstancing
-{
- // NOTE: We need to check for redirection as early as possible, and
- // before creating any windows. To do this, we must define this symbol
- // in the project build properties:
- // DISABLE_XAML_GENERATED_MAIN
- // ...and define a custom Program class with a Main method
-
- public static class Program
- {
- private static int activationCount = 1;
- public static List OutputStack { get; private set; }
-
- // Replaces the standard App.g.i.cs.
- // Note: We can't declare Main to be async because in a WinUI app
- // this prevents Narrator from reading XAML elements.
- [STAThread]
- static void Main(string[] args)
- {
- WinRT.ComWrappersSupport.InitializeComWrappers();
-
- OutputStack = new();
-
- bool isRedirect = DecideRedirection();
- if (!isRedirect)
- {
- Microsoft.UI.Xaml.Application.Start((p) =>
- {
- var context = new DispatcherQueueSynchronizationContext(
- DispatcherQueue.GetForCurrentThread());
- SynchronizationContext.SetSynchronizationContext(context);
- new App();
- });
- }
- }
-
- #region Report helpers
-
- public static void ReportInfo(string message)
- {
- // If we already have a form, display the message now.
- // Otherwise, add it to the collection for displaying later.
- if (App.Current is App thisApp && thisApp.AppWindow != null
- && thisApp.AppWindow is MainWindow mainWindow)
- {
- mainWindow.OutputMessage(message);
- }
- else
- {
- OutputStack.Add(message);
- }
- }
-
- private static void ReportFileArgs(string callSite, AppActivationArguments args)
- {
- ReportInfo($"called from {callSite}");
- if (args.Data is IFileActivatedEventArgs fileArgs)
- {
- IStorageItem item = fileArgs.Files.FirstOrDefault();
- if (item is StorageFile file)
- {
- ReportInfo($"file: {file.Name}");
- }
- }
- }
-
- private static void ReportLaunchArgs(string callSite, AppActivationArguments args)
- {
- ReportInfo($"called from {callSite}");
- if (args.Data is ILaunchActivatedEventArgs launchArgs)
- {
- string[] argStrings = launchArgs.Arguments.Split();
- for (int i = 0; i < argStrings.Length; i++)
- {
- string argString = argStrings[i];
- if (!string.IsNullOrWhiteSpace(argString))
- {
- ReportInfo($"arg[{i}] = {argString}");
- }
- }
- }
- }
-
- private static void OnActivated(object sender, AppActivationArguments args)
- {
- ExtendedActivationKind kind = args.Kind;
- if (kind == ExtendedActivationKind.Launch)
- {
- ReportLaunchArgs($"OnActivated ({activationCount++})", args);
- }
- else if (kind == ExtendedActivationKind.File)
- {
- ReportFileArgs($"OnActivated ({activationCount++})", args);
- }
- }
-
- public static void GetActivationInfo()
- {
- AppActivationArguments args = AppInstance.GetCurrent().GetActivatedEventArgs();
- ExtendedActivationKind kind = args.Kind;
- ReportInfo($"ActivationKind: {kind}");
-
- if (kind == ExtendedActivationKind.Launch)
- {
- if (args.Data is ILaunchActivatedEventArgs launchArgs)
- {
- string argString = launchArgs.Arguments;
- string[] argStrings = argString.Split();
- foreach (string arg in argStrings)
- {
- if (!string.IsNullOrWhiteSpace(arg))
- {
- ReportInfo(arg);
- }
- }
- }
- }
- else if (kind == ExtendedActivationKind.File)
- {
- if (args.Data is IFileActivatedEventArgs fileArgs)
- {
- IStorageItem file = fileArgs.Files.FirstOrDefault();
- if (file != null)
- {
- ReportInfo(file.Name);
- }
- }
- }
- }
-
- #endregion
-
-
- #region Redirection
-
- // Decide if we want to redirect the incoming activation to another instance.
- private static bool DecideRedirection()
- {
- bool isRedirect = false;
-
- // Find out what kind of activation this is.
- AppActivationArguments args = AppInstance.GetCurrent().GetActivatedEventArgs();
- ExtendedActivationKind kind = args.Kind;
- ReportInfo($"ActivationKind={kind}");
- if (kind == ExtendedActivationKind.Launch)
- {
- // This is a launch activation.
- ReportLaunchArgs("Main", args);
- }
- else if (kind == ExtendedActivationKind.File)
- {
- ReportFileArgs("Main", args);
-
- try
- {
- // This is a file activation: here we'll get the file information,
- // and register the file name as our instance key.
- if (args.Data is IFileActivatedEventArgs fileArgs)
- {
- IStorageItem file = fileArgs.Files[0];
- AppInstance keyInstance = AppInstance.FindOrRegisterForKey(file.Name);
- ReportInfo($"Registered key = {keyInstance.Key}");
-
- // If we successfully registered the file name, we must be the
- // only instance running that was activated for this file.
- if (keyInstance.IsCurrent)
- {
- // Report successful file name key registration.
- ReportInfo($"IsCurrent=true; registered this instance for {file.Name}");
-
- // Hook up the Activated event, to allow for this instance of the app
- // getting reactivated as a result of multi-instance redirection.
- keyInstance.Activated += OnActivated;
- }
- else
- {
- isRedirect = true;
- RedirectActivationTo(args, keyInstance);
- }
- }
- }
- catch (Exception ex)
- {
- ReportInfo($"Error getting instance information: {ex.Message}");
- }
- }
-
- return isRedirect;
- }
-
- [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
- private static extern IntPtr CreateEvent(
- IntPtr lpEventAttributes, bool bManualReset,
- bool bInitialState, string lpName);
-
- [DllImport("kernel32.dll")]
- private static extern bool SetEvent(IntPtr hEvent);
-
- [DllImport("ole32.dll")]
- private static extern uint CoWaitForMultipleObjects(
- uint dwFlags, uint dwMilliseconds, ulong nHandles,
- IntPtr[] pHandles, out uint dwIndex);
-
- private static IntPtr redirectEventHandle = IntPtr.Zero;
-
- // Do the redirection on another thread, and use a non-blocking
- // wait method to wait for the redirection to complete.
- public static void RedirectActivationTo(
- AppActivationArguments args, AppInstance keyInstance)
- {
- redirectEventHandle = CreateEvent(IntPtr.Zero, true, false, null);
- Task.Run(() =>
- {
- keyInstance.RedirectActivationToAsync(args).AsTask().Wait();
- SetEvent(redirectEventHandle);
- });
- uint CWMO_DEFAULT = 0;
- uint INFINITE = 0xFFFFFFFF;
- _ = CoWaitForMultipleObjects(
- CWMO_DEFAULT, INFINITE, 1,
- new IntPtr[] { redirectEventHandle }, out uint handleIndex);
- }
-
- #endregion
-
- }
-}
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/Properties/launchSettings.json b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/Properties/launchSettings.json
deleted file mode 100644
index 98be39af2..000000000
--- a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/Properties/launchSettings.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "profiles": {
- "CsWinUiDesktopInstancing": {
- "commandName": "Project"
- }
- }
-}
\ No newline at end of file
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/MainWindow.xaml b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/MainWindow.xaml
new file mode 100644
index 000000000..48e344224
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/MainWindow.xaml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/MainWindow.xaml.cs b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/MainWindow.xaml.cs
new file mode 100644
index 000000000..b2a9c3f05
--- /dev/null
+++ b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/MainWindow.xaml.cs
@@ -0,0 +1,39 @@
+using Microsoft.UI.Xaml;
+using Microsoft.UI.Xaml.Controls;
+using Microsoft.UI.Xaml.Controls.Primitives;
+using Microsoft.UI.Xaml.Data;
+using Microsoft.UI.Xaml.Input;
+using Microsoft.UI.Xaml.Media;
+using Microsoft.UI.Xaml.Navigation;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+
+// To learn more about WinUI, the WinUI project structure,
+// and more about our project templates, see: http://aka.ms/winui-project-info.
+
+namespace CsWinUiDesktopInstancing
+{
+ ///
+ /// An empty window that can be used on its own or navigated to within a Frame.
+ ///
+ public sealed partial class MainWindow : Window
+ {
+ public MainWindow()
+ {
+ int numberOfActivations = ActivationTrackerHelper.GetNumberOfActivations();
+ this.Title = numberOfActivations.ToString();
+ this.InitializeComponent();
+ activationTrackerTextBox.Text = numberOfActivations.ToString();
+ }
+
+ private void activationTrackerButton_Click(object sender, RoutedEventArgs e)
+ {
+ activationTrackerTextBox.Text = ActivationTrackerHelper.GetNumberOfActivations().ToString();
+ }
+ }
+}
diff --git a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/Properties/PublishProfiles/win10-arm64.pubxml b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/Properties/PublishProfiles/win10-arm64.pubxml
similarity index 78%
rename from Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/Properties/PublishProfiles/win10-arm64.pubxml
rename to Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/Properties/PublishProfiles/win10-arm64.pubxml
index 8dd0b28c0..a132e44c6 100644
--- a/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/CsWinUiDesktopInstancing/Properties/PublishProfiles/win10-arm64.pubxml
+++ b/Samples/AppLifecycle/Instancing/cs-winui-packaged/CsWinUiDesktopInstancing/Properties/PublishProfiles/win10-arm64.pubxml
@@ -10,7 +10,8 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\
true
False
- True
+ False
+ True