diff --git a/WindowsAppRuntime.sln b/WindowsAppRuntime.sln
index c5187df602..a635f01772 100644
--- a/WindowsAppRuntime.sln
+++ b/WindowsAppRuntime.sln
@@ -261,6 +261,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Process.Environme
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ChangeTracker", "dev\EnvironmentManager\ChangeTracker\ChangeTracker.vcxitems", "{E15C3465-9D45-495D-92CE-B91EF45E8623}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowsAppRuntime_MSIXInstallFromPath", "dev\WindowsAppRuntime_MSIXInstallFromPath\WindowsAppRuntime_MSIXInstallFromPath.vcxproj", "{D45D4170-E055-4926-8B03-04DAA5F02C6C}"
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Framework.Widgets", "test\DynamicDependency\data\Framework.Widgets\Framework.Widgets.vcxproj", "{09DDAE21-397F-4263-8561-7F2FF28127CF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DynamicDependencyLifetimeManagerShadow", "dev\DynamicDependency\DynamicDependencyLifetimeManagerShadow\DynamicDependencyLifetimeManagerShadow.vcxproj", "{6539E9E1-BF36-40E5-86BC-070E99DB7B7B}"
@@ -1317,6 +1319,20 @@ Global
{0B01DB78-F115-4C90-B28F-7819071303C6}.Release|x64.Build.0 = Release|x64
{0B01DB78-F115-4C90-B28F-7819071303C6}.Release|x86.ActiveCfg = Release|Win32
{0B01DB78-F115-4C90-B28F-7819071303C6}.Release|x86.Build.0 = Release|Win32
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Debug|ARM64.Build.0 = Debug|ARM64
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Debug|x64.ActiveCfg = Debug|x64
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Debug|x64.Build.0 = Debug|x64
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Debug|x86.ActiveCfg = Debug|Win32
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Debug|x86.Build.0 = Debug|Win32
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Release|Any CPU.ActiveCfg = Release|Win32
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Release|ARM64.ActiveCfg = Release|ARM64
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Release|ARM64.Build.0 = Release|ARM64
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Release|x64.ActiveCfg = Release|x64
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Release|x64.Build.0 = Release|x64
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Release|x86.ActiveCfg = Release|Win32
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C}.Release|x86.Build.0 = Release|Win32
{09DDAE21-397F-4263-8561-7F2FF28127CF}.Debug|Any CPU.ActiveCfg = Debug|Win32
{09DDAE21-397F-4263-8561-7F2FF28127CF}.Debug|ARM64.ActiveCfg = Debug|ARM64
{09DDAE21-397F-4263-8561-7F2FF28127CF}.Debug|ARM64.Build.0 = Debug|ARM64
@@ -2458,6 +2474,7 @@ Global
{6967798A-AC07-4994-8FE9-DC9442F88E97} = {B4196B13-AB24-492E-9147-03CC7F2CAE59}
{2F3FAD1B-D3DF-4866-A3A3-C2C777D55638} = {8ABB3637-75DB-4DC3-BFB1-0933FFA4269B}
{E15C3465-9D45-495D-92CE-B91EF45E8623} = {6967798A-AC07-4994-8FE9-DC9442F88E97}
+ {D45D4170-E055-4926-8B03-04DAA5F02C6C} = {448ED2E5-0B37-4D97-9E6B-8C10A507976A}
{09DDAE21-397F-4263-8561-7F2FF28127CF} = {0C534F12-B076-47E5-A05B-2A711233AC6F}
{6539E9E1-BF36-40E5-86BC-070E99DB7B7B} = {6CD01EF6-D4A4-4801-ADCF-344CF87FF942}
{4B30C685-8490-440F-9879-A75D45DAA361} = {AC5FFC80-92FE-4933-BED2-EC5519AC4440}
@@ -2625,6 +2642,7 @@ Global
dev\DynamicDependency\API\DynamicDependency.vcxitems*{bf055a59-0919-4e34-9b76-dd055495cc5a}*SharedItemsImports = 9
test\inc\inc.vcxitems*{c62688a1-16a0-4729-b6ed-842f4faa29f3}*SharedItemsImports = 4
dev\AccessControl\AccessControl.vcxitems*{c91bcb93-9ed1-4acd-85f3-26f9f6ac52e3}*SharedItemsImports = 9
+ dev\Common\Common.vcxitems*{d45d4170-e055-4926-8b03-04daa5f02c6c}*SharedItemsImports = 4
test\inc\inc.vcxitems*{d5667df6-a151-4081-abc7-b93e8e5604ce}*SharedItemsImports = 4
dev\Deployment\Deployment.vcxitems*{db38fb4d-d04f-4c1d-93e0-f8ae259c5fd6}*SharedItemsImports = 9
dev\EnvironmentManager\ChangeTracker\ChangeTracker.vcxitems*{e15c3465-9d45-495d-92ce-b91ef45e8623}*SharedItemsImports = 9
diff --git a/build/CopyFilesToStagingDir.ps1 b/build/CopyFilesToStagingDir.ps1
index f7da5ddf1f..c531059364 100644
--- a/build/CopyFilesToStagingDir.ps1
+++ b/build/CopyFilesToStagingDir.ps1
@@ -171,6 +171,10 @@ PublishFile $FullBuildOutput\WindowsAppRuntime_BootstrapDLL\Microsoft.WindowsApp
PublishFile $FullBuildOutput\WindowsAppRuntime_BootstrapDLL\Microsoft.WindowsAppRuntime.Bootstrap.dll $NugetDir\runtimes\win-$Platform\native
PublishFile $FullBuildOutput\WindowsAppRuntime_BootstrapDLL\Microsoft.WindowsAppRuntime.Bootstrap.pdb $NugetDir\runtimes\win10-$Platform\native
#
+# Tools
+PublishFile $FullBuildOutput\WindowsAppRuntime_MSIXInstallFromPath\WindowsAppRuntime_MSIXInstallFromPath.exe $NugetDir\tools\$Platform
+PublishFile $FullBuildOutput\WindowsAppRuntime_MSIXInstallFromPath\WindowsAppRuntime_MSIXInstallFromPath.pdb $NugetDir\tools\$Platform
+#
# WinMD for UWP apps
PublishFile $FullBuildOutput\WindowsAppRuntime_DLL\StrippedWinMD\Microsoft.Windows.ApplicationModel.DynamicDependency.winmd $NugetDir\lib\uap10.0
PublishFile $FullBuildOutput\WindowsAppRuntime_DLL\StrippedWinMD\Microsoft.Windows.ApplicationModel.WindowsAppRuntime.winmd $NugetDir\lib\uap10.0
diff --git a/dev/Common/WindowsAppRuntime.VersionInfo.cpp b/dev/Common/WindowsAppRuntime.VersionInfo.cpp
index 2dda2aae1d..51d08caf58 100644
--- a/dev/Common/WindowsAppRuntime.VersionInfo.cpp
+++ b/dev/Common/WindowsAppRuntime.VersionInfo.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors.
+// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.
#include "pch.h"
@@ -7,8 +7,6 @@
#include "WindowsAppRuntime.VersionInfo.h"
-#include "MddWin11.h"
-
// Function prototype of the function exported by the resource DLL
// (defined later in the build pipeline so we can't #include a header from there)
STDAPI_(const void*) WindowsAppRuntime_GetVersionInfo();
@@ -117,20 +115,11 @@ STDAPI WindowsAppRuntime_VersionInfo_TestInitialize(
PCWSTR frameworkPackageFamilyName,
PCWSTR mainPackageFamilyName) noexcept try
{
- // Verify parameters
+ // Both or neither must be valued
const bool frameworkPackageFamilyNameIsEmpty{ !frameworkPackageFamilyName || (*frameworkPackageFamilyName == L'0') };
const bool mainPackageFamilyNameIsEmpty{ !mainPackageFamilyName || (*mainPackageFamilyName == L'0') };
- if (MddCore::Win11::IsSupported())
- {
- // Framework is optional but Main is never specified
- FAIL_FAST_HR_IF(E_UNEXPECTED, !mainPackageFamilyNameIsEmpty);
- }
- else
- {
- // Both or neither must be valued
- FAIL_FAST_HR_IF(E_UNEXPECTED, frameworkPackageFamilyNameIsEmpty && !mainPackageFamilyNameIsEmpty);
- FAIL_FAST_HR_IF(E_UNEXPECTED, !frameworkPackageFamilyNameIsEmpty && mainPackageFamilyNameIsEmpty);
- }
+ FAIL_FAST_HR_IF(E_UNEXPECTED, frameworkPackageFamilyNameIsEmpty && !mainPackageFamilyNameIsEmpty);
+ FAIL_FAST_HR_IF(E_UNEXPECTED, !frameworkPackageFamilyNameIsEmpty && mainPackageFamilyNameIsEmpty);
// Update our state
if (frameworkPackageFamilyNameIsEmpty)
@@ -143,7 +132,7 @@ STDAPI WindowsAppRuntime_VersionInfo_TestInitialize(
{
// Initialize test support
g_test_frameworkPackageFamilyName = frameworkPackageFamilyName;
- g_test_mainPackageFamilyName = (!mainPackageFamilyName ? L"" : mainPackageFamilyName);
+ g_test_mainPackageFamilyName = mainPackageFamilyName;
}
return S_OK;
}
diff --git a/dev/Common/WindowsAppRuntime.VersionInfo.h b/dev/Common/WindowsAppRuntime.VersionInfo.h
index e4194a1d8b..986f946493 100644
--- a/dev/Common/WindowsAppRuntime.VersionInfo.h
+++ b/dev/Common/WindowsAppRuntime.VersionInfo.h
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors.
+// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.
#ifndef __MICROSFT_WINDOWSAPPRUNTIME_VERSIONINFO_H
@@ -68,18 +68,6 @@ inline void TestInitialize(
THROW_IF_FAILED(WindowsAppRuntime_VersionInfo_TestInitialize(frameworkPackageFamilyName, mainPackageFamilyName));
}
-/// Initialize VersionInfo's test support. This will constrain package enumeration
-/// and matching for test purposes.
-///
-/// @param frameworkPackageFamilyName only match framework packages with this family name
-///
-/// @note Not for product use. This is for test purposes only to verify the implementation.
-inline void TestInitialize(
- _In_ PCWSTR frameworkPackageFamilyName)
-{
- THROW_IF_FAILED(WindowsAppRuntime_VersionInfo_TestInitialize(frameworkPackageFamilyName, nullptr));
-}
-
/// Shutdown VersionInfo's test support.
///
/// @note Not for product use. This is for test purposes only to verify the implementation.
diff --git a/dev/DynamicDependency/API/DynamicDependency.vcxitems b/dev/DynamicDependency/API/DynamicDependency.vcxitems
index 9f8cfc64cc..e5f3fa55ae 100644
--- a/dev/DynamicDependency/API/DynamicDependency.vcxitems
+++ b/dev/DynamicDependency/API/DynamicDependency.vcxitems
@@ -23,6 +23,7 @@
+
diff --git a/dev/DynamicDependency/API/DynamicDependency.vcxitems.filters b/dev/DynamicDependency/API/DynamicDependency.vcxitems.filters
index d9841d40fd..293f21384c 100644
--- a/dev/DynamicDependency/API/DynamicDependency.vcxitems.filters
+++ b/dev/DynamicDependency/API/DynamicDependency.vcxitems.filters
@@ -50,6 +50,9 @@
Source Files
+
+ Source Files
+
Source Files
diff --git a/dev/DynamicDependency/API/M.AM.DD.PackageDependency.cpp b/dev/DynamicDependency/API/M.AM.DD.PackageDependency.cpp
index 08a157b823..e78c85f086 100644
--- a/dev/DynamicDependency/API/M.AM.DD.PackageDependency.cpp
+++ b/dev/DynamicDependency/API/M.AM.DD.PackageDependency.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors.
+// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.
#include "pch.h"
@@ -16,8 +16,6 @@
#include
-#include "MddWin11.h"
-
namespace winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::implementation
{
PackageDependency::PackageDependency(hstring const& id) :
@@ -27,37 +25,21 @@ namespace winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::implem
winrt::PackageDependency PackageDependency::GetFromId(hstring const& id)
{
- // Use the Win11 APIs if available (instead of Detour'ing to our own implementation)
- if (MddCore::Win11::IsSupported())
- {
- //TODO:47775758 GetResolved2 GetPackageDependencyInfo2(userSid, id.c_str(), &packageDependencyInfo)
- }
- else
+ auto tokenUser{ wil::get_token_information(GetCurrentThreadEffectiveToken()) };
+ auto exists{ MddCore::PackageDependencyManager::ExistsPackageDependency(tokenUser->User.Sid, id.c_str()) };
+ if (!exists)
{
- auto tokenUser{ wil::get_token_information(GetCurrentThreadEffectiveToken()) };
- auto exists{ MddCore::PackageDependencyManager::ExistsPackageDependency(tokenUser->User.Sid, id.c_str()) };
- if (!exists)
- {
- return nullptr;
- }
+ return nullptr;
}
return winrt::make(id);
}
winrt::PackageDependency PackageDependency::GetFromIdForSystem(hstring const& id)
{
- // Use the Win11 APIs if available (instead of Detour'ing to our own implementation)
- if (MddCore::Win11::IsSupported())
- {
- //TODO:47775758 GetResolved2 GetPackageDependencyInfo2(userSid, id.c_str(), &packageDependencyInfo)
- }
- else
+ auto exists{ MddCore::PackageDependencyManager::ExistsPackageDependency(nullptr, id.c_str()) };
+ if (!exists)
{
- auto exists{ MddCore::PackageDependencyManager::ExistsPackageDependency(nullptr, id.c_str()) };
- if (!exists)
- {
- return nullptr;
- }
+ return nullptr;
}
return winrt::make(id);
}
diff --git a/dev/DynamicDependency/API/MddDetourPackageGraph.cpp b/dev/DynamicDependency/API/MddDetourPackageGraph.cpp
index 31c63cc58f..4ef959e4e6 100644
--- a/dev/DynamicDependency/API/MddDetourPackageGraph.cpp
+++ b/dev/DynamicDependency/API/MddDetourPackageGraph.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors.
+// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.
#include "pch.h"
@@ -9,8 +9,6 @@
#include "PackageGraphManager.h"
-#include "MddWin11.h"
-
#include <../Detours/detours.h>
// Windows provides HRESULT_FROM_WIN32() but not the reverse. We need that for compat reasons.
@@ -112,13 +110,6 @@ typedef UINT32 (WINAPI* GetPackageGraphRevisionIdFunction)();
HRESULT WINAPI MddDetourPackageGraphInitialize() noexcept
{
- // Use the Win11 APIs if available (instead of Detour'ing to our own implementation)
- if (MddCore::Win11::IsSupported())
- {
- RETURN_IF_FAILED(MddWin11Initialize());
- return S_OK;
- }
-
// Detour package graph APIs to our implementation
FAIL_FAST_IF_WIN32_ERROR(DetourUpdateThread(GetCurrentThread()));
FAIL_FAST_IF_WIN32_ERROR(DetourAttach(&(PVOID&)TrueGetCurrentPackageInfo, DynamicGetCurrentPackageInfo));
@@ -169,13 +160,6 @@ HRESULT WINAPI MddDetourPackageGraphInitialize() noexcept
HRESULT _MddDetourPackageGraphShutdown() noexcept
{
- // Use the Win11 APIs if available (instead of Detour'ing to our own implementation)
- if (MddCore::Win11::IsSupported())
- {
- MddWin11Shutdown();
- return S_OK;
- }
-
// Stop Detour'ing package graph APIs to our implementation (undo in reverse order we started Detour'ing APIs)
if (TrueGetPackageGraphRevisionId)
{
diff --git a/dev/DynamicDependency/API/MddWin11.cpp b/dev/DynamicDependency/API/MddWin11.cpp
new file mode 100644
index 0000000000..cca5dad052
--- /dev/null
+++ b/dev/DynamicDependency/API/MddWin11.cpp
@@ -0,0 +1,256 @@
+// Copyright (c) Microsoft Corporation and Contributors.
+// Licensed under the MIT License.
+
+#include "pch.h"
+
+#include
+
+#include "MddWin11.h"
+
+namespace MddCore::Win11
+{
+static HMODULE g_dllApisetAppmodelRuntime_1_6{};
+static decltype(&::TryCreatePackageDependency) g_win11TryCreatePackageDependency{};
+static decltype(&::DeletePackageDependency) g_win11DeletePackageDependency{};
+static decltype(&::AddPackageDependency) g_win11AddPackageDependency{};
+static decltype(&::RemovePackageDependency) g_win11RemovePackageDependency{};
+static decltype(&::GetResolvedPackageFullNameForPackageDependency) g_win11GetResolvedPackageFullNameForPackageDependency{};
+static decltype(&::GetIdForPackageDependencyContext) g_win11GetIdForPackageDependencyContext{};
+static decltype(&::GetPackageGraphRevisionId) g_win11GetPackageGraphRevisionId{};
+
+constexpr PackageDependencyLifetimeKind ToLifetimeKind(MddPackageDependencyLifetimeKind lifetimeKind)
+{
+ switch (lifetimeKind)
+ {
+ case MddPackageDependencyLifetimeKind::Process: return PackageDependencyLifetimeKind_Process;
+ case MddPackageDependencyLifetimeKind::FilePath: return PackageDependencyLifetimeKind_FilePath;
+ case MddPackageDependencyLifetimeKind::RegistryKey: return PackageDependencyLifetimeKind_RegistryKey;
+ default: THROW_HR_MSG(E_UNEXPECTED, "Unknown MddPackageDependencyLifetimeKind (%d)", lifetimeKind);
+ };
+}
+
+constexpr PackageDependencyLifetimeKind ToLifetimeKind(winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeArtifactKind lifetimeKind)
+{
+ switch (lifetimeKind)
+ {
+ case winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeArtifactKind::Process: return PackageDependencyLifetimeKind_Process;
+ case winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeArtifactKind::FilePath: return PackageDependencyLifetimeKind_FilePath;
+ case winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeArtifactKind::RegistryKey: return PackageDependencyLifetimeKind_RegistryKey;
+ default: THROW_HR_MSG(E_UNEXPECTED, "Unknown winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeKind (%d)", lifetimeKind);
+ };
+}
+}
+
+HRESULT WINAPI MddWin11Initialize() noexcept
+{
+ if (!MddCore::Win11::IsSupported())
+ {
+ return S_OK;
+ }
+
+ HMODULE dllApisetAppmodelRuntime_1_6{ LoadLibraryExW(L"api-ms-win-appmodel-runtime-l1-1-6.dll", nullptr, 0) };
+ FAIL_FAST_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), dllApisetAppmodelRuntime_1_6);
+
+ auto win11TryCreatePackageDependency{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_6, TryCreatePackageDependency) };
+ RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11TryCreatePackageDependency);
+ auto win11DeletePackageDependency{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_6, DeletePackageDependency) };
+ RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11DeletePackageDependency);
+ auto win11AddPackageDependency{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_6, AddPackageDependency) };
+ RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11AddPackageDependency);
+ auto win11RemovePackageDependency{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_6, RemovePackageDependency) };
+ RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11RemovePackageDependency);
+ auto win11GetResolvedPackageFullNameForPackageDependency{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_6, GetResolvedPackageFullNameForPackageDependency) };
+ RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11GetResolvedPackageFullNameForPackageDependency);
+ auto win11GetIdForPackageDependencyContext{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_6, GetIdForPackageDependencyContext) };
+ RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11GetIdForPackageDependencyContext);
+ auto win11GetPackageGraphRevisionId{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_6, GetPackageGraphRevisionId) };
+ RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11GetPackageGraphRevisionId);
+
+ MddCore::Win11::g_dllApisetAppmodelRuntime_1_6 = dllApisetAppmodelRuntime_1_6;
+ MddCore::Win11::g_win11TryCreatePackageDependency = win11TryCreatePackageDependency;
+ MddCore::Win11::g_win11DeletePackageDependency = win11DeletePackageDependency;
+ MddCore::Win11::g_win11AddPackageDependency = win11AddPackageDependency;
+ MddCore::Win11::g_win11RemovePackageDependency = win11RemovePackageDependency;
+ MddCore::Win11::g_win11GetResolvedPackageFullNameForPackageDependency = win11GetResolvedPackageFullNameForPackageDependency;
+ MddCore::Win11::g_win11GetIdForPackageDependencyContext = win11GetIdForPackageDependencyContext;
+ MddCore::Win11::g_win11GetPackageGraphRevisionId = win11GetPackageGraphRevisionId;
+ return S_OK;
+}
+
+HRESULT WINAPI MddWin11Shutdown() noexcept
+{
+ if (MddCore::Win11::g_dllApisetAppmodelRuntime_1_6)
+ {
+ MddCore::Win11::g_win11TryCreatePackageDependency = nullptr;
+ MddCore::Win11::g_win11DeletePackageDependency = nullptr;
+ MddCore::Win11::g_win11AddPackageDependency = nullptr;
+ MddCore::Win11::g_win11RemovePackageDependency = nullptr;
+ MddCore::Win11::g_win11GetResolvedPackageFullNameForPackageDependency = nullptr;
+ MddCore::Win11::g_win11GetIdForPackageDependencyContext = nullptr;
+ MddCore::Win11::g_win11GetPackageGraphRevisionId = nullptr;
+ FreeLibrary(MddCore::Win11::g_dllApisetAppmodelRuntime_1_6);
+ MddCore::Win11::g_dllApisetAppmodelRuntime_1_6 = nullptr;
+ }
+ return S_OK;
+}
+
+bool MddCore::Win11::IsSupported()
+{
+ static bool s_isSupported{ WindowsVersion::IsWindows11_22H2OrGreater() };
+ return s_isSupported;
+}
+
+HRESULT MddCore::Win11::TryCreatePackageDependency(
+ PSID user,
+ const winrt::hstring& packageFamilyName,
+ const winrt::Windows::ApplicationModel::PackageVersion& minVersion,
+ winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyProcessorArchitectures packageDependencyProcessorArchitectures,
+ winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::CreatePackageDependencyOptions const& options,
+ _Outptr_result_maybenull_ PWSTR* packageDependencyId)
+{
+ PCWSTR win11PackageFamilyName{ packageFamilyName.c_str() };
+
+ const ::AppModel::Identity::PackageVersion minPackageVersion{ minVersion };
+ const PACKAGE_VERSION win11MinVersion{ minPackageVersion };
+
+ auto win11PackageDependencyProcessorArchitectures{ PackageDependencyProcessorArchitectures_None };
+ WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_Neutral, WI_IsFlagSet(packageDependencyProcessorArchitectures, winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyProcessorArchitectures::Neutral));
+ WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_X86, WI_IsFlagSet(packageDependencyProcessorArchitectures, winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyProcessorArchitectures::X86));
+ WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_X64, WI_IsFlagSet(packageDependencyProcessorArchitectures, winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyProcessorArchitectures::X64));
+ WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_Arm, WI_IsFlagSet(packageDependencyProcessorArchitectures, winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyProcessorArchitectures::Arm));
+ WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_Arm64, WI_IsFlagSet(packageDependencyProcessorArchitectures, winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyProcessorArchitectures::Arm64));
+ WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_X86A64, WI_IsFlagSet(packageDependencyProcessorArchitectures, winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyProcessorArchitectures::X86OnArm64));
+
+ const auto win11LifetimeKind{ ToLifetimeKind(options.LifetimeArtifactKind()) };
+
+ PCWSTR win11LifetimeArtifact{ options.LifetimeArtifact().c_str() };
+
+ auto win11Options{ CreatePackageDependencyOptions_None };
+ WI_SetFlagIf(win11Options, CreatePackageDependencyOptions_DoNotVerifyDependencyResolution, !options.VerifyDependencyResolution());
+ //TODO CreatePackageDependencyOptions_ScopeIsSystem
+
+ RETURN_IF_FAILED(g_win11TryCreatePackageDependency(user, win11PackageFamilyName, win11MinVersion,
+ win11PackageDependencyProcessorArchitectures, win11LifetimeKind, win11LifetimeArtifact,
+ win11Options, packageDependencyId));
+ return S_OK;
+}
+
+HRESULT MddCore::Win11::TryCreatePackageDependency(
+ PSID user,
+ _In_ PCWSTR packageFamilyName,
+ PACKAGE_VERSION minVersion,
+ MddPackageDependencyProcessorArchitectures packageDependencyProcessorArchitectures,
+ MddPackageDependencyLifetimeKind lifetimeKind,
+ PCWSTR lifetimeArtifact,
+ MddCreatePackageDependencyOptions options,
+ _Outptr_result_maybenull_ PWSTR* packageDependencyId)
+{
+ const ::AppModel::Identity::PackageVersion win11MinVersion{ minVersion };
+
+ auto win11PackageDependencyProcessorArchitectures{ PackageDependencyProcessorArchitectures_None };
+ WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_Neutral, WI_IsFlagSet(packageDependencyProcessorArchitectures, MddPackageDependencyProcessorArchitectures::Neutral));
+ WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_X86, WI_IsFlagSet(packageDependencyProcessorArchitectures, MddPackageDependencyProcessorArchitectures::X86));
+ WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_X64, WI_IsFlagSet(packageDependencyProcessorArchitectures, MddPackageDependencyProcessorArchitectures::X64));
+ WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_Arm, WI_IsFlagSet(packageDependencyProcessorArchitectures, MddPackageDependencyProcessorArchitectures::Arm));
+ WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_Arm64, WI_IsFlagSet(packageDependencyProcessorArchitectures, MddPackageDependencyProcessorArchitectures::Arm64));
+ WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_X86A64, WI_IsFlagSet(packageDependencyProcessorArchitectures, MddPackageDependencyProcessorArchitectures::X86OnArm64));
+
+ const auto win11LifetimeKind{ ToLifetimeKind(lifetimeKind) };
+
+ auto win11Options{ CreatePackageDependencyOptions_None };
+ WI_SetFlagIf(win11Options, CreatePackageDependencyOptions_DoNotVerifyDependencyResolution, WI_IsFlagSet(options, MddCreatePackageDependencyOptions::DoNotVerifyDependencyResolution));
+ WI_SetFlagIf(win11Options, CreatePackageDependencyOptions_ScopeIsSystem, WI_IsFlagSet(options, MddCreatePackageDependencyOptions::ScopeIsSystem));
+
+ RETURN_IF_FAILED(g_win11TryCreatePackageDependency(user, packageFamilyName, win11MinVersion,
+ win11PackageDependencyProcessorArchitectures, win11LifetimeKind, lifetimeArtifact,
+ win11Options, packageDependencyId));
+ return S_OK;
+}
+
+void MddCore::Win11::DeletePackageDependency(
+ const winrt::hstring& packageDependencyId)
+{
+ DeletePackageDependency(packageDependencyId.c_str());
+}
+
+void MddCore::Win11::DeletePackageDependency(
+ _In_ PCWSTR packageDependencyId)
+{
+ (void)LOG_IF_FAILED(g_win11DeletePackageDependency(packageDependencyId));
+}
+
+HRESULT MddCore::Win11::AddPackageDependency(
+ const winrt::hstring& packageDependencyId,
+ winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::AddPackageDependencyOptions const& options,
+ _Out_ MDD_PACKAGEDEPENDENCY_CONTEXT* packageDependencyContext,
+ _Outptr_opt_result_maybenull_ PWSTR* packageFullName)
+{
+ PCWSTR win11PackageDependencyId{ packageDependencyId.c_str() };
+
+ const auto win11Rank{ options.Rank() };
+
+ auto win11Options{ AddPackageDependencyOptions_None };
+ WI_SetFlagIf(win11Options, AddPackageDependencyOptions_PrependIfRankCollision, options.PrependIfRankCollision());
+
+ static_assert(sizeof(MDD_PACKAGEDEPENDENCY_CONTEXT) == sizeof(PACKAGEDEPENDENCY_CONTEXT));
+ auto win11PackageDependencyContext{ reinterpret_cast(packageDependencyContext) };
+
+ RETURN_IF_FAILED(g_win11AddPackageDependency(win11PackageDependencyId, win11Rank, win11Options, win11PackageDependencyContext, packageFullName));
+ return S_OK;
+}
+
+HRESULT MddCore::Win11::AddPackageDependency(
+ _In_ PCWSTR packageDependencyId,
+ INT32 rank,
+ MddAddPackageDependencyOptions options,
+ _Out_ MDD_PACKAGEDEPENDENCY_CONTEXT* packageDependencyContext,
+ _Outptr_opt_result_maybenull_ PWSTR* packageFullName)
+{
+ auto win11Options{ AddPackageDependencyOptions_None };
+ WI_SetFlagIf(win11Options, AddPackageDependencyOptions_PrependIfRankCollision, WI_IsFlagSet(options, MddAddPackageDependencyOptions::PrependIfRankCollision));
+
+ static_assert(sizeof(MDD_PACKAGEDEPENDENCY_CONTEXT) == sizeof(PACKAGEDEPENDENCY_CONTEXT));
+ auto win11PackageDependencyContext{ reinterpret_cast(packageDependencyContext) };
+
+ RETURN_IF_FAILED(g_win11AddPackageDependency(packageDependencyId, rank, win11Options, win11PackageDependencyContext, packageFullName));
+ return S_OK;
+}
+
+void MddCore::Win11::RemovePackageDependency(
+ winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyContextId packageDependencyContextId)
+{
+ return RemovePackageDependency(ToContext(packageDependencyContextId));
+}
+
+void MddCore::Win11::RemovePackageDependency(
+ _In_ MDD_PACKAGEDEPENDENCY_CONTEXT packageDependencyContext)
+{
+ static_assert(sizeof(MDD_PACKAGEDEPENDENCY_CONTEXT) == sizeof(PACKAGEDEPENDENCY_CONTEXT));
+ auto win11PackageDependencyContext{ reinterpret_cast(packageDependencyContext) };
+
+ g_win11RemovePackageDependency(win11PackageDependencyContext);
+}
+
+HRESULT MddCore::Win11::GetResolvedPackageFullNameForPackageDependency(
+ _In_ PCWSTR packageDependencyId,
+ _Outptr_result_maybenull_ PWSTR* packageFullName)
+{
+ RETURN_IF_FAILED(g_win11GetResolvedPackageFullNameForPackageDependency(packageDependencyId, packageFullName));
+ return S_OK;
+}
+
+HRESULT MddCore::Win11::GetIdForPackageDependencyContext(
+ _In_ MDD_PACKAGEDEPENDENCY_CONTEXT packageDependencyContext,
+ _Outptr_result_maybenull_ PWSTR* packageDependencyId)
+{
+ static_assert(sizeof(MDD_PACKAGEDEPENDENCY_CONTEXT) == sizeof(PACKAGEDEPENDENCY_CONTEXT));
+ auto win11PackageDependencyContext{ reinterpret_cast(packageDependencyContext) };
+
+ RETURN_IF_FAILED(g_win11GetIdForPackageDependencyContext(win11PackageDependencyContext, packageDependencyId));
+ return S_OK;
+}
+
+UINT32 MddCore::Win11::GetPackageGraphRevisionId()
+{
+ return g_win11GetPackageGraphRevisionId();
+}
diff --git a/dev/DynamicDependency/API/MddWin11.h b/dev/DynamicDependency/API/MddWin11.h
index 79e7d63064..8b0f6bef92 100644
--- a/dev/DynamicDependency/API/MddWin11.h
+++ b/dev/DynamicDependency/API/MddWin11.h
@@ -5,409 +5,78 @@
#define MDDWIN11DYNAMICDEPENDENCY_H
#include
+#include
-#include
+HRESULT WINAPI MddWin11Initialize() noexcept;
+
+HRESULT WINAPI MddWin11Shutdown() noexcept;
namespace MddCore::Win11
{
- namespace details
- {
- // GetCurrentPackageInfo3 is documented but not in appmodel.h
- // See https://learn.microsoft.com/windows/win32/appxpkg/appmodel/nf-appmodel-getcurrentpackageinfo3
- enum PackageInfo3Type
- {
- PackageInfo3Type_PackageInfoGeneration = 16,
- };
- //
- WINBASEAPI HRESULT WINAPI GetCurrentPackageInfo3(
- _In_ UINT32 flags,
- _In_ MddCore::Win11::details::PackageInfo3Type packageInfoType,
- _Inout_ UINT32* bufferLength,
- _Out_writes_bytes_opt_(*bufferLength) void* buffer,
- _Out_opt_ UINT32* count);
-
- __declspec(selectany) HMODULE g_dllApisetAppmodelRuntime_1_5{};
- __declspec(selectany) decltype(&::TryCreatePackageDependency) g_win11TryCreatePackageDependency{};
- __declspec(selectany) decltype(&::DeletePackageDependency) g_win11DeletePackageDependency{};
- __declspec(selectany) decltype(&::AddPackageDependency) g_win11AddPackageDependency{};
- __declspec(selectany) decltype(&::RemovePackageDependency) g_win11RemovePackageDependency{};
- __declspec(selectany) decltype(&::GetResolvedPackageFullNameForPackageDependency) g_win11GetResolvedPackageFullNameForPackageDependency{};
- __declspec(selectany) decltype(&::GetIdForPackageDependencyContext) g_win11GetIdForPackageDependencyContext{};
- __declspec(selectany) decltype(&MddCore::Win11::details::GetCurrentPackageInfo3) g_win11GetCurrentPackageInfo3{};
-
- __declspec(selectany) HMODULE g_dllApisetAppmodelRuntime_1_6{};
- __declspec(selectany) decltype(&::GetPackageGraphRevisionId) g_win11GetPackageGraphRevisionId{};
-
- __declspec(selectany) HMODULE g_dllApisetAppmodelRuntime_1_7{};
- //TODO:47775758 GetResolved2 __declspec(selectany) decltype(&::GetResolvedPackageFullNameForPackageDependency2) g_win11GetResolvedPackageFullNameForPackageDependency2{};
-
- __declspec(selectany) bool g_isSupported{ WindowsVersion::IsWindows11_22H2OrGreater() };
-
- constexpr PackageDependencyLifetimeKind ToLifetimeKind(MddPackageDependencyLifetimeKind lifetimeKind)
- {
- switch (lifetimeKind)
- {
- case MddPackageDependencyLifetimeKind::Process: return PackageDependencyLifetimeKind_Process;
- case MddPackageDependencyLifetimeKind::FilePath: return PackageDependencyLifetimeKind_FilePath;
- case MddPackageDependencyLifetimeKind::RegistryKey: return PackageDependencyLifetimeKind_RegistryKey;
- default: THROW_HR_MSG(E_UNEXPECTED, "Unknown MddPackageDependencyLifetimeKind (%d)", lifetimeKind);
- };
- }
-
-#if defined(WINRT_Microsoft_Windows_ApplicationModel_DynamicDependency_H)
- constexpr PackageDependencyLifetimeKind ToLifetimeKind(winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeArtifactKind lifetimeKind)
- {
- switch (lifetimeKind)
- {
- case winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeArtifactKind::Process: return PackageDependencyLifetimeKind_Process;
- case winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeArtifactKind::FilePath: return PackageDependencyLifetimeKind_FilePath;
- case winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeArtifactKind::RegistryKey: return PackageDependencyLifetimeKind_RegistryKey;
- default: THROW_HR_MSG(E_UNEXPECTED, "Unknown winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeKind (%d)", lifetimeKind);
- };
- }
-#endif // defined(WINRT_Microsoft_Windows_ApplicationModel_DynamicDependency_H)
-
- inline HRESULT Load(PCWSTR moduleName, HMODULE& hmodule)
- {
- hmodule = LoadLibraryExW(moduleName, nullptr, 0);
- if (hmodule == nullptr)
- {
- const auto rc{ GetLastError() };
- RETURN_HR_IF_MSG(HRESULT_FROM_WIN32(rc), rc != ERROR_MOD_NOT_FOUND, "%ls", moduleName);
- }
- return S_OK;
- }
- }
-
-#if defined(WINRT_Microsoft_Windows_ApplicationModel_DynamicDependency_H)
- inline winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyContextId ToContextId(MDD_PACKAGEDEPENDENCY_CONTEXT context)
- {
- return winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyContextId{ static_cast(reinterpret_cast(context)) };
- }
-#endif // defined(WINRT_Microsoft_Windows_ApplicationModel_DynamicDependency_H)
-
-#if defined(WINRT_Microsoft_Windows_ApplicationModel_DynamicDependency_H)
- inline MDD_PACKAGEDEPENDENCY_CONTEXT ToContext(winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyContextId contextId)
- {
- return reinterpret_cast(static_cast(contextId.Id));
- }
-#endif // defined(WINRT_Microsoft_Windows_ApplicationModel_DynamicDependency_H)
-
- inline bool IsSupported()
- {
- return MddCore::Win11::details::g_isSupported;
- }
-
- inline bool IsGetResolvedPackageFullNameForPackageDependency2Supported()
- {
- return IsSupported() && MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_7;
- }
-
- inline HRESULT TryCreatePackageDependency(
- PSID user,
- _In_ PCWSTR packageFamilyName,
- PACKAGE_VERSION minVersion,
- MddPackageDependencyProcessorArchitectures packageDependencyProcessorArchitectures,
- MddPackageDependencyLifetimeKind lifetimeKind,
- PCWSTR lifetimeArtifact,
- MddCreatePackageDependencyOptions options,
- _Outptr_result_maybenull_ PWSTR* packageDependencyId)
- {
- const ::AppModel::Identity::PackageVersion win11MinVersion{ minVersion };
-
- auto win11PackageDependencyProcessorArchitectures{ PackageDependencyProcessorArchitectures_None };
- WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_Neutral, WI_IsFlagSet(packageDependencyProcessorArchitectures, MddPackageDependencyProcessorArchitectures::Neutral));
- WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_X86, WI_IsFlagSet(packageDependencyProcessorArchitectures, MddPackageDependencyProcessorArchitectures::X86));
- WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_X64, WI_IsFlagSet(packageDependencyProcessorArchitectures, MddPackageDependencyProcessorArchitectures::X64));
- WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_Arm, WI_IsFlagSet(packageDependencyProcessorArchitectures, MddPackageDependencyProcessorArchitectures::Arm));
- WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_Arm64, WI_IsFlagSet(packageDependencyProcessorArchitectures, MddPackageDependencyProcessorArchitectures::Arm64));
- WI_SetFlagIf(win11PackageDependencyProcessorArchitectures, PackageDependencyProcessorArchitectures_X86A64, WI_IsFlagSet(packageDependencyProcessorArchitectures, MddPackageDependencyProcessorArchitectures::X86OnArm64));
-
- const auto win11LifetimeKind{ MddCore::Win11::details::ToLifetimeKind(lifetimeKind) };
-
- auto win11Options{ CreatePackageDependencyOptions_None };
- WI_SetFlagIf(win11Options, CreatePackageDependencyOptions_DoNotVerifyDependencyResolution, WI_IsFlagSet(options, MddCreatePackageDependencyOptions::DoNotVerifyDependencyResolution));
- WI_SetFlagIf(win11Options, CreatePackageDependencyOptions_ScopeIsSystem, WI_IsFlagSet(options, MddCreatePackageDependencyOptions::ScopeIsSystem));
-
- RETURN_IF_FAILED(MddCore::Win11::details::g_win11TryCreatePackageDependency(user, packageFamilyName, win11MinVersion,
- win11PackageDependencyProcessorArchitectures, win11LifetimeKind, lifetimeArtifact,
- win11Options, packageDependencyId));
- return S_OK;
- }
-
-#if defined(WINRT_Microsoft_Windows_ApplicationModel_DynamicDependency_H)
- inline HRESULT _TryCreatePackageDependency(
- PSID user,
- const winrt::hstring& packageFamilyName,
- const winrt::Windows::ApplicationModel::PackageVersion& minVersion,
- winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyProcessorArchitectures packageDependencyProcessorArchitectures,
- winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::CreatePackageDependencyOptions const& options,
- const MddCreatePackageDependencyOptions initialOptions,
- _Outptr_result_maybenull_ PWSTR* packageDependencyId)
- {
- PCWSTR mddPackageFamilyName{ packageFamilyName.c_str() };
-
- const ::AppModel::Identity::PackageVersion minPackageVersion{ minVersion };
- const PACKAGE_VERSION mddMinVersion{ minPackageVersion };
-
- static_assert(static_cast(PackageDependencyProcessorArchitectures_Neutral) == static_cast(MddPackageDependencyProcessorArchitectures::Neutral));
- static_assert(static_cast(PackageDependencyProcessorArchitectures_X86) == static_cast(MddPackageDependencyProcessorArchitectures::X86));
- static_assert(static_cast(PackageDependencyProcessorArchitectures_X64) == static_cast(MddPackageDependencyProcessorArchitectures::X64));
- static_assert(static_cast(PackageDependencyProcessorArchitectures_Arm) == static_cast(MddPackageDependencyProcessorArchitectures::Arm));
- static_assert(static_cast(PackageDependencyProcessorArchitectures_Arm64) == static_cast(MddPackageDependencyProcessorArchitectures::Arm64));
- static_assert(static_cast(PackageDependencyProcessorArchitectures_X86A64) == static_cast(MddPackageDependencyProcessorArchitectures::X86OnArm64));
- const auto mddPackageDependencyProcessorArchitectures{ static_cast(packageDependencyProcessorArchitectures) };
-
- static_assert(static_cast(MddPackageDependencyLifetimeKind::Process) == static_cast(winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeArtifactKind::Process));
- static_assert(static_cast(MddPackageDependencyLifetimeKind::FilePath) == static_cast(winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeArtifactKind::FilePath));
- static_assert(static_cast(MddPackageDependencyLifetimeKind::RegistryKey) == static_cast(winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyLifetimeArtifactKind::RegistryKey));
- const auto mddLifetimeKind{ static_cast(options.LifetimeArtifactKind()) };
-
- PCWSTR mddLifetimeArtifact{ options.LifetimeArtifact().c_str() };
-
- auto mddOptions{ initialOptions };
- WI_SetFlagIf(mddOptions, MddCreatePackageDependencyOptions::DoNotVerifyDependencyResolution, !options.VerifyDependencyResolution());
- // NOTE: ScopeIsSystem is handled by the caller via initialOptions
-
- RETURN_IF_FAILED(TryCreatePackageDependency(user, mddPackageFamilyName, mddMinVersion,
- mddPackageDependencyProcessorArchitectures, mddLifetimeKind, mddLifetimeArtifact, mddOptions, packageDependencyId));
- return S_OK;
- }
-
- inline HRESULT TryCreatePackageDependency(
- PSID user,
- const winrt::hstring& packageFamilyName,
- const winrt::Windows::ApplicationModel::PackageVersion& minVersion,
- winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyProcessorArchitectures packageDependencyProcessorArchitectures,
- winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::CreatePackageDependencyOptions const& options,
- _Outptr_result_maybenull_ PWSTR* packageDependencyId)
- {
- RETURN_IF_FAILED(_TryCreatePackageDependency(user, packageFamilyName, minVersion,
- packageDependencyProcessorArchitectures, options,
- MddCreatePackageDependencyOptions::None, packageDependencyId));
- return S_OK;
- }
-
- inline HRESULT TryCreatePackageDependencyForSystem(
- PSID user,
- const winrt::hstring& packageFamilyName,
- const winrt::Windows::ApplicationModel::PackageVersion& minVersion,
- winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyProcessorArchitectures packageDependencyProcessorArchitectures,
- winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::CreatePackageDependencyOptions const& options,
- _Outptr_result_maybenull_ PWSTR* packageDependencyId)
- {
- RETURN_IF_FAILED(_TryCreatePackageDependency(user, packageFamilyName, minVersion,
- packageDependencyProcessorArchitectures, options,
- MddCreatePackageDependencyOptions::ScopeIsSystem, packageDependencyId));
- return S_OK;
- }
-#endif // defined(WINRT_Microsoft_Windows_ApplicationModel_DynamicDependency_H)
-
- inline void DeletePackageDependency(
- _In_ PCWSTR packageDependencyId)
- {
- (void)LOG_IF_FAILED(MddCore::Win11::details::g_win11DeletePackageDependency(packageDependencyId));
- }
-
- inline void DeletePackageDependency(
- const winrt::hstring& packageDependencyId)
- {
- DeletePackageDependency(packageDependencyId.c_str());
- }
-
- inline HRESULT AddPackageDependency(
- _In_ PCWSTR packageDependencyId,
- std::int32_t rank,
- MddAddPackageDependencyOptions options,
- _Out_ MDD_PACKAGEDEPENDENCY_CONTEXT* packageDependencyContext,
- _Outptr_opt_result_maybenull_ PWSTR* packageFullName)
- {
- auto win11Options{ AddPackageDependencyOptions_None };
- WI_SetFlagIf(win11Options, AddPackageDependencyOptions_PrependIfRankCollision, WI_IsFlagSet(options, MddAddPackageDependencyOptions::PrependIfRankCollision));
-
- static_assert(sizeof(MDD_PACKAGEDEPENDENCY_CONTEXT) == sizeof(PACKAGEDEPENDENCY_CONTEXT));
- auto win11PackageDependencyContext{ reinterpret_cast(packageDependencyContext) };
-
- RETURN_IF_FAILED(MddCore::Win11::details::g_win11AddPackageDependency(packageDependencyId, rank, win11Options, win11PackageDependencyContext, packageFullName));
- return S_OK;
- }
-
-#if defined(WINRT_Microsoft_Windows_ApplicationModel_DynamicDependency_H)
- inline HRESULT AddPackageDependency(
- const winrt::hstring& packageDependencyId,
- winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::AddPackageDependencyOptions const& options,
- _Out_ MDD_PACKAGEDEPENDENCY_CONTEXT* packageDependencyContext,
- _Outptr_opt_result_maybenull_ PWSTR* packageFullName)
- {
- PCWSTR mddPackageDependencyId{ packageDependencyId.c_str() };
-
- const auto mddRank{ options.Rank() };
-
- auto mddOptions{ MddAddPackageDependencyOptions::None };
- WI_SetFlagIf(mddOptions, MddAddPackageDependencyOptions::PrependIfRankCollision, options.PrependIfRankCollision());
-
- RETURN_IF_FAILED(AddPackageDependency(mddPackageDependencyId, mddRank, mddOptions, packageDependencyContext, packageFullName));
- return S_OK;
- }
-#endif // defined(WINRT_Microsoft_Windows_ApplicationModel_DynamicDependency_H)
-
- inline void RemovePackageDependency(
- _In_ MDD_PACKAGEDEPENDENCY_CONTEXT packageDependencyContext)
- {
- static_assert(sizeof(MDD_PACKAGEDEPENDENCY_CONTEXT) == sizeof(PACKAGEDEPENDENCY_CONTEXT));
- auto win11PackageDependencyContext{ reinterpret_cast(packageDependencyContext) };
-
- MddCore::Win11::details::g_win11RemovePackageDependency(win11PackageDependencyContext);
- }
-
-#if defined(WINRT_Microsoft_Windows_ApplicationModel_DynamicDependency_H)
- inline void RemovePackageDependency(
- winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyContextId packageDependencyContextId)
- {
- return RemovePackageDependency(MddCore::Win11::ToContext(packageDependencyContextId));
- }
-#endif // defined(WINRT_Microsoft_Windows_ApplicationModel_DynamicDependency_H)
-
- inline HRESULT GetResolvedPackageFullNameForPackageDependency(
- _In_ PCWSTR packageDependencyId,
- _Outptr_result_maybenull_ PWSTR* packageFullName)
- {
- RETURN_IF_FAILED(MddCore::Win11::details::g_win11GetResolvedPackageFullNameForPackageDependency(packageDependencyId, packageFullName));
- return S_OK;
- }
-
- inline HRESULT GetResolvedPackageFullNameForPackageDependency2(
- _In_ PCWSTR /*packageDependencyId*/,
- _Outptr_result_maybenull_ PWSTR* /*packageFullName*/)
- {
- //TODO:47775758 GetResolved2 RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED), g_win11GetResolvedPackageFullNameForPackageDependency2);
- //TODO:47775758 GetResolved2 RETURN_IF_FAILED(MddCore::Win11::details::g_win11GetResolvedPackageFullNameForPackageDependency2(packageDependencyId, packageFullName));
- //TODO:47775758 GetResolved2 return S_OK;
- RETURN_WIN32(ERROR_NOT_SUPPORTED);
- }
-
- inline HRESULT GetIdForPackageDependencyContext(
- _In_ MDD_PACKAGEDEPENDENCY_CONTEXT packageDependencyContext,
- _Outptr_result_maybenull_ PWSTR* packageDependencyId)
- {
- static_assert(sizeof(MDD_PACKAGEDEPENDENCY_CONTEXT) == sizeof(PACKAGEDEPENDENCY_CONTEXT));
- auto win11PackageDependencyContext{ reinterpret_cast(packageDependencyContext) };
-
- RETURN_IF_FAILED(MddCore::Win11::details::g_win11GetIdForPackageDependencyContext(win11PackageDependencyContext, packageDependencyId));
- return S_OK;
- }
-
- inline UINT32 GetPackageGraphRevisionId()
- {
- if (MddCore::Win11::details::g_win11GetPackageGraphRevisionId())
- {
- return MddCore::Win11::details::g_win11GetPackageGraphRevisionId();
- }
- else
- {
- UINT32 revisionId{};
- UINT32 bufferLength{ sizeof(revisionId) };
- const HRESULT hr{ MddCore::Win11::details::g_win11GetCurrentPackageInfo3(0, MddCore::Win11::details::PackageInfo3Type_PackageInfoGeneration, &bufferLength, &revisionId, nullptr) };
- if (hr == HRESULT_FROM_WIN32(APPMODEL_ERROR_NO_PACKAGE))
- {
- // No package graph
- return 0;
- }
- LOG_IF_FAILED_MSG(hr, "GetCurrentPackageInfo3 failed!");
- return revisionId;
- }
- }
-}
-
-inline HRESULT WINAPI MddWin11Initialize() noexcept
+bool IsSupported();
+
+HRESULT TryCreatePackageDependency(
+ PSID user,
+ const winrt::hstring& packageFamilyName,
+ const winrt::Windows::ApplicationModel::PackageVersion& minVersion,
+ winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyProcessorArchitectures packageDependencyProcessorArchitectures,
+ winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::CreatePackageDependencyOptions const& options,
+ _Outptr_result_maybenull_ PWSTR* packageDependencyId);
+
+HRESULT TryCreatePackageDependency(
+ PSID user,
+ _In_ PCWSTR packageFamilyName,
+ PACKAGE_VERSION minVersion,
+ MddPackageDependencyProcessorArchitectures packageDependencyProcessorArchitectures,
+ MddPackageDependencyLifetimeKind lifetimeKind,
+ PCWSTR lifetimeArtifact,
+ MddCreatePackageDependencyOptions options,
+ _Outptr_result_maybenull_ PWSTR* packageDependencyId);
+
+void DeletePackageDependency(
+ const winrt::hstring& packageDependencyId);
+
+void DeletePackageDependency(
+ _In_ PCWSTR packageDependencyId);
+
+HRESULT AddPackageDependency(
+ const winrt::hstring& packageDependencyId,
+ winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::AddPackageDependencyOptions const& options,
+ _Out_ MDD_PACKAGEDEPENDENCY_CONTEXT* packageDependencyContext,
+ _Outptr_opt_result_maybenull_ PWSTR* packageFullName);
+
+HRESULT AddPackageDependency(
+ _In_ PCWSTR packageDependencyId,
+ std::int32_t rank,
+ MddAddPackageDependencyOptions options,
+ _Out_ MDD_PACKAGEDEPENDENCY_CONTEXT* packageDependencyContext,
+ _Outptr_opt_result_maybenull_ PWSTR* packageFullName);
+
+void RemovePackageDependency(
+ winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyContextId packageDependencyContextId);
+
+void RemovePackageDependency(
+ _In_ MDD_PACKAGEDEPENDENCY_CONTEXT packageDependencyContext);
+
+HRESULT GetResolvedPackageFullNameForPackageDependency(
+ _In_ PCWSTR packageDependencyId,
+ _Outptr_result_maybenull_ PWSTR* packageFullName);
+
+HRESULT GetIdForPackageDependencyContext(
+ _In_ MDD_PACKAGEDEPENDENCY_CONTEXT packageDependencyContext,
+ _Outptr_result_maybenull_ PWSTR* packageDependencyId);
+
+UINT32 GetPackageGraphRevisionId();
+
+inline winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyContextId ToContextId(MDD_PACKAGEDEPENDENCY_CONTEXT context)
{
- if (!MddCore::Win11::IsSupported())
- {
- return S_OK;
- }
-
- //TODO:47775758 GetResolved2 auto win11GetResolvedPackageFullNameForPackageDependency2{ static_cast(nullptr) };
- HMODULE dllApisetAppmodelRuntime_1_7{};
- RETURN_IF_FAILED(MddCore::Win11::details::Load(L"api-ms-win-appmodel-runtime-l1-1-7.dll", dllApisetAppmodelRuntime_1_7));
- if (dllApisetAppmodelRuntime_1_7)
- {
- //TODO:47775758 GetResolved2 win11GetResolvedPackageFullNameForPackageDependency2 = GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_7, GetResolvedPackageFullNameForPackageDependency);
- //TODO:47775758 GetResolved2 RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11GetResolvedPackageFullNameForPackageDependency2);
- }
-
- auto win11GetPackageGraphRevisionId{ static_cast(nullptr) };
- HMODULE dllApisetAppmodelRuntime_1_6{};
- RETURN_IF_FAILED(MddCore::Win11::details::Load(L"api-ms-win-appmodel-runtime-l1-1-6.dll", dllApisetAppmodelRuntime_1_6));
- if (dllApisetAppmodelRuntime_1_6)
- {
- win11GetPackageGraphRevisionId = GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_6, GetPackageGraphRevisionId);
- RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11GetPackageGraphRevisionId);
- }
-
- HMODULE dllApisetAppmodelRuntime_1_5{ LoadLibraryExW(L"api-ms-win-appmodel-runtime-l1-1-5.dll", nullptr, 0) };
- RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), dllApisetAppmodelRuntime_1_5);
- auto win11TryCreatePackageDependency{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_5, TryCreatePackageDependency) };
- RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11TryCreatePackageDependency);
- auto win11DeletePackageDependency{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_5, DeletePackageDependency) };
- RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11DeletePackageDependency);
- auto win11AddPackageDependency{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_5, AddPackageDependency) };
- RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11AddPackageDependency);
- auto win11RemovePackageDependency{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_5, RemovePackageDependency) };
- RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11RemovePackageDependency);
- auto win11GetResolvedPackageFullNameForPackageDependency{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_5, GetResolvedPackageFullNameForPackageDependency) };
- RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11GetResolvedPackageFullNameForPackageDependency);
- auto win11GetIdForPackageDependencyContext{ GetProcAddressByFunctionDeclaration(dllApisetAppmodelRuntime_1_5, GetIdForPackageDependencyContext) };
- RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11GetIdForPackageDependencyContext);
- auto win11GetCurrentPackageInfo3{ reinterpret_cast(GetProcAddress(dllApisetAppmodelRuntime_1_5, "GetCurrentPackageInfo3")) };
- RETURN_HR_IF_NULL(HRESULT_FROM_WIN32(GetLastError()), win11GetCurrentPackageInfo3);
-
- // Success
- MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_7 = dllApisetAppmodelRuntime_1_7;
- //TODO:47775758 GetResolved2 MddCore::Win11::details::g_win11GetResolvedPackageFullNameForPackageDependency2 = win11GetResolvedPackageFullNameForPackageDependency2;
- //
- MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_6 = dllApisetAppmodelRuntime_1_6;
- MddCore::Win11::details::g_win11GetPackageGraphRevisionId = win11GetPackageGraphRevisionId;
- //
- MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_5 = dllApisetAppmodelRuntime_1_5;
- MddCore::Win11::details::g_win11TryCreatePackageDependency = win11TryCreatePackageDependency;
- MddCore::Win11::details::g_win11DeletePackageDependency = win11DeletePackageDependency;
- MddCore::Win11::details::g_win11AddPackageDependency = win11AddPackageDependency;
- MddCore::Win11::details::g_win11RemovePackageDependency = win11RemovePackageDependency;
- MddCore::Win11::details::g_win11GetResolvedPackageFullNameForPackageDependency = win11GetResolvedPackageFullNameForPackageDependency;
- MddCore::Win11::details::g_win11GetIdForPackageDependencyContext = win11GetIdForPackageDependencyContext;
- MddCore::Win11::details::g_win11GetCurrentPackageInfo3 = win11GetCurrentPackageInfo3;
- return S_OK;
+ return winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyContextId{ static_cast(reinterpret_cast(context)) };
}
-inline HRESULT WINAPI MddWin11Shutdown() noexcept
+inline MDD_PACKAGEDEPENDENCY_CONTEXT ToContext(winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependencyContextId contextId)
{
- if (MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_7)
- {
- //TODO:47775758 GetResolved2 MddCore::Win11::details::g_win11GetResolvedPackageFullNameForPackageDependency2 = nullptr;
- FreeLibrary(MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_7);
- MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_7 = nullptr;
- }
-
- if (MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_6)
- {
- MddCore::Win11::details::g_win11GetPackageGraphRevisionId = nullptr;
- FreeLibrary(MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_6);
- MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_6 = nullptr;
- }
-
- if (MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_5)
- {
- MddCore::Win11::details::g_win11TryCreatePackageDependency = nullptr;
- MddCore::Win11::details::g_win11DeletePackageDependency = nullptr;
- MddCore::Win11::details::g_win11AddPackageDependency = nullptr;
- MddCore::Win11::details::g_win11RemovePackageDependency = nullptr;
- MddCore::Win11::details::g_win11GetResolvedPackageFullNameForPackageDependency = nullptr;
- MddCore::Win11::details::g_win11GetIdForPackageDependencyContext = nullptr;
- MddCore::Win11::details::g_win11GetCurrentPackageInfo3 = nullptr;
- FreeLibrary(MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_5);
- MddCore::Win11::details::g_dllApisetAppmodelRuntime_1_5 = nullptr;
- }
- return S_OK;
+ return reinterpret_cast(static_cast(contextId.Id));
+}
}
#endif // MDDWIN11DYNAMICDEPENDENCY_H
diff --git a/dev/DynamicDependency/API/MsixDynamicDependency.cpp b/dev/DynamicDependency/API/MsixDynamicDependency.cpp
index 79cff8e7d9..609ba2b03a 100644
--- a/dev/DynamicDependency/API/MsixDynamicDependency.cpp
+++ b/dev/DynamicDependency/API/MsixDynamicDependency.cpp
@@ -9,8 +9,6 @@
#include "PackageDependencyManager.h"
#include "PackageGraphManager.h"
-#include "MddWin11.h"
-
STDAPI MddTryCreatePackageDependency(
PSID user,
_In_ PCWSTR packageFamilyName,
@@ -23,16 +21,7 @@ STDAPI MddTryCreatePackageDependency(
{
*packageDependencyId = nullptr;
- // Use the Win11 APIs if available (instead of Detour'ing to our own implementation)
- if (MddCore::Win11::IsSupported())
- {
- RETURN_IF_FAILED(MddCore::Win11::TryCreatePackageDependency(user, packageFamilyName,
- minVersion, packageDependencyProcessorArchitectures, lifetimeKind, lifetimeArtifact,
- options, packageDependencyId));
- return S_OK;
- }
-
- // WinAppSDK's Dynamic Dependencies requires a non-packaged process
+ // Dynamic Dependencies requires a non-packaged process
RETURN_HR_IF(HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED), AppModel::Identity::IsPackagedProcess());
MddCore::PackageDependencyManager::CreatePackageDependency(user, packageFamilyName, minVersion, packageDependencyProcessorArchitectures, lifetimeKind, lifetimeArtifact, options, packageDependencyId);
@@ -43,14 +32,7 @@ CATCH_RETURN();
STDAPI_(void) MddDeletePackageDependency(
_In_ PCWSTR packageDependencyId) noexcept try
{
- // Use the Win11 APIs if available (instead of Detour'ing to our own implementation)
- if (MddCore::Win11::IsSupported())
- {
- MddCore::Win11::DeletePackageDependency(packageDependencyId);
- return;
- }
-
- // WinAppSDK's Dynamic Dependencies requires a non-packaged process
+ // Dynamic Dependencies requires a non-packaged process
THROW_HR_IF(HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED), AppModel::Identity::IsPackagedProcess());
MddCore::PackageDependencyManager::DeletePackageDependency(packageDependencyId);
@@ -70,14 +52,7 @@ STDAPI MddAddPackageDependency(
*packageFullName = nullptr;
}
- // Use the Win11 APIs if available (instead of Detour'ing to our own implementation)
- if (MddCore::Win11::IsSupported())
- {
- RETURN_IF_FAILED(MddCore::Win11::AddPackageDependency(packageDependencyId, rank, options, packageDependencyContext, packageFullName));
- return S_OK;
- }
-
- // WinAppSDK's Dynamic Dependencies requires a non-packaged process
+ // Dynamic Dependencies requires a non-packaged process
RETURN_HR_IF(HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED), AppModel::Identity::IsPackagedProcess());
RETURN_IF_FAILED(MddCore::PackageGraphManager::AddToPackageGraph(packageDependencyId, rank, options, packageDependencyContext, packageFullName));
@@ -88,14 +63,7 @@ CATCH_RETURN();
STDAPI_(void) MddRemovePackageDependency(
_In_ MDD_PACKAGEDEPENDENCY_CONTEXT packageDependencyContext) noexcept try
{
- // Use the Win11 APIs if available (instead of Detour'ing to our own implementation)
- if (MddCore::Win11::IsSupported())
- {
- MddCore::Win11::RemovePackageDependency(packageDependencyContext);
- return;
- }
-
- // WinAppSDK's Dynamic Dependencies requires a non-packaged process
+ // Dynamic Dependencies requires a non-packaged process
LOG_HR_IF(HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED), AppModel::Identity::IsPackagedProcess());
MddCore::PackageGraphManager::RemoveFromPackageGraph(packageDependencyContext);
@@ -108,46 +76,13 @@ STDAPI MddGetResolvedPackageFullNameForPackageDependency(
{
*packageFullName = nullptr;
- // Use the Win11 APIs if available (instead of Detour'ing to our own implementation)
- if (MddCore::Win11::IsSupported())
- {
- RETURN_IF_FAILED(MddCore::Win11::GetResolvedPackageFullNameForPackageDependency(packageDependencyId, packageFullName));
- return S_OK;
- }
-
- // WinAppSDK's Dynamic Dependencies requires a non-packaged process
+ // Dynamic Dependencies requires a non-packaged process
RETURN_HR_IF(HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED), AppModel::Identity::IsPackagedProcess());
RETURN_HR_IF(E_INVALIDARG, !packageDependencyId || (packageDependencyId[0] == L'\0'));
wil::unique_process_heap_string fullName;
- RETURN_IF_FAILED(MddCore::PackageGraphManager::GetResolvedPackageDependency(packageDependencyId, fullName));
-
- *packageFullName = fullName.release();
- return S_OK;
-}
-CATCH_RETURN();
-
-STDAPI MddGetResolvedPackageFullNameForPackageDependency2(
- _In_ PCWSTR packageDependencyId,
- _Outptr_result_maybenull_ PWSTR* packageFullName) noexcept try
-{
- *packageFullName = nullptr;
-
- // Use the Win11 APIs if available (instead of Detour'ing to our own implementation)
- if (MddCore::Win11::IsSupported())
- {
- RETURN_IF_FAILED(MddCore::Win11::GetResolvedPackageFullNameForPackageDependency2(packageDependencyId, packageFullName));
- return S_OK;
- }
-
- // WinAppSDK's Dynamic Dependencies requires a non-packaged process
- RETURN_HR_IF(HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED), AppModel::Identity::IsPackagedProcess());
-
- RETURN_HR_IF(E_INVALIDARG, !packageDependencyId || (packageDependencyId[0] == L'\0'));
-
- wil::unique_process_heap_string fullName;
- RETURN_IF_FAILED(MddCore::PackageGraphManager::GetResolvedPackageDependency2(packageDependencyId, fullName));
+ RETURN_IF_FAILED(MddCore::PackageGraphManager::ResolvePackageDependency(packageDependencyId, MddAddPackageDependencyOptions::None, fullName));
*packageFullName = fullName.release();
return S_OK;
@@ -160,14 +95,7 @@ STDAPI MddGetIdForPackageDependencyContext(
{
*packageDependencyId = nullptr;
- // Use the Win11 APIs if available (instead of Detour'ing to our own implementation)
- if (MddCore::Win11::IsSupported())
- {
- RETURN_IF_FAILED(MddCore::Win11::GetIdForPackageDependencyContext(packageDependencyContext, packageDependencyId));
- return S_OK;
- }
-
- // WinAppSDK's Dynamic Dependencies requires a non-packaged process
+ // Dynamic Dependencies requires a non-packaged process
RETURN_HR_IF(HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED), AppModel::Identity::IsPackagedProcess());
RETURN_HR_IF(E_INVALIDARG, !packageDependencyContext);
@@ -182,12 +110,6 @@ CATCH_RETURN();
STDAPI_(UINT32) MddGetPackageGraphRevisionId() noexcept
{
- // Use the Win11 APIs if available (instead of Detour'ing to our own implementation)
- if (MddCore::Win11::IsSupported())
- {
- return MddCore::Win11::GetPackageGraphRevisionId();
- }
-
return MddCore::PackageGraphManager::GetPackageGraphRevisionId();
}
diff --git a/dev/DynamicDependency/API/MsixDynamicDependency.h b/dev/DynamicDependency/API/MsixDynamicDependency.h
index fb3365e37c..e80c389ce4 100644
--- a/dev/DynamicDependency/API/MsixDynamicDependency.h
+++ b/dev/DynamicDependency/API/MsixDynamicDependency.h
@@ -192,28 +192,17 @@ STDAPI MddAddPackageDependency(
STDAPI_(void) MddRemovePackageDependency(
_In_ MDD_PACKAGEDEPENDENCY_CONTEXT packageDependencyContext) noexcept;
-/// Return the package full name to which the
-/// PackageDependency has been resolved. Does not add the
+/// Return the package full name that would be used if the
+/// PackageDependency were to be resolved. Does not add the
/// package to the process graph.
///
/// @param packageFullName allocated via HeapAlloc; use HeapFree to deallocate.
/// If the package dependency cannot be resolved the function
/// succeeds but packageFullName is nullptr.
-/// @note An unknown packageDependencyId returns S_OK and packageFullName=null.
STDAPI MddGetResolvedPackageFullNameForPackageDependency(
_In_ PCWSTR packageDependencyId,
_Outptr_result_maybenull_ PWSTR* packageFullName) noexcept;
-/// Return the package full name to which the
-/// PackageDependency has been resolved. Does not add the
-/// package to the process graph.
-///
-/// @param packageFullName allocated via HeapAlloc; use HeapFree to deallocate.
-/// @note An unknown packageDependencyId returns HRESULT_FROM_WIN32(ERROR_NOT_FOUND).
-STDAPI MddGetResolvedPackageFullNameForPackageDependency2(
- _In_ PCWSTR packageDependencyId,
- _Outptr_result_maybenull_ PWSTR* packageFullName) noexcept;
-
/// Return the package dependency for the context.
///
/// @param packageDependencyId allocated via HeapAlloc; use HeapFree to deallocate.
diff --git a/dev/DynamicDependency/API/PackageGraph.cpp b/dev/DynamicDependency/API/PackageGraph.cpp
index 3c8af19531..5bf3219756 100644
--- a/dev/DynamicDependency/API/PackageGraph.cpp
+++ b/dev/DynamicDependency/API/PackageGraph.cpp
@@ -109,49 +109,6 @@ HRESULT MddCore::PackageGraph::Add(
return S_OK;
}
-HRESULT MddCore::PackageGraph::GetResolvedPackageDependency(
- PCWSTR packageDependencyId,
- wil::unique_process_heap_string& packageFullName) noexcept try
-{
- packageFullName.reset();
-
- // Get the package dependency
- auto foundPackageDependency{ MddCore::PackageDependencyManager::GetPackageDependency(packageDependencyId) };
- if (foundPackageDependency)
- {
- // Is the package dependency already resolved?
- const auto& packageDependency{ *foundPackageDependency };
- if (!packageDependency.PackageFullName().empty())
- {
- // Gotcha!
- packageFullName = wil::make_process_heap_string(packageDependency.PackageFullName().c_str());
- }
- }
- return S_OK;
-}
-CATCH_RETURN();
-
-HRESULT MddCore::PackageGraph::GetResolvedPackageDependency2(
- PCWSTR packageDependencyId,
- wil::unique_process_heap_string& packageFullName) noexcept try
-{
- packageFullName.reset();
-
- // Get the package dependency
- auto foundPackageDependency{ MddCore::PackageDependencyManager::GetPackageDependency(packageDependencyId) };
- THROW_HR_IF(HRESULT_FROM_WIN32(ERROR_NOT_FOUND), !foundPackageDependency);
-
- // Is the package dependency already resolved?
- const auto& packageDependency{ *foundPackageDependency };
- if (!packageDependency.PackageFullName().empty())
- {
- // Gotcha!
- packageFullName = wil::make_process_heap_string(packageDependency.PackageFullName().c_str());
- }
- return S_OK;
-}
-CATCH_RETURN();
-
HRESULT MddCore::PackageGraph::ResolvePackageDependency(
PCWSTR packageDependencyId,
MddAddPackageDependencyOptions options,
@@ -171,7 +128,7 @@ HRESULT MddCore::PackageGraph::ResolvePackageDependency(
return S_OK;
}
- // Resolve it
+ // Rewsolve it
return ResolvePackageDependency(packageDependency, options, packageFullName);
}
CATCH_RETURN();
diff --git a/dev/DynamicDependency/API/PackageGraph.h b/dev/DynamicDependency/API/PackageGraph.h
index d92bfa22ee..89ae0d3956 100644
--- a/dev/DynamicDependency/API/PackageGraph.h
+++ b/dev/DynamicDependency/API/PackageGraph.h
@@ -34,24 +34,6 @@ class PackageGraph
_In_ PCWSTR packageDependencyId,
MDD_PACKAGEDEPENDENCY_CONTEXT& context);
-public:
- HRESULT GetResolvedPackageDependency(
- PCWSTR packageDependencyId,
- wil::unique_process_heap_string& packageFullName) noexcept;
-
- static HRESULT GetResolvedPackageDependency(
- const MddCore::PackageDependency& packageDependency,
- wil::unique_process_heap_string& packageFullName);
-
-public:
- HRESULT GetResolvedPackageDependency2(
- PCWSTR packageDependencyId,
- wil::unique_process_heap_string& packageFullName) noexcept;
-
- static HRESULT GetResolvedPackageDependency2(
- const MddCore::PackageDependency& packageDependency,
- wil::unique_process_heap_string& packageFullName);
-
public:
HRESULT ResolvePackageDependency(
PCWSTR packageDependencyId,
diff --git a/dev/DynamicDependency/API/PackageGraphManager.cpp b/dev/DynamicDependency/API/PackageGraphManager.cpp
index e1bee31d9b..16195fe20a 100644
--- a/dev/DynamicDependency/API/PackageGraphManager.cpp
+++ b/dev/DynamicDependency/API/PackageGraphManager.cpp
@@ -26,24 +26,6 @@ UINT32 MddCore::PackageGraphManager::SetPackageGraphRevisionId(const UINT32 valu
return static_cast(InterlockedExchange(&s_packageGraphRevisionId, value));
}
-HRESULT MddCore::PackageGraphManager::GetResolvedPackageDependency(
- PCWSTR packageDependencyId,
- wil::unique_process_heap_string& packageFullName)
-{
- std::unique_lock lock(s_lock);
-
- return s_packageGraph.GetResolvedPackageDependency(packageDependencyId, packageFullName);
-}
-
-HRESULT MddCore::PackageGraphManager::GetResolvedPackageDependency2(
- PCWSTR packageDependencyId,
- wil::unique_process_heap_string& packageFullName)
-{
- std::unique_lock lock(s_lock);
-
- return s_packageGraph.GetResolvedPackageDependency2(packageDependencyId, packageFullName);
-}
-
HRESULT MddCore::PackageGraphManager::ResolvePackageDependency(
PCWSTR packageDependencyId,
MddAddPackageDependencyOptions options,
diff --git a/dev/DynamicDependency/API/PackageGraphManager.h b/dev/DynamicDependency/API/PackageGraphManager.h
index 74805fa425..f0eb427552 100644
--- a/dev/DynamicDependency/API/PackageGraphManager.h
+++ b/dev/DynamicDependency/API/PackageGraphManager.h
@@ -20,14 +20,6 @@ class PackageGraphManager
static UINT32 SetPackageGraphRevisionId(const UINT32 value);
public:
- static HRESULT GetResolvedPackageDependency(
- PCWSTR packageDependencyId,
- wil::unique_process_heap_string& packageFullName);
-
- static HRESULT GetResolvedPackageDependency2(
- PCWSTR packageDependencyId,
- wil::unique_process_heap_string& packageFullName);
-
static HRESULT ResolvePackageDependency(
PCWSTR packageDependencyId,
MddAddPackageDependencyOptions options,
diff --git a/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrap.cpp b/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrap.cpp
index 4d947c0db3..f6baf144e4 100644
--- a/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrap.cpp
+++ b/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrap.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors.
+// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.
#include "pch.h"
@@ -10,8 +10,6 @@
#include "IDynamicDependencyLifetimeManager.h"
-#include "MddWin11.h"
-
#include
HRESULT _MddBootstrapInitialize(
@@ -26,9 +24,6 @@ void FirstTimeInitialization(
UINT32 majorMinorVersion,
PCWSTR versionTag,
PACKAGE_VERSION minVersion);
-std::wstring GetFrameworkPackageFamilyName(
- UINT32 majorMinorVersion,
- PCWSTR versionTag);
wil::unique_cotaskmem_ptr GetFrameworkPackageInfoForPackage(PCWSTR packageFullName, const PACKAGE_INFO*& frameworkPackageInfo);
DLL_DIRECTORY_COOKIE AddFrameworkToPath(PCWSTR path);
void RemoveFrameworkFromPath(PCWSTR frameworkPath);
@@ -109,9 +104,10 @@ STDAPI MddBootstrapInitialize2(
auto& activityContext{ WindowsAppRuntime::MddBootstrap::Activity::Context::Get() };
- auto initializationCount{ activityContext.GetInitializeCount() };
+ PWSTR initializationFrameworkPackageFullName{};
+ auto initializationCount{ activityContext.GetInitializeData(initializationFrameworkPackageFullName) };
activityContext.SetMddBootstrapAPI(WindowsAppRuntime::MddBootstrap::Activity::MddBootstrapAPI::Initialize);
- auto threadCallback{ wil::ThreadFailureCallback(wilResultLoggingThreadCallback) };
+ auto threadCallback = wil::ThreadFailureCallback(wilResultLoggingThreadCallback);
auto initializeActivity{
activityContext.GetInitializeActivity().Start(
majorMinorVersion,
@@ -149,7 +145,7 @@ STDAPI MddBootstrapInitialize2(
DebugBreak();
}
- if (hr == STATEREPOSITORY_E_DEPENDENCY_NOT_RESOLVED)
+ if (hr == HRESULT_FROM_WIN32(ERROR_NO_MATCH))
{
if (WI_IsFlagSet(options, MddBootstrapInitializeOptions_OnNoMatch_ShowUI) ||
IsOptionEnabled(L"MICROSOFT_WINDOWSAPPRUNTIME_BOOTSTRAP_INITIALIZE_SHOWUI"))
@@ -175,7 +171,6 @@ STDAPI MddBootstrapInitialize2(
if (activityContext.GetInitializeActivity().IsRunning())
{
- PCWSTR initializationFrameworkPackageFullName{};
initializationCount = activityContext.GetInitializeData(initializationFrameworkPackageFullName);
initializeActivity.StopWithResult(
hr,
@@ -199,7 +194,8 @@ HRESULT _MddBootstrapInitialize(
PCWSTR versionTag,
PACKAGE_VERSION minVersion) noexcept try
{
- const auto initializationCount{ WindowsAppRuntime::MddBootstrap::Activity::Context::Get().GetInitializeCount() };
+ PWSTR initializationFrameworkPackageFullName{};
+ auto initializationCount{ WindowsAppRuntime::MddBootstrap::Activity::Context::Get().GetInitializeData(initializationFrameworkPackageFullName) };
// Are we already initialized?
if (initializationCount > 0)
@@ -222,10 +218,10 @@ STDAPI_(void) MddBootstrapShutdown() noexcept
auto& activityContext{ WindowsAppRuntime::MddBootstrap::Activity::Context::Get() };
- PCWSTR initializationFrameworkPackageFullName{};
- const auto initializationCount{ activityContext.GetInitializeData(initializationFrameworkPackageFullName) };
+ PWSTR initializationFrameworkPackageFullName{};
+ auto initializationCount{ activityContext.GetInitializeData(initializationFrameworkPackageFullName) };
activityContext.SetMddBootstrapAPI(WindowsAppRuntime::MddBootstrap::Activity::MddBootstrapAPI::Shutdown);
- auto threadCallback{ wil::ThreadFailureCallback(wilResultLoggingThreadCallback) };
+ auto threadCallback = wil::ThreadFailureCallback(wilResultLoggingThreadCallback);
auto shutdownActivity{
activityContext.GetShutdownActivity().Start(
static_cast(initializationCount),
@@ -235,7 +231,7 @@ STDAPI_(void) MddBootstrapShutdown() noexcept
if (initializationCount == 1)
{
// Last one out turn out the lights...
- if (g_packageDependencyContext && (MddCore::Win11::IsSupported() || g_windowsAppRuntimeDll))
+ if (g_packageDependencyContext && g_windowsAppRuntimeDll)
{
MddRemovePackageDependency(g_packageDependencyContext);
g_packageDependencyContext = nullptr;
@@ -311,16 +307,10 @@ void VerifyInitializationIsCompatible(
// Sanity check we're already initialized
// g_lifetimeManager is optional. Don't check it
// g_endTheLifetimeManagerEvent is optional. Don't check it
- // g_windowsAppRuntimeDll is only relevant if not delegating to OS APIs
- FAIL_FAST_HR_IF(E_UNEXPECTED, !MddCore::Win11::IsSupported() && (g_windowsAppRuntimeDll == nullptr));
+ FAIL_FAST_HR_IF(E_UNEXPECTED, g_windowsAppRuntimeDll == nullptr);
FAIL_FAST_HR_IF(E_UNEXPECTED, g_packageDependencyId == nullptr);
FAIL_FAST_HR_IF(E_UNEXPECTED, g_packageDependencyContext == nullptr);
- // Verify the parameter(s)
- // NOTE: GetFrameworkPackageFamilyName() verifies the resulting package family name is valid.
- // We don't care about the return value, just the verification along the way.
- GetFrameworkPackageFamilyName(majorMinorVersion, versionTag);
-
// Is the initialization request compatible with the current initialization state?
THROW_HR_IF_MSG(MDD_E_BOOTSTRAP_INITIALIZE_INCOMPATIBLE,
majorMinorVersion != g_initializationMajorMinorVersion,
@@ -361,144 +351,74 @@ void FirstTimeInitialization(
FAIL_FAST_HR_IF(E_UNEXPECTED, g_packageDependencyContext != nullptr);
// Make a copy of the versionTag in preparation of succcess
- const std::wstring packageVersionTag{ !versionTag ? L"" : versionTag };
+ auto packageVersionTag{ std::wstring(!versionTag ? L"" : versionTag) };
- // Use the Win11 APIs if available (instead of WinAppSDK's implementation)
- if (MddCore::Win11::IsSupported())
- {
- // Add the framework package to the package graph
- const std::wstring frameworkPackageFamilyName{ GetFrameworkPackageFamilyName(majorMinorVersion, packageVersionTag.c_str()) };
- const MddPackageDependencyProcessorArchitectures architectureFilter{};
- const auto lifetimeKind{ MddPackageDependencyLifetimeKind::Process };
- const MddCreatePackageDependencyOptions createOptions{};
- wil::unique_process_heap_string packageDependencyId;
- THROW_IF_FAILED(MddCore::Win11::TryCreatePackageDependency(nullptr, frameworkPackageFamilyName.c_str(), minVersion, architectureFilter, lifetimeKind, nullptr, createOptions, &packageDependencyId));
- //
- const MddAddPackageDependencyOptions addOptions{};
- MDD_PACKAGEDEPENDENCY_CONTEXT packageDependencyContext{};
- wil::unique_process_heap_string packageFullName;
- THROW_IF_FAILED(MddCore::Win11::AddPackageDependency(packageDependencyId.get(), MDD_PACKAGE_DEPENDENCY_RANK_DEFAULT, addOptions, &packageDependencyContext, &packageFullName));
-
- // Update the activity context
- auto& activityContext{ WindowsAppRuntime::MddBootstrap::Activity::Context::Get() };
- activityContext.SetInitializationPackageFullName(packageFullName.get());
+ // Create the lifetime manager
+ wil::com_ptr_nothrow lifetimeManager;
+ wil::unique_event endTheLifetimeManagerEvent;
+ auto& activityContext{ WindowsAppRuntime::MddBootstrap::Activity::Context::Get() };
+ CreateLifetimeManager(majorMinorVersion, versionTag, minVersion, lifetimeManager, endTheLifetimeManagerEvent, activityContext.GetInitializationPackageFullName());
- // Pass along test information (if necessary)
- if (!g_test_frameworkPackageNamePrefix.empty())
- {
- FAIL_FAST_HR_IF(E_UNEXPECTED, g_test_ddlmPackageNamePrefix.empty());
- FAIL_FAST_HR_IF(E_UNEXPECTED, g_test_ddlmPackagePublisherId.empty());
- FAIL_FAST_HR_IF(E_UNEXPECTED, g_test_mainPackageNamePrefix.empty());
+ const PACKAGE_INFO* frameworkPackageInfo{};
+ auto packageInfoBuffer{ GetFrameworkPackageInfoForPackage(activityContext.GetInitializationPackageFullName().get(), frameworkPackageInfo) };
- ::WindowsAppRuntime::VersionInfo::TestInitialize(frameworkPackageFamilyName.c_str());
- }
+ // Temporarily add the framework's package directory to PATH so LoadLibrary can find it and any colocated imports
+ wil::unique_dll_directory_cookie dllDirectoryCookie{ AddFrameworkToPath(frameworkPackageInfo->path) };
- // Track our initialized state
- g_packageDependencyId = std::move(packageDependencyId);
- g_packageDependencyContext = packageDependencyContext;
- //
- g_initializationMajorMinorVersion = majorMinorVersion;
- g_initializationVersionTag = std::move(packageVersionTag);
- const auto frameworkPackageIdentity{ ::AppModel::Identity::PackageIdentity::FromPackageFullName(packageFullName.get()) };
- g_initializationFrameworkPackageVersion.Version = frameworkPackageIdentity.Version().Version;
- }
- else
+ auto windowsAppRuntimeDllFilename{ std::wstring(frameworkPackageInfo->path) + L"\\Microsoft.WindowsAppRuntime.dll" };
+ wil::unique_hmodule windowsAppRuntimeDll(LoadLibraryEx(windowsAppRuntimeDllFilename.c_str(), nullptr, LOAD_WITH_ALTERED_SEARCH_PATH));
+ if (!windowsAppRuntimeDll)
{
- // Create the lifetime manager
- wil::com_ptr_nothrow lifetimeManager;
- wil::unique_event endTheLifetimeManagerEvent;
- auto& activityContext{ WindowsAppRuntime::MddBootstrap::Activity::Context::Get() };
- CreateLifetimeManager(majorMinorVersion, versionTag, minVersion, lifetimeManager, endTheLifetimeManagerEvent, activityContext.GetInitializationPackageFullName());
-
- const PACKAGE_INFO* frameworkPackageInfo{};
- auto packageInfoBuffer{ GetFrameworkPackageInfoForPackage(activityContext.GetInitializationPackageFullName().get(), frameworkPackageInfo) };
-
- // Temporarily add the framework's package directory to PATH so LoadLibrary can find it and any colocated imports
- wil::unique_dll_directory_cookie dllDirectoryCookie{ AddFrameworkToPath(frameworkPackageInfo->path) };
-
- auto windowsAppRuntimeDllFilename{ std::wstring(frameworkPackageInfo->path) + L"\\Microsoft.WindowsAppRuntime.dll" };
- wil::unique_hmodule windowsAppRuntimeDll(LoadLibraryEx(windowsAppRuntimeDllFilename.c_str(), nullptr, LOAD_WITH_ALTERED_SEARCH_PATH));
- if (!windowsAppRuntimeDll)
- {
- const auto lastError{ GetLastError() };
- THROW_WIN32_MSG(lastError, "Error in LoadLibrary: %d (0x%X) loading %ls", lastError, lastError, windowsAppRuntimeDllFilename.c_str());
- }
-
- // Add the framework package to the package graph
- const MddPackageDependencyProcessorArchitectures architectureFilter{};
- const auto lifetimeKind{ MddPackageDependencyLifetimeKind::Process };
- const MddCreatePackageDependencyOptions createOptions{};
- wil::unique_process_heap_string packageDependencyId;
- THROW_IF_FAILED(MddTryCreatePackageDependency(nullptr, frameworkPackageInfo->packageFamilyName, minVersion, architectureFilter, lifetimeKind, nullptr, createOptions, &packageDependencyId));
- //
- const MddAddPackageDependencyOptions addOptions{};
- MDD_PACKAGEDEPENDENCY_CONTEXT packageDependencyContext{};
- THROW_IF_FAILED(MddAddPackageDependency(packageDependencyId.get(), MDD_PACKAGE_DEPENDENCY_RANK_DEFAULT, addOptions, &packageDependencyContext, nullptr));
-
- // Remove our temporary path addition
- RemoveFrameworkFromPath(frameworkPackageInfo->path);
- dllDirectoryCookie.reset();
-
- // Pass along test information (if necessary)
- if (!g_test_ddlmPackageNamePrefix.empty())
- {
- FAIL_FAST_HR_IF(E_UNEXPECTED, g_test_ddlmPackagePublisherId.empty());
- FAIL_FAST_HR_IF(E_UNEXPECTED, g_test_frameworkPackageNamePrefix.empty());
- FAIL_FAST_HR_IF(E_UNEXPECTED, g_test_mainPackageNamePrefix.empty());
-
- uint16_t majorVersion{ static_cast(majorMinorVersion >> 16) };
- uint16_t minorVersion{ static_cast(majorMinorVersion) };
- PCWSTR packagVersionTagDelimiter{ packageVersionTag.empty() ? L"" : L"-" };
-
- const std::wstring frameworkPackageFamilyName{ std::format(L"{}-{}.{}{}{}_8wekyb3d8bbwe",
- g_test_frameworkPackageNamePrefix,
- majorVersion, minorVersion,
- packagVersionTagDelimiter, packageVersionTag) };
- FAIL_FAST_HR_IF_MSG(E_UNEXPECTED, frameworkPackageFamilyName.length() > PACKAGE_FAMILY_NAME_MAX_LENGTH, "%ls", frameworkPackageFamilyName.c_str());
-
- const std::wstring mainPackageFamilyName{ std::format(L"{}-{}.{}{}{}_8wekyb3d8bbwe",
- g_test_mainPackageNamePrefix,
- majorVersion, minorVersion,
- packagVersionTagDelimiter, packageVersionTag) };
- FAIL_FAST_HR_IF_MSG(E_UNEXPECTED, mainPackageFamilyName.length() > PACKAGE_FAMILY_NAME_MAX_LENGTH, "%ls", mainPackageFamilyName.c_str());
-
- ::WindowsAppRuntime::VersionInfo::TestInitialize(frameworkPackageFamilyName.c_str(), mainPackageFamilyName.c_str());
- }
-
- // Track our initialized state
- g_lifetimeManager = lifetimeManager.detach();
- g_endTheLifetimeManagerEvent = std::move(endTheLifetimeManagerEvent);
- g_windowsAppRuntimeDll = std::move(windowsAppRuntimeDll);
- g_packageDependencyId = std::move(packageDependencyId);
- g_packageDependencyContext = packageDependencyContext;
- //
- g_initializationMajorMinorVersion = majorMinorVersion;
- g_initializationVersionTag = std::move(packageVersionTag);
- g_initializationFrameworkPackageVersion.Version = frameworkPackageInfo->packageId.version.Version;
+ const auto lastError{ GetLastError() };
+ THROW_WIN32_MSG(lastError, "Error in LoadLibrary: %d (0x%X) loading %ls", lastError, lastError, windowsAppRuntimeDllFilename.c_str());
}
-}
-/// Determine the package family name for the Windows App Runtime Framework package
-std::wstring GetFrameworkPackageFamilyName(
- UINT32 majorMinorVersion,
- PCWSTR versionTag)
-{
- PCWSTR namePrefix{ !g_test_frameworkPackageNamePrefix.empty() ?
- g_test_frameworkPackageNamePrefix.c_str() :
- L"Microsoft.WindowsAppRuntime" };
-
- const uint16_t majorVersion{ static_cast(majorMinorVersion >> 16) };
- const uint16_t minorVersion{ static_cast(majorMinorVersion) };
+ // Add the framework package to the package graph
+ const MddPackageDependencyProcessorArchitectures architectureFilter{};
+ const auto lifetimeKind{ MddPackageDependencyLifetimeKind::Process };
+ const MddCreatePackageDependencyOptions createOptions{};
+ wil::unique_process_heap_string packageDependencyId;
+ THROW_IF_FAILED(MddTryCreatePackageDependency(nullptr, frameworkPackageInfo->packageFamilyName, minVersion, architectureFilter, lifetimeKind, nullptr, createOptions, &packageDependencyId));
+ //
+ const MddAddPackageDependencyOptions addOptions{};
+ MDD_PACKAGEDEPENDENCY_CONTEXT packageDependencyContext{};
+ THROW_IF_FAILED(MddAddPackageDependency(packageDependencyId.get(), MDD_PACKAGE_DEPENDENCY_RANK_DEFAULT, addOptions, &packageDependencyContext, nullptr));
- PCWSTR packageVersionTag{ !versionTag ? L"" : versionTag };
- PCWSTR packageVersionTagDelimiter{ (packageVersionTag[0] == L'\0') ? L"" : L"-"};
+ // Remove our temporary path addition
+ RemoveFrameworkFromPath(frameworkPackageInfo->path);
+ dllDirectoryCookie.reset();
- const std::wstring packageFamilyName{ std::format(L"{}-{}.{}{}{}_8wekyb3d8bbwe",
- namePrefix, majorVersion, minorVersion,
- packageVersionTagDelimiter, packageVersionTag) };
- THROW_HR_IF_MSG(E_INVALIDARG, packageFamilyName.length() > PACKAGE_FAMILY_NAME_MAX_LENGTH, "%ls", packageFamilyName.c_str());
+ // Pass along test information (if necessary)
+ if (!g_test_ddlmPackageNamePrefix.empty())
+ {
+ FAIL_FAST_HR_IF(E_UNEXPECTED, g_test_ddlmPackagePublisherId.empty());
+ FAIL_FAST_HR_IF(E_UNEXPECTED, g_test_frameworkPackageNamePrefix.empty());
+ FAIL_FAST_HR_IF(E_UNEXPECTED, g_test_mainPackageNamePrefix.empty());
+
+ uint16_t majorVersion{ static_cast(majorMinorVersion >> 16) };
+ uint16_t minorVersion{ static_cast(majorMinorVersion) };
+ PCWSTR packagVersionTagDelimiter{ packageVersionTag.empty() ? L"" : L"-" };
+
+ WCHAR frameworkPackageFamilyName[PACKAGE_FAMILY_NAME_MAX_LENGTH + 1]{};
+ wsprintf(frameworkPackageFamilyName, L"%s-%hu.%hu%s%s_8wekyb3d8bbwe", g_test_frameworkPackageNamePrefix.c_str(),
+ majorVersion, minorVersion, packagVersionTagDelimiter, packageVersionTag.c_str());
+
+ WCHAR mainPackageFamilyName[PACKAGE_FAMILY_NAME_MAX_LENGTH + 1]{};
+ wsprintf(mainPackageFamilyName, L"%s-%hu.%hu%s%s_8wekyb3d8bbwe", g_test_mainPackageNamePrefix.c_str(),
+ majorVersion, minorVersion, packagVersionTagDelimiter, packageVersionTag.c_str());
+ ::WindowsAppRuntime::VersionInfo::TestInitialize(frameworkPackageFamilyName, mainPackageFamilyName);
+ }
- return packageFamilyName;
+ // Track our initialized state
+ g_lifetimeManager = lifetimeManager.detach();
+ g_endTheLifetimeManagerEvent = std::move(endTheLifetimeManagerEvent);
+ g_windowsAppRuntimeDll = std::move(windowsAppRuntimeDll);
+ g_packageDependencyId = std::move(packageDependencyId);
+ g_packageDependencyContext = packageDependencyContext;
+ //
+ g_initializationMajorMinorVersion = majorMinorVersion;
+ g_initializationVersionTag = std::move(packageVersionTag);
+ g_initializationFrameworkPackageVersion.Version = frameworkPackageInfo->packageId.version.Version;
}
/// Determine the path for the Windows App Runtime Framework package
@@ -750,21 +670,17 @@ CLSID FindDDLMViaAppExtension(
// Look for windows.appExtension with name="microsoft.winappruntime.ddlm-.-[-shorttag]"
// NOTE: . MUST have a string length <= 8 characters ("12.34567", "12345.67", etc) to fit within
// the maximum allowed length of a windows.appExtension's Name (39 chars) on Windows versions <= RS5 (10.0.17763.0).
- std::wstring appExtensionName;
+ WCHAR appExtensionName[100]{};
const UINT16 majorVersion{ HIWORD(majorMinorVersion) };
const UINT16 minorVersion{ LOWORD(majorMinorVersion) };
const auto versionShortTag{ AppModel::Identity::GetVersionShortTagFromVersionTag(versionTag) };
if (!versionShortTag.empty())
{
- appExtensionName = std::format(L"microsoft.winappruntime.ddlm-{}.{}-{}-{}",
- majorVersion, minorVersion, AppModel::Identity::GetCurrentArchitectureAsShortString(), versionShortTag);
- THROW_HR_IF_MSG(E_INVALIDARG, appExtensionName.length() > PACKAGE_NAME_MAX_LENGTH, "%ls", appExtensionName.c_str());
+ wsprintf(appExtensionName, L"microsoft.winappruntime.ddlm-%hu.%hu-%s-%s", majorVersion, minorVersion, AppModel::Identity::GetCurrentArchitectureAsShortString(), versionShortTag.c_str());
}
else
{
- appExtensionName = std::format(L"microsoft.winappruntime.ddlm-{}.{}-{}",
- majorVersion, minorVersion, AppModel::Identity::GetCurrentArchitectureAsShortString());
- THROW_HR_IF_MSG(E_INVALIDARG, appExtensionName.length() > PACKAGE_NAME_MAX_LENGTH, "%ls", appExtensionName.c_str());
+ wsprintf(appExtensionName, L"microsoft.winappruntime.ddlm-%hu.%hu-%s", majorVersion, minorVersion, AppModel::Identity::GetCurrentArchitectureAsShortString());
}
auto catalog{ winrt::Windows::ApplicationModel::AppExtensions::AppExtensionCatalog::Open(appExtensionName) };
@@ -826,8 +742,8 @@ CLSID FindDDLMViaAppExtension(
continue;
}
}
- THROW_HR_IF_MSG(STATEREPOSITORY_E_DEPENDENCY_NOT_RESOLVED, !foundAny, "AppExtension.Name=%ls, Major=%hu, Minor=%hu, Tag=%ls, MinVersion=%hu.%hu.%hu.%hu",
- appExtensionName.c_str(), majorVersion, minorVersion, (!versionTag ? L"" : versionTag),
+ THROW_HR_IF_MSG(HRESULT_FROM_WIN32(ERROR_NO_MATCH), !foundAny, "AppExtension.Name=%ls, Major=%hu, Minor=%hu, Tag=%ls, MinVersion=%hu.%hu.%hu.%hu",
+ appExtensionName, majorVersion, minorVersion, (!versionTag ? L"" : versionTag),
minVersion.Major, minVersion.Minor, minVersion.Build, minVersion.Revision);
return bestFitClsid;
}
@@ -1024,7 +940,7 @@ void FindDDLMViaEnumeration(
continue;
}
}
- THROW_HR_IF_MSG(STATEREPOSITORY_E_DEPENDENCY_NOT_RESOLVED, !foundAny, "Enumeration: %ls", criteria.get());
+ THROW_HR_IF_MSG(HRESULT_FROM_WIN32(ERROR_NO_MATCH), !foundAny, "Enumeration: %ls", criteria.get());
(void)LOG_HR_MSG(MDD_E_BOOTSTRAP_INITIALIZE_DDLM_FOUND,
"Bootstrap.Intitialize: %ls best matches the criteria (%ls) of %d packages scanned",
bestFitPackageFullName.c_str(), criteria.get(), packagesScanned);
diff --git a/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrapActivity.h b/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrapActivity.h
index ee37f9ea26..5837e7effb 100644
--- a/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrapActivity.h
+++ b/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrapActivity.h
@@ -56,15 +56,10 @@ namespace WindowsAppRuntime::MddBootstrap::Activity
return m_mddBootstrapAPI;
}
- const uint32_t GetInitializeCount() const
- {
- return m_initializationCount;
- }
-
- const uint32_t GetInitializeData(PCWSTR& initializationPackageFullName) const
+ const uint32_t GetInitializeData(PWSTR& initializationPackageFullName) const
{
initializationPackageFullName = m_initializationPackageFullName.get();
- return GetInitializeCount();
+ return m_initializationCount;
}
wil::unique_cotaskmem_string& GetInitializationPackageFullName()
@@ -118,15 +113,7 @@ namespace WindowsAppRuntime::MddBootstrap::Activity
void SetInitializationPackageFullName(PWSTR initializationPackageFullName)
{
- if (initializationPackageFullName)
- {
- auto packageFullName{ wil::make_cotaskmem_string(initializationPackageFullName) };
- m_initializationPackageFullName = std::move(packageFullName);
- }
- else
- {
- m_initializationPackageFullName.reset();
- }
+ m_initializationPackageFullName.reset(initializationPackageFullName);
}
void StopActivityForWilReturnHR(const bool stopActivityForWilReturnHR)
diff --git a/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrapTracelogging.cpp b/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrapTracelogging.cpp
index ca92888132..71fe1609d6 100644
--- a/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrapTracelogging.cpp
+++ b/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrapTracelogging.cpp
@@ -12,7 +12,7 @@ void MddBootstrap_StopActivity(
{
if (isActivityRunning)
{
- PCWSTR initializationFrameworkPackageFullName{};
+ PWSTR initializationFrameworkPackageFullName{};
auto initializationCount{ activityContext.GetInitializeData(initializationFrameworkPackageFullName) };
if (activityContext.GetMddBootstrapAPI() == WindowsAppRuntime::MddBootstrap::Activity::MddBootstrapAPI::Initialize)
diff --git a/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrapTracelogging.h b/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrapTracelogging.h
index 372923e621..fce11d68dd 100644
--- a/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrapTracelogging.h
+++ b/dev/WindowsAppRuntime_BootstrapDLL/MddBootstrapTracelogging.h
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors.
+// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.
#pragma once
@@ -41,7 +41,7 @@ class WindowsAppRuntimeBootstrap_TraceLogger final : public wil::TraceLoggingPro
const HRESULT hresult,
UINT32 initializationCount,
UINT32 IntegrityFlags,
- PCWSTR resolvedFrameworkPackageFullName,
+ PWSTR resolvedFrameworkPackageFullName,
UINT32 failureType,
PCSTR failureFile,
unsigned int failureLineNumber,
@@ -78,7 +78,7 @@ class WindowsAppRuntimeBootstrap_TraceLogger final : public wil::TraceLoggingPro
BEGIN_COMPLIANT_CRITICAL_DATA_ACTIVITY_CLASS(Shutdown, PDT_ProductAndServicePerformance);
void StartActivity(
UINT32 initializationCount,
- PCWSTR resolvedFrameworkPackageFullName)
+ PWSTR resolvedFrameworkPackageFullName)
{
// Set lifetime activity Id that helps in corelating all sub-activities/telemetry from a single Mdd Bootstrap lifetime
SetRelatedActivityId(GetLifetimeActivityId());
diff --git a/dev/WindowsAppRuntime_BootstrapDLL/dllmain.cpp b/dev/WindowsAppRuntime_BootstrapDLL/dllmain.cpp
index fea531256b..2da5b862d4 100644
--- a/dev/WindowsAppRuntime_BootstrapDLL/dllmain.cpp
+++ b/dev/WindowsAppRuntime_BootstrapDLL/dllmain.cpp
@@ -3,8 +3,6 @@
#include "pch.h"
-#include "MddWin11.h"
-
// Including this file once per binary will automatically opt WIL error handling macros into calling RoOriginateError when they
// begin logging a new error. This greatly improves the debuggability of errors that propagate before a failfast.
#include
@@ -14,19 +12,10 @@ BOOL APIENTRY DllMain(HMODULE hmodule, DWORD reason, LPVOID reserved)
switch (reason)
{
case DLL_PROCESS_ATTACH:
- {
DisableThreadLibraryCalls(hmodule);
- FAIL_FAST_IF_FAILED(MddWin11Initialize());
- break;
- }
- case DLL_PROCESS_DETACH:
- {
- MddWin11Shutdown();
- break;
- }
case DLL_THREAD_ATTACH:
- break;
case DLL_THREAD_DETACH:
+ case DLL_PROCESS_DETACH:
break;
}
diff --git a/dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def b/dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def
index de435f0404..83d91290dc 100644
--- a/dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def
+++ b/dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def
@@ -10,7 +10,6 @@ EXPORTS
MddDeletePackageDependency
MddGetIdForPackageDependencyContext
MddGetResolvedPackageFullNameForPackageDependency
- MddGetResolvedPackageFullNameForPackageDependency2
MddRemovePackageDependency
MddTryCreatePackageDependency
MddLifetimeManagementGC
diff --git a/dev/WindowsAppRuntime_DLL/dllmain.cpp b/dev/WindowsAppRuntime_DLL/dllmain.cpp
index 60c61157c6..cc0604d331 100644
--- a/dev/WindowsAppRuntime_DLL/dllmain.cpp
+++ b/dev/WindowsAppRuntime_DLL/dllmain.cpp
@@ -30,8 +30,11 @@ static HRESULT DetoursInitialize()
// Detour APIs to our implementation
DetourRestoreAfterWith();
FAIL_FAST_IF_WIN32_ERROR(DetourTransactionBegin());
+
+ FAIL_FAST_IF_FAILED(MddWin11Initialize());
FAIL_FAST_IF_FAILED(MddDetourPackageGraphInitialize());
FAIL_FAST_IF_FAILED(UrfwInitialize());
+
FAIL_FAST_IF_WIN32_ERROR(DetourTransactionCommit());
return S_OK;
}
@@ -53,8 +56,10 @@ static HRESULT DetoursShutdown()
// Stop Detour'ing APIs to our implementation
FAIL_FAST_IF_WIN32_ERROR(DetourTransactionBegin());
FAIL_FAST_IF_WIN32_ERROR(DetourUpdateThread(GetCurrentThread()));
+
UrfwShutdown();
MddDetourPackageGraphShutdown();
+
FAIL_FAST_IF_WIN32_ERROR(DetourTransactionCommit());
return S_OK;
}
@@ -66,14 +71,12 @@ BOOL APIENTRY DllMain(HMODULE hmodule, DWORD reason, LPVOID reserved)
case DLL_PROCESS_ATTACH:
{
DisableThreadLibraryCalls(hmodule);
- FAIL_FAST_IF_FAILED(MddWin11Initialize());
FAIL_FAST_IF_FAILED(DetoursInitialize());
break;
}
case DLL_PROCESS_DETACH:
{
DetoursShutdown();
- MddWin11Shutdown();
break;
}
case DLL_THREAD_ATTACH:
diff --git a/dev/WindowsAppRuntime_MSIXInstallFromPath/WindowsAppRuntime_MSIXInstallFromPath.filters b/dev/WindowsAppRuntime_MSIXInstallFromPath/WindowsAppRuntime_MSIXInstallFromPath.filters
new file mode 100644
index 0000000000..21fff5013a
--- /dev/null
+++ b/dev/WindowsAppRuntime_MSIXInstallFromPath/WindowsAppRuntime_MSIXInstallFromPath.filters
@@ -0,0 +1,36 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+
+
diff --git a/dev/WindowsAppRuntime_MSIXInstallFromPath/WindowsAppRuntime_MSIXInstallFromPath.vcxproj b/dev/WindowsAppRuntime_MSIXInstallFromPath/WindowsAppRuntime_MSIXInstallFromPath.vcxproj
new file mode 100644
index 0000000000..312a8c5f4f
--- /dev/null
+++ b/dev/WindowsAppRuntime_MSIXInstallFromPath/WindowsAppRuntime_MSIXInstallFromPath.vcxproj
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+
+
+
+ Debug
+ ARM64
+
+
+ Debug
+ Win32
+
+
+ Release
+ ARM64
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 16.0
+ Win32Proj
+ {d45d4170-e055-4926-8b03-04daa5f02c6c}
+ WindowsAppRuntime_MSIXInstallFromPath
+ 10.0
+ true
+ true
+ true
+ true
+ false
+ 9
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WindowsAppRuntime_MSIXInstallFromPath
+
+
+ WindowsAppRuntime_MSIXInstallFromPath
+
+
+ WindowsAppRuntime_MSIXInstallFromPath
+
+
+ WindowsAppRuntime_MSIXInstallFromPath
+
+
+ WindowsAppRuntime_MSIXInstallFromPath
+
+
+ WindowsAppRuntime_MSIXInstallFromPath
+
+
+ $(MSBuildThisFileDirectory)..\..\
+
+
+
+ UNICODE;_UNICODE;%(PreprocessorDefinitions)
+
+
+
+
+ Use
+ %(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory)$(PlatformTarget)\$(Configuration);$(SolutionDir)common;$(OutDir)\..\PushNotificationsLongRunningTask.ProxyStub;$(RepoRoot)dev\PushNotifications\PushNotificationsLongRunningTask.StartupTask;$(RepoRoot)\Dev\PushNotifications
+ WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ pch.h
+
+
+ Console
+ false
+ onecore.lib;onecoreuap.lib;%(AdditionalDependencies)
+
+
+
+
+ Use
+ %(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory)$(PlatformTarget)\$(Configuration);$(SolutionDir)common;$(OutDir)\..\PushNotificationsLongRunningTask.ProxyStub;$(RepoRoot)dev\PushNotifications\PushNotificationsLongRunningTask.StartupTask;$(RepoRoot)\Dev\PushNotifications
+ _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ pch.h
+
+
+ Console
+ false
+ onecore.lib;onecoreuap.lib;%(AdditionalDependencies)
+
+
+
+
+ Use
+ %(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory)$(PlatformTarget)\$(Configuration);$(SolutionDir)common;$(OutDir)\..\PushNotificationsLongRunningTask.ProxyStub;$(RepoRoot)dev\PushNotifications\PushNotificationsLongRunningTask.StartupTask;$(RepoRoot)\Dev\PushNotifications
+ _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ pch.h
+
+
+ Console
+ false
+ onecore.lib;onecoreuap.lib;%(AdditionalDependencies)
+
+
+
+
+ Use
+ %(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory)$(PlatformTarget)\$(Configuration);$(SolutionDir)common;$(OutDir)\..\PushNotificationsLongRunningTask.ProxyStub;$(RepoRoot)dev\PushNotifications\PushNotificationsLongRunningTask.StartupTask;$(RepoRoot)\Dev\PushNotifications
+ WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ pch.h
+
+
+ Console
+ false
+ onecore.lib;onecoreuap.lib;%(AdditionalDependencies)
+
+
+
+
+ Use
+ %(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory)$(PlatformTarget)\$(Configuration);$(SolutionDir)common;$(OutDir)\..\PushNotificationsLongRunningTask.ProxyStub;$(RepoRoot)dev\PushNotifications\PushNotificationsLongRunningTask.StartupTask;$(RepoRoot)\Dev\PushNotifications
+ NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ pch.h
+
+
+ Console
+ false
+ onecore.lib;onecoreuap.lib;%(AdditionalDependencies)
+
+
+
+
+ Use
+ %(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory)$(PlatformTarget)\$(Configuration);$(SolutionDir)common;$(OutDir)\..\PushNotificationsLongRunningTask.ProxyStub;$(RepoRoot)dev\PushNotifications\PushNotificationsLongRunningTask.StartupTask;$(RepoRoot)\Dev\PushNotifications
+ NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ pch.h
+
+
+ Console
+ false
+ onecore.lib;onecoreuap.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+
+
+
+ Create
+ Create
+ Create
+ Create
+ Create
+ Create
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dev/WindowsAppRuntime_MSIXInstallFromPath/framework.h b/dev/WindowsAppRuntime_MSIXInstallFromPath/framework.h
new file mode 100644
index 0000000000..d82b8b8f3b
--- /dev/null
+++ b/dev/WindowsAppRuntime_MSIXInstallFromPath/framework.h
@@ -0,0 +1,27 @@
+// Copyright (c) Microsoft Corporation and Contributors.
+// Licensed under the MIT License.
+
+#pragma once
+
+#include
+#include
+
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+#include
+#include
+
+#include
+#include
+
diff --git a/dev/WindowsAppRuntime_MSIXInstallFromPath/main.cpp b/dev/WindowsAppRuntime_MSIXInstallFromPath/main.cpp
new file mode 100644
index 0000000000..12cf253e01
--- /dev/null
+++ b/dev/WindowsAppRuntime_MSIXInstallFromPath/main.cpp
@@ -0,0 +1,325 @@
+// Copyright (c) Microsoft Corporation and Contributors.
+// Licensed under the MIT License.
+
+#include "pch.h"
+
+#include
+#include
+
+#include
+void Help();
+HRESULT JustDoIt(PCWSTR path, bool forceDeployment) noexcept;
+void AddPackageIfNecessary(PCWSTR path, const std::wstring& filename, const std::wstring& packageFullName, bool forceDeployment);
+bool NeedToRegisterPackage(const std::wstring& packageFullName);
+bool NeedToRegisterPackage(PCWSTR packageFullName);
+HRESULT AddPackage(PCWSTR path, const std::wstring& filename, bool forceDeployment);
+
+class PackageId
+{
+public:
+ static PackageId FromPackageFullName(const std::wstring& packageFullName)
+ {
+ return FromPackageFullName(packageFullName.c_str());
+ }
+
+ static PackageId FromPackageFullName(PCWSTR packageFullName)
+ {
+ PackageId packageId;
+ uint32_t bufferLength{ sizeof(packageId.m_buffer) };
+ THROW_IF_WIN32_ERROR(PackageIdFromFullName(packageFullName, PACKAGE_INFORMATION_BASIC, &bufferLength, packageId.m_buffer));
+ packageId.m_packageId = reinterpret_cast(packageId.m_buffer);
+ packageId.m_packageFullName = packageFullName;
+ return packageId;
+ }
+
+ PackageId() = default;
+
+ PackageId(PackageId&& other) :
+ m_packageFullName(std::move(other.m_packageFullName))
+ {
+ memcpy(m_buffer, other.m_buffer, sizeof(m_buffer));
+ m_packageId = reinterpret_cast(m_buffer);
+
+ other.m_packageId = nullptr;
+ memset(other.m_buffer, 0, sizeof(other.m_buffer));
+ }
+
+ ~PackageId() = default;
+
+ PackageId& operator=(PackageId&& other)
+ {
+ if (this != &other)
+ {
+ m_packageFullName = std::move(other.m_packageFullName);
+ memcpy(m_buffer, other.m_buffer, sizeof(m_buffer));
+ m_packageId = reinterpret_cast(m_buffer);
+
+ other.m_packageId = nullptr;
+ memset(other.m_buffer, 0, sizeof(other.m_buffer));
+ }
+ return *this;
+ }
+
+ const std::wstring& PackageFullName() const
+ {
+ return m_packageFullName;
+ }
+
+ PCWSTR Name() const
+ {
+ return m_packageId->name;
+ }
+
+ PACKAGE_VERSION Version() const
+ {
+ return m_packageId->version;
+ }
+
+ winrt::Windows::System::ProcessorArchitecture Architecture() const
+ {
+ return static_cast(m_packageId->processorArchitecture);
+ }
+
+ PCWSTR ResourceId() const
+ {
+ return m_packageId->resourceId;
+ }
+
+ PCWSTR PublisherId() const
+ {
+ return m_packageId->publisherId;
+ }
+
+ PCWSTR PackageFamilyName() const
+ {
+ if (m_packageFamilyName.empty())
+ {
+ wchar_t packageFamilyName[PACKAGE_FAMILY_NAME_MAX_LENGTH + 1]{};
+ uint32_t packageFamilyNameLength{ ARRAYSIZE(packageFamilyName) };
+ THROW_IF_WIN32_ERROR_MSG(::PackageFamilyNameFromFullName(m_packageFullName.c_str(), &packageFamilyNameLength, packageFamilyName), "PackageFullName:%ls", m_packageFullName.c_str());
+ m_packageFamilyName = packageFamilyName;
+ }
+ return m_packageFamilyName.c_str();
+ }
+
+ explicit operator bool() const
+ {
+ return m_packageId != nullptr;
+ }
+
+private:
+ std::wstring m_packageFullName;
+ mutable std::wstring m_packageFamilyName;
+ const PACKAGE_ID * m_packageId{};
+ BYTE m_buffer[sizeof(PACKAGE_ID) + (PACKAGE_NAME_MAX_LENGTH + 1 +
+ PACKAGE_RESOURCEID_MAX_LENGTH + 1 +
+ PACKAGE_PUBLISHERID_MAX_LENGTH + 1) * sizeof(WCHAR)]{};
+};
+
+void Help()
+{
+ wprintf(L"WindowsAppRuntime_MSIXInstallFromPath [options] \n"
+ L"options:\n"
+ L" -f, --force = Force shutdown WinAppSDK's processes if necessary to update WinAppSDK's MSIX packages\n"
+ L" -?, --help = Display help\n"
+ L" -- = End of options\n"
+ L"where:\n"
+ L" path = Path where Windows App SDK's MSIX packages can be found\n"
+ L" => Microsoft.WindowsAppRuntime.*.msix\n"
+ L" => Microsoft.WindowsAppRuntime.DDLM.*.msix\n"
+ L" => Microsoft.WindowsAppRuntime.Main.*.msix\n"
+ L" => Microsoft.WindowsAppRuntime.Singleton.*.msix\n");
+}
+HRESULT JustDoIt(PCWSTR path, bool forceDeployment) noexcept try
+{
+ wprintf(L"path: %s\n", path);
+
+ // Install packages
+ auto fpath{ std::filesystem::path(path) };
+ auto inventory{ fpath / L"MSIX.inventory" };
+ std::string lineUtf8;
+ std::ifstream f{ inventory };
+
+ THROW_HR_IF_MSG(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), std::filesystem::exists(inventory), "%ls", inventory.c_str());
+
+ while (getline(f, lineUtf8))
+ {
+ // Skip blank lines
+ if (lineUtf8.empty())
+ {
+ continue;
+ }
+
+ // Skip comments
+ if (lineUtf8[0] == '#')
+ {
+ continue;
+ }
+
+ // Parse the line
+ auto line{ Microsoft::Utf8::ToUtf16(lineUtf8.c_str()) };
+ auto offset{ line.find(L'=') };
+ THROW_HR_IF_MSG(E_UNEXPECTED, offset == std::wstring::npos, "line:%s", lineUtf8.c_str());
+ auto filename{ line.substr(0, offset) };
+ THROW_HR_IF_MSG(E_UNEXPECTED, filename.empty(), "line:%s", lineUtf8.c_str());
+ auto packageFullName{ std::wstring(line.c_str() + offset + 1) };
+ THROW_HR_IF_MSG(E_UNEXPECTED, packageFullName.empty(), "line:%s", lineUtf8.c_str());
+
+ AddPackageIfNecessary(path, filename, packageFullName, forceDeployment);
+ }
+
+ // Restart Push Notifications Long Running Platform when ForceDeployment option is applied.
+ if (forceDeployment)
+ {
+ // wil callback will be set up to log telemetry events for LRP.
+ THROW_IF_FAILED_MSG(StartupNotificationsLongRunningPlatform(), "Restarting Push Notifications LRP failed after 3 attempts.");
+ }
+
+ return 0;
+}
+CATCH_RETURN();
+
+void AddPackageIfNecessary(PCWSTR path, const std::wstring& filename, const std::wstring& packageFullName, bool forceDeployment)
+{
+ wprintf(L"Path: %s\n", path);
+ wprintf(L"Filename: %s\n", filename.c_str());
+ wprintf(L"PackageFullName: %s\n", packageFullName.c_str());
+ wprintf(L"forceDeployment:%s\n", forceDeployment ? L"true" : L"false");
+
+ if (!NeedToRegisterPackage(packageFullName))
+ {
+ return;
+ }
+
+ auto hr{ AddPackage(path, filename, forceDeployment) };
+ if (FAILED(hr))
+ {
+ wprintf(L"AddPackage(): 0x%X Path:%s Filename:%s PackageFullName:%s forceDeployment:%s", hr, path, filename.c_str(), packageFullName.c_str(), forceDeployment ? L"true" : L"false");
+ THROW_HR_MSG(hr, "Path:%ls Filename:%ls PackageFullName:%ls forceDeployment:%ls", path, filename.c_str(), packageFullName.c_str(), forceDeployment ? L"true" : L"false");
+ }
+}
+
+bool NeedToRegisterPackage(const std::wstring& packageFullName)
+{
+ return NeedToRegisterPackage(packageFullName.c_str());
+}
+
+bool NeedToRegisterPackage(PCWSTR packageFullName)
+{
+ auto packageId{ PackageId::FromPackageFullName(packageFullName) };
+
+ // Is there an equal-or-better package already registered?
+ wprintf(L"Family: %s\n", packageId.PackageFamilyName());
+ auto packageFullNames{ AppModel::Package::FindByFamily(packageId.PackageFamilyName()) };
+ if (packageFullNames.empty())
+ {
+ wprintf(L"1 None found\n");
+ return true;
+ }
+ for (auto registeredPackageFullName : packageFullNames)
+ {
+ auto registeredPackage{ PackageId::FromPackageFullName(registeredPackageFullName) };
+ wprintf(L"C %ls %ls %d %d %I64X %I64X\n",
+ packageId.PackageFullName().c_str(), registeredPackage.PackageFullName().c_str(),
+ packageId.Architecture(), registeredPackage.Architecture(),
+ packageId.Version().Version, registeredPackage.Version().Version);
+ if (registeredPackage.Architecture() != packageId.Architecture())
+ {
+ continue;
+ }
+ if (registeredPackage.Version().Version >= packageId.Version().Version)
+ {
+ continue;
+ }
+
+ // This registered package is equal-or-better than the specified package.
+ // No need to register the specified package
+ wprintf(L"2 %ls not-needed because %ls\n", packageFullName, registeredPackage.PackageFullName().c_str());
+ return false;
+ }
+
+ // Nope. The specified package is better than anything current registered
+ wprintf(L"3 Nothing better\n");
+ return true;
+}
+
+HRESULT AddPackage(PCWSTR path, const std::wstring& filename, bool forceDeployment)
+{
+ const auto packagePath{ std::filesystem::path(path) / filename };
+ const auto packagePathUri{ winrt::Windows::Foundation::Uri(packagePath.c_str()) };
+ winrt::Windows::Management::Deployment::PackageManager packageManager;
+
+ const auto options{ forceDeployment ?
+ winrt::Windows::Management::Deployment::DeploymentOptions::ForceTargetApplicationShutdown :
+ winrt::Windows::Management::Deployment::DeploymentOptions::None };
+ auto deploymentResult{ packageManager.AddPackageAsync(packagePathUri, nullptr, options).get() };
+ return deploymentResult.ExtendedErrorCode();
+}
+
+int wmain(int argc, wchar_t *argv[])
+{
+ try
+ {
+ winrt::init_apartment();
+
+ bool forceDeployment{};
+
+ // Parse the command line
+ int index{ 1 };
+ for (; index < argc; ++index)
+ {
+ auto arg{ argv[index] };
+ if (arg[0] != L'-')
+ {
+ // Options are -o (short form) or --option (long form)
+ break;
+ }
+ else if ((CompareStringOrdinal(arg, -1, L"--", -1, TRUE) == CSTR_EQUAL))
+ {
+ // -- = end of options
+ ++index;
+ break;
+ }
+ else if ((CompareStringOrdinal(arg, -1, L"-f", -1, TRUE) == CSTR_EQUAL) ||
+ (CompareStringOrdinal(arg, -1, L"--force", -1, TRUE) == CSTR_EQUAL))
+ {
+ forceDeployment = true;
+ }
+ else if ((CompareStringOrdinal(arg, -1, L"-?", -1, FALSE) == CSTR_EQUAL) ||
+ (CompareStringOrdinal(arg, -1, L"--help", -1, FALSE) == CSTR_EQUAL))
+ {
+ Help();
+ return ERROR_BAD_ARGUMENTS;
+ }
+ else
+ {
+ Help();
+ return ERROR_BAD_ARGUMENTS;
+ }
+ }
+
+ if (index >= argc)
+ {
+ Help();
+ return ERROR_BAD_ARGUMENTS;
+ }
+ auto path{ argv[index++] };
+
+ if (index < argc)
+ {
+ Help();
+ return ERROR_BAD_ARGUMENTS;
+ }
+
+ return JustDoIt(path, forceDeployment);
+ }
+ catch (...)
+ {
+ const auto e{ winrt::hresult_error(winrt::to_hresult(), winrt::take_ownership_from_abi) };
+ const auto hr{ e.code() };
+ const auto message{ e.message() };
+ (void) LOG_HR_MSG(hr, "%ls", message.c_str());
+ wprintf(L"0x%X %s", hr.value, message.c_str());
+ return hr;
+ }
+}
diff --git a/dev/WindowsAppRuntime_MSIXInstallFromPath/packages.config b/dev/WindowsAppRuntime_MSIXInstallFromPath/packages.config
new file mode 100644
index 0000000000..e9fecf8c0b
--- /dev/null
+++ b/dev/WindowsAppRuntime_MSIXInstallFromPath/packages.config
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/dev/WindowsAppRuntime_MSIXInstallFromPath/pch.cpp b/dev/WindowsAppRuntime_MSIXInstallFromPath/pch.cpp
new file mode 100644
index 0000000000..6c107a3575
--- /dev/null
+++ b/dev/WindowsAppRuntime_MSIXInstallFromPath/pch.cpp
@@ -0,0 +1,6 @@
+// Copyright (c) Microsoft Corporation and Contributors.
+// Licensed under the MIT License.
+
+#include "pch.h"
+
+// When you are using pre-compiled headers, this source file is necessary for compilation to succeed.
diff --git a/dev/WindowsAppRuntime_MSIXInstallFromPath/pch.h b/dev/WindowsAppRuntime_MSIXInstallFromPath/pch.h
new file mode 100644
index 0000000000..5db719debd
--- /dev/null
+++ b/dev/WindowsAppRuntime_MSIXInstallFromPath/pch.h
@@ -0,0 +1,16 @@
+// Copyright (c) Microsoft Corporation and Contributors.
+// Licensed under the MIT License.
+
+// pch.h: This is a precompiled header file.
+// Files listed below are compiled only once, improving build performance for future builds.
+// This also affects IntelliSense performance, including code completion and many code browsing features.
+// However, files listed here are ALL re-compiled if any one of them is updated between builds.
+// Do not add files here that you will be updating frequently as this negates the performance advantage.
+
+#ifndef PCH_H
+#define PCH_H
+
+// add headers that you want to pre-compile here
+#include "framework.h"
+
+#endif //PCH_H
diff --git a/test/DynamicDependency/Test_Win32/TestMddBootstrap.cpp b/test/DynamicDependency/Test_Win32/TestMddBootstrap.cpp
index 89c2f99792..d57351b499 100644
--- a/test/DynamicDependency/Test_Win32/TestMddBootstrap.cpp
+++ b/test/DynamicDependency/Test_Win32/TestMddBootstrap.cpp
@@ -190,7 +190,7 @@ namespace Test::DynamicDependency
// Major.Minor = 0.0 == No such framework package
const UINT32 doesNotExist{};
const PACKAGE_VERSION minVersionMatchAny{};
- VERIFY_ARE_EQUAL(STATEREPOSITORY_E_DEPENDENCY_NOT_RESOLVED, MddBootstrapInitialize(doesNotExist, nullptr, minVersionMatchAny));
+ VERIFY_ARE_EQUAL(HRESULT_FROM_WIN32(ERROR_NO_MATCH), MddBootstrapInitialize(doesNotExist, nullptr, minVersionMatchAny));
}
TEST_METHOD(Initialize_DDLMMinVersionNoMatch)
@@ -203,7 +203,7 @@ namespace Test::DynamicDependency
// Version .65535.65535.65535 to find framework packages for the major.minor version but none meeting this minVersion criteria
const UINT32 c_Version_MajorMinor{ Test::Packages::DynamicDependencyLifetimeManager::c_Version_MajorMinor };
PACKAGE_VERSION minVersionNoMatch{ static_cast(Test::Packages::DynamicDependencyLifetimeManager::c_Version.Major) << 48 | 0x0000FFFFFFFFFFFFuI64 };
- VERIFY_ARE_EQUAL(STATEREPOSITORY_E_DEPENDENCY_NOT_RESOLVED, MddBootstrapInitialize(c_Version_MajorMinor, nullptr, minVersionNoMatch));
+ VERIFY_ARE_EQUAL(HRESULT_FROM_WIN32(ERROR_NO_MATCH), MddBootstrapInitialize(c_Version_MajorMinor, nullptr, minVersionNoMatch));
}
TEST_METHOD(Initialize)
@@ -253,8 +253,7 @@ namespace Test::DynamicDependency
const UINT32 c_Version_MajorMinor_Incompatible{ c_Version_MajorMinor + 1 };
VERIFY_ARE_EQUAL(MDD_E_BOOTSTRAP_INITIALIZE_INCOMPATIBLE, MddBootstrapInitialize(c_Version_MajorMinor_Incompatible, nullptr, c_minVersion));
- VERIFY_ARE_EQUAL(E_INVALIDARG, MddBootstrapInitialize(c_Version_MajorMinor, L"MakesPackageFamilyNameTooLong", c_minVersion));
- VERIFY_ARE_EQUAL(MDD_E_BOOTSTRAP_INITIALIZE_INCOMPATIBLE, MddBootstrapInitialize(c_Version_MajorMinor, L"Zathras", c_minVersion));
+ VERIFY_ARE_EQUAL(MDD_E_BOOTSTRAP_INITIALIZE_INCOMPATIBLE, MddBootstrapInitialize(c_Version_MajorMinor, L"NotTheVersionTag", c_minVersion));
const PACKAGE_VERSION c_minVersion_Incompatible{ UINT64_MAX };
VERIFY_ARE_EQUAL(MDD_E_BOOTSTRAP_INITIALIZE_INCOMPATIBLE, MddBootstrapInitialize(c_Version_MajorMinor, nullptr, c_minVersion_Incompatible));
@@ -289,8 +288,7 @@ namespace Test::DynamicDependency
const PACKAGE_VERSION c_minVersion3{};
VERIFY_ARE_EQUAL(c_minVersion3.Version, c_minVersion1.Version);
VERIFY_ARE_NOT_EQUAL(c_minVersion3.Version, c_minVersion2.Version);
- VERIFY_ARE_EQUAL(E_INVALIDARG, MddBootstrapInitialize(c_Version_MajorMinor3, L"MakesPackageFamilyNameTooLong", c_minVersion3));
- VERIFY_ARE_EQUAL(STATEREPOSITORY_E_DEPENDENCY_NOT_RESOLVED, MddBootstrapInitialize(c_Version_MajorMinor3, L"Zathras", c_minVersion3));
+ VERIFY_ARE_EQUAL(HRESULT_FROM_WIN32(ERROR_NO_MATCH), MddBootstrapInitialize(c_Version_MajorMinor3, L"NotTheVersionTag", c_minVersion3));
// Incompatible criteria. Verify Initialize+Shutdown brought us
// back to initial state so we can fail to initialize as expected
@@ -299,7 +297,7 @@ namespace Test::DynamicDependency
VERIFY_ARE_NOT_EQUAL(c_minVersion4.Version, c_minVersion1.Version);
VERIFY_ARE_NOT_EQUAL(c_minVersion4.Version, c_minVersion2.Version);
VERIFY_ARE_NOT_EQUAL(c_minVersion4.Version, c_minVersion3.Version);
- VERIFY_ARE_EQUAL(STATEREPOSITORY_E_DEPENDENCY_NOT_RESOLVED, MddBootstrapInitialize(c_Version_MajorMinor4, nullptr, c_minVersion4));
+ VERIFY_ARE_EQUAL(HRESULT_FROM_WIN32(ERROR_NO_MATCH), MddBootstrapInitialize(c_Version_MajorMinor4, nullptr, c_minVersion4));
// Same criteria but MinVersion
-
namespace TF = ::Test::FileSystem;
namespace TP = ::Test::Packages;
@@ -136,7 +134,7 @@ void Test::DynamicDependency::Test_Win32::FullLifecycle_ProcessLifetime_Framewor
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
VerifyPackageGraphRevisionId(1);
// -- Add
@@ -185,7 +183,7 @@ void Test::DynamicDependency::Test_Win32::FullLifecycle_ProcessLifetime_Framewor
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
VerifyPackageGraphRevisionId(3);
// -- Delete
@@ -210,8 +208,7 @@ void Test::DynamicDependency::Test_Win32::GetResolvedPackageFullName_NotFound()
{
PCWSTR packageDependencyId{ L"This.Does.Not.Exist" };
wil::unique_process_heap_string packageFullName;
- VERIFY_SUCCEEDED(MddGetResolvedPackageFullNameForPackageDependency(packageDependencyId, &packageFullName));
- VERIFY_IS_NULL(packageFullName);
+ VERIFY_ARE_EQUAL(HRESULT_FROM_WIN32(ERROR_NOT_FOUND), MddGetResolvedPackageFullNameForPackageDependency(packageDependencyId, &packageFullName));
}
void Test::DynamicDependency::Test_Win32::GetIdForPackageDependencyContext_Null()
@@ -238,43 +235,15 @@ void Test::DynamicDependency::Test_Win32::VerifyPackageDependency(
const HRESULT expectedHR,
PCWSTR expectedPackageFullName)
{
- // Given an unknown/undefined packageDependencyId our caller specifies expectedHR=HRESULT_FROM_WIN32(ERROR_NOT_FOUND).
- // Handle the condition appropriately:
- //
- // API | HRESULT | packageFullName
- // -------------------------------------------------------------------|-----------------------------------------|----------------
- // MddGetResolvedPackageFullNameForPackageDependency | S_OK | NULL
- // MddGetResolvedPackageFullNameForPackageDependency2 (Supported) | HRESULT_FROM_WIN32(ERROR_NOT_FOUND) | NULL
- // MddGetResolvedPackageFullNameForPackageDependency2 (not Supported) | HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED) | NULL
-
- const HRESULT expectedHR1{ (expectedHR == HRESULT_FROM_WIN32(ERROR_NOT_FOUND)) ? S_OK : expectedHR };
- const HRESULT expectedHR2{
- MddCore::Win11::IsSupported() && !MddCore::Win11::IsGetResolvedPackageFullNameForPackageDependency2Supported() ?
- HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED) :
- expectedHR };
-
- wil::unique_process_heap_string packageFullName1;
- VERIFY_ARE_EQUAL(expectedHR1, MddGetResolvedPackageFullNameForPackageDependency(packageDependencyId, &packageFullName1));
- if (FAILED(expectedHR1) || !expectedPackageFullName)
- {
- VERIFY_IS_NULL(packageFullName1);
- }
- else
- {
- VERIFY_IS_NOT_NULL(packageFullName1, WEX::Common::String().Format(L"PackageFullName=null Expected=%s", expectedPackageFullName));
- VERIFY_ARE_EQUAL(std::wstring(packageFullName1.get()), std::wstring(expectedPackageFullName));
- }
-
- wil::unique_process_heap_string packageFullName2;
- VERIFY_ARE_EQUAL(expectedHR2, MddGetResolvedPackageFullNameForPackageDependency2(packageDependencyId, &packageFullName2));
- if (FAILED(expectedHR2) || !expectedPackageFullName)
+ wil::unique_process_heap_string packageFullName;
+ VERIFY_ARE_EQUAL(expectedHR, MddGetResolvedPackageFullNameForPackageDependency(packageDependencyId, &packageFullName));
+ if (!expectedPackageFullName)
{
- VERIFY_IS_NULL(packageFullName2);
+ VERIFY_IS_TRUE(!packageFullName);
}
else
{
- VERIFY_IS_NOT_NULL(packageFullName2, WEX::Common::String().Format(L"PackageFullName=null Expected=%s", expectedPackageFullName));
- VERIFY_ARE_EQUAL(std::wstring(packageFullName2.get()), std::wstring(expectedPackageFullName));
+ VERIFY_ARE_EQUAL(std::wstring(packageFullName.get()), std::wstring(expectedPackageFullName));
}
}
@@ -288,12 +257,6 @@ void Test::DynamicDependency::Test_Win32::VerifyPackageDependency(
void Test::DynamicDependency::Test_Win32::VerifyPathEnvironmentVariable(PCWSTR path)
{
- // N/A when DynamicDependency delegates to the Win11 OS API
- if (MddCore::Win11::IsSupported())
- {
- return;
- }
-
std::wstring expectedPath{ path };
std::wstring pathEnvironmentVariable{ wil::TryGetEnvironmentVariableW(L"PATH").get() };
VERIFY_ARE_EQUAL(expectedPath, pathEnvironmentVariable);
@@ -301,12 +264,6 @@ void Test::DynamicDependency::Test_Win32::VerifyPathEnvironmentVariable(PCWSTR p
void Test::DynamicDependency::Test_Win32::VerifyPathEnvironmentVariable(PCWSTR path1, PCWSTR path)
{
- // N/A when DynamicDependency delegates to the Win11 OS API
- if (MddCore::Win11::IsSupported())
- {
- return;
- }
-
std::wstring pathEnvironmentVariable{ wil::TryGetEnvironmentVariableW(L"PATH").get() };
std::wstring expectedPath{ std::wstring(path1) + L";" + path };
VERIFY_ARE_EQUAL(expectedPath, pathEnvironmentVariable);
@@ -314,12 +271,6 @@ void Test::DynamicDependency::Test_Win32::VerifyPathEnvironmentVariable(PCWSTR p
void Test::DynamicDependency::Test_Win32::VerifyPathEnvironmentVariable(PCWSTR path1, PCWSTR path2, PCWSTR path)
{
- // N/A when DynamicDependency delegates to the Win11 OS API
- if (MddCore::Win11::IsSupported())
- {
- return;
- }
-
std::wstring pathEnvironmentVariable{ wil::TryGetEnvironmentVariableW(L"PATH").get() };
std::wstring expectedPath{ std::wstring(path1) + L";" + path2 + L";" + path };
VERIFY_ARE_EQUAL(expectedPath, pathEnvironmentVariable);
@@ -327,12 +278,6 @@ void Test::DynamicDependency::Test_Win32::VerifyPathEnvironmentVariable(PCWSTR p
void Test::DynamicDependency::Test_Win32::VerifyPathEnvironmentVariable(PCWSTR path1, PCWSTR path2, PCWSTR path3, PCWSTR path)
{
- // N/A when DynamicDependency delegates to the Win11 OS API
- if (MddCore::Win11::IsSupported())
- {
- return;
- }
-
std::wstring pathEnvironmentVariable{ wil::TryGetEnvironmentVariableW(L"PATH").get() };
std::wstring expectedPath{ std::wstring(path1) + L";" + path2 + L";" + path3 + L";" + path };
VERIFY_ARE_EQUAL(expectedPath, pathEnvironmentVariable);
diff --git a/test/DynamicDependency/Test_Win32/Test_Win32_Add_Rank_A0_B10.cpp b/test/DynamicDependency/Test_Win32/Test_Win32_Add_Rank_A0_B10.cpp
index 28c460c74d..0c6c2747c5 100644
--- a/test/DynamicDependency/Test_Win32/Test_Win32_Add_Rank_A0_B10.cpp
+++ b/test/DynamicDependency/Test_Win32/Test_Win32_Add_Rank_A0_B10.cpp
@@ -33,7 +33,7 @@ void Test::DynamicDependency::Test_Win32::Add_Rank_A0_B10()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -77,7 +77,7 @@ void Test::DynamicDependency::Test_Win32::Add_Rank_A0_B10()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_Win32/Test_Win32_Add_Rank_B-10_A0.cpp b/test/DynamicDependency/Test_Win32/Test_Win32_Add_Rank_B-10_A0.cpp
index caf732366a..081c385c6d 100644
--- a/test/DynamicDependency/Test_Win32/Test_Win32_Add_Rank_B-10_A0.cpp
+++ b/test/DynamicDependency/Test_Win32/Test_Win32_Add_Rank_B-10_A0.cpp
@@ -33,7 +33,7 @@ void Test::DynamicDependency::Test_Win32::Add_Rank_Bneg10_A0()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -77,7 +77,7 @@ void Test::DynamicDependency::Test_Win32::Add_Rank_Bneg10_A0()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_Win32/Test_Win32_Add_Rank_B0prepend_A0.cpp b/test/DynamicDependency/Test_Win32/Test_Win32_Add_Rank_B0prepend_A0.cpp
index fcb1bc721e..888061f25d 100644
--- a/test/DynamicDependency/Test_Win32/Test_Win32_Add_Rank_B0prepend_A0.cpp
+++ b/test/DynamicDependency/Test_Win32/Test_Win32_Add_Rank_B0prepend_A0.cpp
@@ -33,7 +33,7 @@ void Test::DynamicDependency::Test_Win32::Add_Rank_B0prepend_A0()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -77,7 +77,7 @@ void Test::DynamicDependency::Test_Win32::Add_Rank_B0prepend_A0()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_Win32/Test_Win32_Create_Add_Architectures_Current.cpp b/test/DynamicDependency/Test_Win32/Test_Win32_Create_Add_Architectures_Current.cpp
index a172915020..c79a286501 100644
--- a/test/DynamicDependency/Test_Win32/Test_Win32_Create_Add_Architectures_Current.cpp
+++ b/test/DynamicDependency/Test_Win32/Test_Win32_Create_Add_Architectures_Current.cpp
@@ -37,7 +37,7 @@ void Test::DynamicDependency::Test_Win32::Create_Add_Architectures_Current()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -80,7 +80,7 @@ void Test::DynamicDependency::Test_Win32::Create_Add_Architectures_Current()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_Win32/Test_Win32_Create_Add_Architectures_Explicit.cpp b/test/DynamicDependency/Test_Win32/Test_Win32_Create_Add_Architectures_Explicit.cpp
index 107272b7de..03be29e249 100644
--- a/test/DynamicDependency/Test_Win32/Test_Win32_Create_Add_Architectures_Explicit.cpp
+++ b/test/DynamicDependency/Test_Win32/Test_Win32_Create_Add_Architectures_Explicit.cpp
@@ -43,7 +43,7 @@ void Test::DynamicDependency::Test_Win32::Create_Add_Architectures_Explicit()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -86,7 +86,7 @@ void Test::DynamicDependency::Test_Win32::Create_Add_Architectures_Explicit()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_Win32/Test_Win32_Create_DoNotVerifyDependencyResolution.cpp b/test/DynamicDependency/Test_Win32/Test_Win32_Create_DoNotVerifyDependencyResolution.cpp
index 97652acc76..fad858ee69 100644
--- a/test/DynamicDependency/Test_Win32/Test_Win32_Create_DoNotVerifyDependencyResolution.cpp
+++ b/test/DynamicDependency/Test_Win32/Test_Win32_Create_DoNotVerifyDependencyResolution.cpp
@@ -83,7 +83,7 @@ void Test::DynamicDependency::Test_Win32::Create_DoNotVerifyDependencyResolution
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_Win32/Test_Win32_FullLifecycle_FilePathLifetime_Frameworks_2.cpp b/test/DynamicDependency/Test_Win32/Test_Win32_FullLifecycle_FilePathLifetime_Frameworks_2.cpp
index f780b20978..ac4853e0aa 100644
--- a/test/DynamicDependency/Test_Win32/Test_Win32_FullLifecycle_FilePathLifetime_Frameworks_2.cpp
+++ b/test/DynamicDependency/Test_Win32/Test_Win32_FullLifecycle_FilePathLifetime_Frameworks_2.cpp
@@ -38,7 +38,7 @@ void Test::DynamicDependency::Test_Win32::FullLifecycle_FilePathLifetime_Framewo
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -103,7 +103,7 @@ void Test::DynamicDependency::Test_Win32::FullLifecycle_FilePathLifetime_Framewo
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_Win32/Test_Win32_FullLifecycle_ProcessLifetime_Frameworks_2.cpp b/test/DynamicDependency/Test_Win32/Test_Win32_FullLifecycle_ProcessLifetime_Frameworks_2.cpp
index 7e4e6f6693..4aff89ff12 100644
--- a/test/DynamicDependency/Test_Win32/Test_Win32_FullLifecycle_ProcessLifetime_Frameworks_2.cpp
+++ b/test/DynamicDependency/Test_Win32/Test_Win32_FullLifecycle_ProcessLifetime_Frameworks_2.cpp
@@ -33,7 +33,7 @@ void Test::DynamicDependency::Test_Win32::FullLifecycle_ProcessLifetime_Framewor
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -76,7 +76,7 @@ void Test::DynamicDependency::Test_Win32::FullLifecycle_ProcessLifetime_Framewor
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_Win32/Test_Win32_FullLifecycle_RegistryLifetime_Frameworks_2.cpp b/test/DynamicDependency/Test_Win32/Test_Win32_FullLifecycle_RegistryLifetime_Frameworks_2.cpp
index d7bbfb003b..605c7dda7d 100644
--- a/test/DynamicDependency/Test_Win32/Test_Win32_FullLifecycle_RegistryLifetime_Frameworks_2.cpp
+++ b/test/DynamicDependency/Test_Win32/Test_Win32_FullLifecycle_RegistryLifetime_Frameworks_2.cpp
@@ -38,7 +38,7 @@ void Test::DynamicDependency::Test_Win32::FullLifecycle_RegistryLifetime_Framewo
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -101,7 +101,7 @@ void Test::DynamicDependency::Test_Win32::FullLifecycle_RegistryLifetime_Framewo
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd.get(), S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_Win32/Test_Win32_WinRTReentrancy.cpp b/test/DynamicDependency/Test_Win32/Test_Win32_WinRTReentrancy.cpp
index ae7396cc59..95f5046b80 100644
--- a/test/DynamicDependency/Test_Win32/Test_Win32_WinRTReentrancy.cpp
+++ b/test/DynamicDependency/Test_Win32/Test_Win32_WinRTReentrancy.cpp
@@ -36,7 +36,7 @@ void Test::DynamicDependency::Test_Win32::WinRTReentrancy()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkWidgets, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkWidgets.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkWidgets.get(), S_OK, expectedPackageFullName_FrameworkWidgets);
// -- Add
@@ -110,7 +110,7 @@ void Test::DynamicDependency::Test_Win32::WinRTReentrancy()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkWidgets, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkWidgets.get(), S_OK, nullptr);
+ VerifyPackageDependency(packageDependencyId_FrameworkWidgets.get(), S_OK, expectedPackageFullName_FrameworkWidgets);
// -- Delete
diff --git a/test/DynamicDependency/Test_WinRT/DynamicDependency_Test_WinRT.vcxproj b/test/DynamicDependency/Test_WinRT/DynamicDependency_Test_WinRT.vcxproj
index 897389e5f1..c3a8916b28 100644
--- a/test/DynamicDependency/Test_WinRT/DynamicDependency_Test_WinRT.vcxproj
+++ b/test/DynamicDependency/Test_WinRT/DynamicDependency_Test_WinRT.vcxproj
@@ -110,7 +110,7 @@
Use
- $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories);$(OutDir)\..\WindowsAppRuntime_DLL;$(OutDir)\..\WindowsAppRuntime_BootstrapDLL;$(OutDir)\..\Framework.Math.Add;$(OutDir)\..\Framework.Math.Multiply;$(RepoRoot)\dev\common
+ $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories);$(OutDir)\..\WindowsAppRuntime_DLL;$(OutDir)\..\WindowsAppRuntime_BootstrapDLL;$(OutDir)\..\Framework.Math.Add;$(OutDir)\..\Framework.Math.Multiply
WIN32;NDEBUG;%(PreprocessorDefinitions);PRTEST_MODE_UWP=0
true
pch.h
@@ -125,7 +125,7 @@
Use
- $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories);$(OutDir)\..\WindowsAppRuntime_DLL;$(OutDir)\..\WindowsAppRuntime_BootstrapDLL;$(OutDir)\..\Framework.Math.Add;$(OutDir)\..\Framework.Math.Multiply;$(RepoRoot)\dev\common
+ $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories);$(OutDir)\..\WindowsAppRuntime_DLL;$(OutDir)\..\WindowsAppRuntime_BootstrapDLL;$(OutDir)\..\Framework.Math.Add;$(OutDir)\..\Framework.Math.Multiply
WIN32;_DEBUG;%(PreprocessorDefinitions);PRTEST_MODE_UWP=0
true
pch.h
@@ -140,7 +140,7 @@
Use
- $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories);$(OutDir)\..\WindowsAppRuntime_DLL;$(OutDir)\..\WindowsAppRuntime_BootstrapDLL;$(OutDir)\..\Framework.Math.Add;$(OutDir)\..\Framework.Math.Multiply;$(RepoRoot)\dev\common
+ $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories);$(OutDir)\..\WindowsAppRuntime_DLL;$(OutDir)\..\WindowsAppRuntime_BootstrapDLL;$(OutDir)\..\Framework.Math.Add;$(OutDir)\..\Framework.Math.Multiply
_DEBUG;%(PreprocessorDefinitions);PRTEST_MODE_UWP=0
true
pch.h
@@ -155,7 +155,7 @@
Use
- $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories);$(OutDir)\..\WindowsAppRuntime_DLL;$(OutDir)\..\WindowsAppRuntime_BootstrapDLL;$(OutDir)\..\Framework.Math.Add;$(OutDir)\..\Framework.Math.Multiply;$(RepoRoot)\dev\common
+ $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories);$(OutDir)\..\WindowsAppRuntime_DLL;$(OutDir)\..\WindowsAppRuntime_BootstrapDLL;$(OutDir)\..\Framework.Math.Add;$(OutDir)\..\Framework.Math.Multiply
_DEBUG;%(PreprocessorDefinitions);PRTEST_MODE_UWP=0
true
pch.h
@@ -170,7 +170,7 @@
Use
- $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories);$(OutDir)\..\WindowsAppRuntime_DLL;$(OutDir)\..\WindowsAppRuntime_BootstrapDLL;$(OutDir)\..\Framework.Math.Add;$(OutDir)\..\Framework.Math.Multiply;$(RepoRoot)\dev\common
+ $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories);$(OutDir)\..\WindowsAppRuntime_DLL;$(OutDir)\..\WindowsAppRuntime_BootstrapDLL;$(OutDir)\..\Framework.Math.Add;$(OutDir)\..\Framework.Math.Multiply
NDEBUG;%(PreprocessorDefinitions);PRTEST_MODE_UWP=0
true
pch.h
@@ -185,7 +185,7 @@
Use
- $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories);$(OutDir)\..\WindowsAppRuntime_DLL;$(OutDir)\..\WindowsAppRuntime_BootstrapDLL;$(OutDir)\..\Framework.Math.Add;$(OutDir)\..\Framework.Math.Multiply;$(RepoRoot)\dev\common
+ $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories);$(OutDir)\..\WindowsAppRuntime_DLL;$(OutDir)\..\WindowsAppRuntime_BootstrapDLL;$(OutDir)\..\Framework.Math.Add;$(OutDir)\..\Framework.Math.Multiply
NDEBUG;%(PreprocessorDefinitions);PRTEST_MODE_UWP=0
true
pch.h
diff --git a/test/DynamicDependency/Test_WinRT/Test_WinRT.cpp b/test/DynamicDependency/Test_WinRT/Test_WinRT.cpp
index bb96ae9591..142ebb465a 100644
--- a/test/DynamicDependency/Test_WinRT/Test_WinRT.cpp
+++ b/test/DynamicDependency/Test_WinRT/Test_WinRT.cpp
@@ -10,8 +10,6 @@
#include "Test_WinRT.h"
-#include
-
#include
namespace TF = ::Test::FileSystem;
@@ -98,30 +96,14 @@ void Test::DynamicDependency::Test_WinRT::GetFromId_Empty()
{
winrt::hstring packageDependencyId;
auto packageDependency{ winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependency::GetFromId(packageDependencyId) };
- if (MddCore::Win11::IsSupported())
- {
- //TODO Remove once GetFromId() fails for no-such-id
- VERIFY_IS_TRUE(!!packageDependency);
- }
- else
- {
- VERIFY_IS_TRUE(!packageDependency);
- }
+ VERIFY_IS_TRUE(!packageDependency);
}
void Test::DynamicDependency::Test_WinRT::GetFromId_NotFound()
{
winrt::hstring packageDependencyId{ L"This.Does.Not.Exist" };
auto packageDependency{ winrt::Microsoft::Windows::ApplicationModel::DynamicDependency::PackageDependency::GetFromId(packageDependencyId) };
- if (MddCore::Win11::IsSupported())
- {
- //TODO Remove once GetFromId() fails for no-such-id
- VERIFY_IS_TRUE(!!packageDependency);
- }
- else
- {
- VERIFY_IS_TRUE(!packageDependency);
- }
+ VERIFY_IS_TRUE(!packageDependency);
}
void Test::DynamicDependency::Test_WinRT::FullLifecycle_ProcessLifetime_Framework_WindowsAppRuntime()
@@ -151,7 +133,7 @@ void Test::DynamicDependency::Test_WinRT::FullLifecycle_ProcessLifetime_Framewor
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependency_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependency_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
VerifyGenerationId(1);
// -- Add
@@ -198,7 +180,7 @@ void Test::DynamicDependency::Test_WinRT::FullLifecycle_ProcessLifetime_Framewor
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
VerifyGenerationId(3);
// -- Delete
@@ -259,43 +241,15 @@ void Test::DynamicDependency::Test_WinRT::VerifyPackageDependency(
const HRESULT expectedHR,
PCWSTR expectedPackageFullName)
{
- // Given an unknown/undefined packageDependencyId our caller specifies expectedHR=HRESULT_FROM_WIN32(ERROR_NOT_FOUND).
- // Handle the condition appropriately:
- //
- // API | HRESULT | packageFullName
- // -------------------------------------------------------------------|-----------------------------------------|----------------
- // MddGetResolvedPackageFullNameForPackageDependency | S_OK | NULL
- // MddGetResolvedPackageFullNameForPackageDependency2 (Supported) | HRESULT_FROM_WIN32(ERROR_NOT_FOUND) | NULL
- // MddGetResolvedPackageFullNameForPackageDependency2 (not Supported) | HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED) | NULL
-
- const HRESULT expectedHR1{ (expectedHR == HRESULT_FROM_WIN32(ERROR_NOT_FOUND)) ? S_OK : expectedHR };
- const HRESULT expectedHR2{
- MddCore::Win11::IsSupported() && !MddCore::Win11::IsGetResolvedPackageFullNameForPackageDependency2Supported() ?
- HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED) :
- expectedHR };
-
- wil::unique_process_heap_string packageFullName1;
- VERIFY_ARE_EQUAL(expectedHR1, MddGetResolvedPackageFullNameForPackageDependency(packageDependencyId, &packageFullName1));
- if (FAILED(expectedHR1) || !expectedPackageFullName || (expectedPackageFullName[0] == L'\0'))
- {
- VERIFY_IS_NULL(packageFullName1);
- }
- else
+ wil::unique_process_heap_string packageFullName;
+ VERIFY_ARE_EQUAL(expectedHR, MddGetResolvedPackageFullNameForPackageDependency(packageDependencyId, &packageFullName));
+ if (!expectedPackageFullName)
{
- VERIFY_IS_NOT_NULL(packageFullName1, WEX::Common::String().Format(L"PackageFullName=null Expected=%s", expectedPackageFullName));
- VERIFY_ARE_EQUAL(std::wstring(packageFullName1.get()), std::wstring(expectedPackageFullName));
- }
-
- wil::unique_process_heap_string packageFullName2;
- VERIFY_ARE_EQUAL(expectedHR2, MddGetResolvedPackageFullNameForPackageDependency2(packageDependencyId, &packageFullName2));
- if (FAILED(expectedHR2) || !expectedPackageFullName || (expectedPackageFullName[0] == L'\0'))
- {
- VERIFY_IS_NULL(packageFullName2);
+ VERIFY_IS_TRUE(!packageFullName);
}
else
{
- VERIFY_IS_NOT_NULL(packageFullName2, WEX::Common::String().Format(L"PackageFullName=null Expected=%s", expectedPackageFullName));
- VERIFY_ARE_EQUAL(std::wstring(packageFullName2.get()), std::wstring(expectedPackageFullName));
+ VERIFY_ARE_EQUAL(std::wstring(packageFullName.get()), std::wstring(expectedPackageFullName));
}
}
@@ -339,12 +293,6 @@ void Test::DynamicDependency::Test_WinRT::VerifyPackageDependency(
void Test::DynamicDependency::Test_WinRT::VerifyPathEnvironmentVariable(PCWSTR path)
{
- // N/A when DynamicDependency delegates to the Win11 OS API
- if (MddCore::Win11::IsSupported())
- {
- return;
- }
-
std::wstring expectedPath{ path };
std::wstring pathEnvironmentVariable{ wil::TryGetEnvironmentVariableW(L"PATH").get() };
VERIFY_ARE_EQUAL(expectedPath, pathEnvironmentVariable);
@@ -352,12 +300,6 @@ void Test::DynamicDependency::Test_WinRT::VerifyPathEnvironmentVariable(PCWSTR p
void Test::DynamicDependency::Test_WinRT::VerifyPathEnvironmentVariable(PCWSTR path1, PCWSTR path)
{
- // N/A when DynamicDependency delegates to the Win11 OS API
- if (MddCore::Win11::IsSupported())
- {
- return;
- }
-
std::wstring pathEnvironmentVariable{ wil::TryGetEnvironmentVariableW(L"PATH").get() };
std::wstring expectedPath{ std::wstring(path1) + L";" + path };
VERIFY_ARE_EQUAL(expectedPath, pathEnvironmentVariable);
@@ -365,12 +307,6 @@ void Test::DynamicDependency::Test_WinRT::VerifyPathEnvironmentVariable(PCWSTR p
void Test::DynamicDependency::Test_WinRT::VerifyPathEnvironmentVariable(PCWSTR path1, PCWSTR path2, PCWSTR path)
{
- // N/A when DynamicDependency delegates to the Win11 OS API
- if (MddCore::Win11::IsSupported())
- {
- return;
- }
-
std::wstring pathEnvironmentVariable{ wil::TryGetEnvironmentVariableW(L"PATH").get() };
std::wstring expectedPath{ std::wstring(path1) + L";" + path2 + L";" + path };
VERIFY_ARE_EQUAL(expectedPath, pathEnvironmentVariable);
@@ -378,12 +314,6 @@ void Test::DynamicDependency::Test_WinRT::VerifyPathEnvironmentVariable(PCWSTR p
void Test::DynamicDependency::Test_WinRT::VerifyPathEnvironmentVariable(PCWSTR path1, PCWSTR path2, PCWSTR path3, PCWSTR path)
{
- // N/A when DynamicDependency delegates to the Win11 OS API
- if (MddCore::Win11::IsSupported())
- {
- return;
- }
-
std::wstring pathEnvironmentVariable{ wil::TryGetEnvironmentVariableW(L"PATH").get() };
std::wstring expectedPath{ std::wstring(path1) + L";" + path2 + L";" + path3 + L";" + path };
VERIFY_ARE_EQUAL(expectedPath, pathEnvironmentVariable);
diff --git a/test/DynamicDependency/Test_WinRT/Test_WinRT_Add_Rank_A0_B10.cpp b/test/DynamicDependency/Test_WinRT/Test_WinRT_Add_Rank_A0_B10.cpp
index 9e15cdc4e6..a25682aac0 100644
--- a/test/DynamicDependency/Test_WinRT/Test_WinRT_Add_Rank_A0_B10.cpp
+++ b/test/DynamicDependency/Test_WinRT/Test_WinRT_Add_Rank_A0_B10.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors.
+// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.
#include "pch.h"
@@ -36,7 +36,7 @@ void Test::DynamicDependency::Test_WinRT::Add_Rank_A0_B10()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -79,7 +79,7 @@ void Test::DynamicDependency::Test_WinRT::Add_Rank_A0_B10()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_WinRT/Test_WinRT_Add_Rank_B-10_A0.cpp b/test/DynamicDependency/Test_WinRT/Test_WinRT_Add_Rank_B-10_A0.cpp
index e1b27205ed..b27550055a 100644
--- a/test/DynamicDependency/Test_WinRT/Test_WinRT_Add_Rank_B-10_A0.cpp
+++ b/test/DynamicDependency/Test_WinRT/Test_WinRT_Add_Rank_B-10_A0.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors.
+// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.
#include "pch.h"
@@ -36,7 +36,7 @@ void Test::DynamicDependency::Test_WinRT::Add_Rank_Bneg10_A0()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -79,7 +79,7 @@ void Test::DynamicDependency::Test_WinRT::Add_Rank_Bneg10_A0()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_WinRT/Test_WinRT_Add_Rank_B0prepend_A0.cpp b/test/DynamicDependency/Test_WinRT/Test_WinRT_Add_Rank_B0prepend_A0.cpp
index ea9b4ec2fa..29858786ce 100644
--- a/test/DynamicDependency/Test_WinRT/Test_WinRT_Add_Rank_B0prepend_A0.cpp
+++ b/test/DynamicDependency/Test_WinRT/Test_WinRT_Add_Rank_B0prepend_A0.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors.
+// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.
#include "pch.h"
@@ -36,7 +36,7 @@ void Test::DynamicDependency::Test_WinRT::Add_Rank_B0prepend_A0()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -79,7 +79,7 @@ void Test::DynamicDependency::Test_WinRT::Add_Rank_B0prepend_A0()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_WinRT/Test_WinRT_Create_Add_Architectures_Current.cpp b/test/DynamicDependency/Test_WinRT/Test_WinRT_Create_Add_Architectures_Current.cpp
index b228eaa1d2..a19c49df9e 100644
--- a/test/DynamicDependency/Test_WinRT/Test_WinRT_Create_Add_Architectures_Current.cpp
+++ b/test/DynamicDependency/Test_WinRT/Test_WinRT_Create_Add_Architectures_Current.cpp
@@ -40,7 +40,7 @@ void Test::DynamicDependency::Test_WinRT::Create_Add_Architectures_Current()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -81,7 +81,7 @@ void Test::DynamicDependency::Test_WinRT::Create_Add_Architectures_Current()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_WinRT/Test_WinRT_Create_Add_Architectures_Explicit.cpp b/test/DynamicDependency/Test_WinRT/Test_WinRT_Create_Add_Architectures_Explicit.cpp
index e73a830afa..4659d3a041 100644
--- a/test/DynamicDependency/Test_WinRT/Test_WinRT_Create_Add_Architectures_Explicit.cpp
+++ b/test/DynamicDependency/Test_WinRT/Test_WinRT_Create_Add_Architectures_Explicit.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors.
+// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.
#include "pch.h"
@@ -46,7 +46,7 @@ void Test::DynamicDependency::Test_WinRT::Create_Add_Architectures_Explicit()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -87,7 +87,7 @@ void Test::DynamicDependency::Test_WinRT::Create_Add_Architectures_Explicit()
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_WinRT/Test_WinRT_Create_DoNotVerifyDependencyResolution.cpp b/test/DynamicDependency/Test_WinRT/Test_WinRT_Create_DoNotVerifyDependencyResolution.cpp
index d7996a06dd..1e1c06c901 100644
--- a/test/DynamicDependency/Test_WinRT/Test_WinRT_Create_DoNotVerifyDependencyResolution.cpp
+++ b/test/DynamicDependency/Test_WinRT/Test_WinRT_Create_DoNotVerifyDependencyResolution.cpp
@@ -85,7 +85,7 @@ void Test::DynamicDependency::Test_WinRT::Create_DoNotVerifyDependencyResolution
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_WinRT/Test_WinRT_FullLifecycle_FilePathLifetime_Frameworks_2.cpp b/test/DynamicDependency/Test_WinRT/Test_WinRT_FullLifecycle_FilePathLifetime_Frameworks_2.cpp
index 11fa7f6f4a..ddb2312240 100644
--- a/test/DynamicDependency/Test_WinRT/Test_WinRT_FullLifecycle_FilePathLifetime_Frameworks_2.cpp
+++ b/test/DynamicDependency/Test_WinRT/Test_WinRT_FullLifecycle_FilePathLifetime_Frameworks_2.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors.
+// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.
#include "pch.h"
@@ -43,7 +43,7 @@ void Test::DynamicDependency::Test_WinRT::FullLifecycle_FilePathLifetime_Framewo
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -108,7 +108,7 @@ void Test::DynamicDependency::Test_WinRT::FullLifecycle_FilePathLifetime_Framewo
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_WinRT/Test_WinRT_FullLifecycle_ProcessLifetime_Frameworks_2.cpp b/test/DynamicDependency/Test_WinRT/Test_WinRT_FullLifecycle_ProcessLifetime_Frameworks_2.cpp
index 328e016979..185077f2e8 100644
--- a/test/DynamicDependency/Test_WinRT/Test_WinRT_FullLifecycle_ProcessLifetime_Frameworks_2.cpp
+++ b/test/DynamicDependency/Test_WinRT/Test_WinRT_FullLifecycle_ProcessLifetime_Frameworks_2.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors.
+// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.
#include "pch.h"
@@ -36,7 +36,7 @@ void Test::DynamicDependency::Test_WinRT::FullLifecycle_ProcessLifetime_Framewor
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -77,7 +77,7 @@ void Test::DynamicDependency::Test_WinRT::FullLifecycle_ProcessLifetime_Framewor
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_WinRT/Test_WinRT_FullLifecycle_RegistryLifetime_Frameworks_2.cpp b/test/DynamicDependency/Test_WinRT/Test_WinRT_FullLifecycle_RegistryLifetime_Frameworks_2.cpp
index f48066607b..e3d7235424 100644
--- a/test/DynamicDependency/Test_WinRT/Test_WinRT_FullLifecycle_RegistryLifetime_Frameworks_2.cpp
+++ b/test/DynamicDependency/Test_WinRT/Test_WinRT_FullLifecycle_RegistryLifetime_Frameworks_2.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation and Contributors. All rights reserved.
+// Copyright (c) Microsoft Corporation and Contributors. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.
#include "pch.h"
@@ -43,7 +43,7 @@ void Test::DynamicDependency::Test_WinRT::FullLifecycle_RegistryLifetime_Framewo
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Add
@@ -104,7 +104,7 @@ void Test::DynamicDependency::Test_WinRT::FullLifecycle_RegistryLifetime_Framewo
VerifyPackageInPackageGraph(expectedPackageFullName_WindowsAppRuntimeFramework, S_OK);
VerifyPackageNotInPackageGraph(expectedPackageFullName_FrameworkMathAdd, S_OK);
VerifyPathEnvironmentVariable(packagePath_WindowsAppRuntimeFramework, pathEnvironmentVariable.c_str());
- VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, winrt::hstring());
+ VerifyPackageDependency(packageDependencyId_FrameworkMathAdd, S_OK, expectedPackageFullName_FrameworkMathAdd);
// -- Delete
diff --git a/test/DynamicDependency/Test_WinRT/pch.h b/test/DynamicDependency/Test_WinRT/pch.h
index c831e6e1cc..ede2c26370 100644
--- a/test/DynamicDependency/Test_WinRT/pch.h
+++ b/test/DynamicDependency/Test_WinRT/pch.h
@@ -37,8 +37,6 @@
#include
-#include
-
#include "TestFilesystem.h"
#include "TestPackages.h"