Граф коммитов

30 Коммитов

Автор SHA1 Сообщение Дата
Kyaw Thant 1ee9fbf098
Cleanup Eng/Common and other Refactors (#4672) 2024-08-27 11:03:30 -07:00
Howard Kapustein f753170ead
Microsoft.Windows.Storage.ApplicationData (#4057)
* Added AddPackageSetOptions. Added tests for AddPackageSetAsync. Fixed bugs

* Fixed typos. Added missing AddPackageAsync in .idl

* Remove dead code

* Update Transport package's manifested inproc servers

* Added new directory

* Added ApplicationData project. Expanded docs. Added missing ApplicationDataCreateDisposition. Added TerminalVelocity support

* Added stub implementations

* Initial implementation

* Implemented ApplicationData

* Tweaked to be smarter about Windows.Storage.ApplicationData's weird limitations

* Fixed ApplicationData.MachinePath to use the right path. Bumped WIL to 1.0.231216.1 (to get access to wil::reg APIs)

* Implemented IsMachinePathSupported()

* Added tests (mostly)

* Fixed machine path test infra (AppDataPaths doesn't work in our scenario)

* Removed method overload per feedback. Added more doc-comments

* More fixes and optimizations

* More test coverage

* Updated MachinePath/etc to only be accessible if a package in the family is registered to the user OR running as SYSTEM

* Removed ClearAllAsync() and ClearMachineAsync(). Use ClearAsync(locality)

* Updated per API Review

* Fixed build error

* Fixed bad merge. Added ApplicationData Projection
2024-06-29 17:10:22 -07:00
Bob Pulliam 6a2d7b74fc
Eliminate relative package locations for nuget (#3366) 2023-01-29 20:01:14 -05:00
Kyaw Thant c9c28de6b4
Update ProductVersionInfo to remaining Dlls (#3319) 2023-01-10 16:53:26 -08:00
Howard Kapustein 9351d22828
devcheck -CheckDependencies (#3188)
Teach DevCheck to verify dependencies

To use:
* DevCheck -CheckDependencies (or -All or no parameters) to verify dependencies
* DevCheck -SyncDependencies to verify and potentially update dependencies (if necessary)
* DevCheck -CheckVisualStudio now also verifies all required components are installed per docs\Coding-Guidelines\VisualStudio2022.vsconfig

Also enabled StrictMode 3.0 for better error detection.

Sample runs:

[C:\source\repos\windowsappsdk]DevCheck.cmd -CheckVisualStudio
Checking developer environment...
Windows App SDK location...C:\source\repos\windowsappsdk
VisualStudio 2022...C:\Program Files\Microsoft Visual Studio\2022\Enterprise
...Scanning 69 components in C:\source\repos\windowsappsdk\docs\Coding-Guidelines\VisualStudio2022.vsconfig.....................................................................OK
Coding time!
and

[C:\source\repos\windowsappsdk]DevCheck.cmd
Checking developer environment...
Windows App SDK location...C:\source\repos\windowsappsdk
VisualStudio 2022...C:\Program Files\Microsoft Visual Studio\2022\Enterprise
...Scanning 69 components in C:\source\repos\windowsappsdk\docs\Coding-Guidelines\VisualStudio2022.vsconfig.....................................................................OK
Test certificate for C:\source\repos\windowsappsdk\.user\winappsdk.certificate.test.thumbprint...OK
Test certificate AF8A2139E3942FE1D3DA65009D68C2A97EB41739...OK
TAEF service...Running
Reading C:\source\repos\windowsappsdk\eng\Version.Details.xml...
14 dependencies detected
Reading C:\source\repos\windowsappsdk\eng\Version.Dependencies.props...
Verify C:\source\repos\windowsappsdk\eng\Version.Dependencies.props...OK
Scanning packages.config...
Scanned 23 packages.config
Scanned 40 *.vcxproj
Coding time!

TODO (in a future PR)
* Verify references in *proj use only packages in Version.*.xml
* Verify references in *proj use only package versions matching Version.*.xml
2023-01-04 11:46:40 -08:00
JJ Brychell 21e06777d9
Adding product version info to more binaries (#3176)
* Add File Versions to binaries

* Adding two more dlls per code review

Co-authored-by: JJ Brychell <jbryche@microsoft.com>
2022-12-08 16:31:00 -08:00
Bob Pulliam 49bdfd4121
Use CentralPackageVersions and Versions.props to ease maintenance of dependency versions (#3174)
* Move csproj to CentralPackageVersions

* Move more csproj to CentralPackageVersions

* Replace version 1.1.1 of SourceLink.Common, SourceLink.GitHub, Build.Tasks.GitHub with variable in Versions.props

* Add vars to Versions.props

* Replace CppWinRT version 2.0.220929.3 with $(CppWinRTVersion) from Versions.props

* Replace CppWinRT version 2.0.220531.1 with $(CppWinRTVersion) from Versions.props

* Replace Taef version 10.58.210222006-develop with variable from Versions.props

* Replace Wil version 1.0.220914.1 with variable from Versions.props

* remove xml line, use variables from versions.props

* Move Cpp.Default.props to top so that version.props is brought in before import statements

* Use nuget Central Package Management

* add one that I missed - moving cpp.default to the top to populate variables before imports

* Disable problem csproj files (time boxing effect)
2022-12-02 12:02:30 -05:00
Howard Kapustein d7c086f470
Fix dependencies and bad merge (#3169)
* LRPTests was a VS2019 project. Fixed to use VS2022

* LRPTests depends on WindowsAppRuntime_DLL and WindowsAppRuntime_BootstrapDLL but didn't declare project depednencies so build-out-of-order and 'can't find MddBootstrap.h' errors :-( Fixed

* 2 different versions of WIL were referenced across the repo; updated to the latest one for consistency. Ditto for C++/WinRT.

* test\ToastNotificiations\ToastNotificationsTests.vcxproj is gone (bad merge?). Fixed

* Test_DeploymentManagerAutoIntiialize\CPP\* projects were missing a dependency on WindowsAppRuntime_DLL so they could be built before dev\Deployment\*.idl was compiled and thus can't find the DeploymentInitializeOptions type; added missing dependency to ensure build order
2022-11-21 23:48:03 -08:00
David Machaj 2441adf9f0
Include wil/result_originate for much better error origination (#3097)
* Include wil/result_originate for much better error origination

* PR feedback to cover all the DLLs
2022-11-01 10:58:37 -07:00
Kyaw Thant 9917f2d8cf
Update NuGet Packages (#3079)
* Update

* Fix issues with updating Microsoft.SourceLink.Common to 1.1.1

* Fix

* remove duplications

* Fix up PushNotificationsLongRunningTask.StartupTask

* fixup WindowsAppRuntime_MSIXInstallFromPath.vcxproj
2022-10-27 16:36:17 -07:00
Eric Johnson 6c2be6d140
Excluding build artifacts from copyright check (#2864)
* Excluding build artifacts from copyright check

* Adding 'and Contributors' to copyright headers

* Updating some missed files and adding -help support to script

Co-authored-by: Eric Johnson <ejohn@microsoft.com>
2022-08-26 15:00:43 -07:00
Kyaw Thant b281a560e5 Merge branch 'main' into user/kythant/vsconfig1 2022-08-19 16:00:47 -07:00
Eric Johnson 5372c81a50
Find/replace of copyright header strings with CELA guidance (#2857)
* Find/replace of copyright header strings with CELA guidance

* Update the copyright script

Co-authored-by: Eric Johnson <ejohn@microsoft.com>
2022-08-16 13:24:48 -07:00
Howard Kapustein e46df570bb Bump PlatformToolset to v143 (latest). Drop inconsistent fragmented support for older toolsets 2022-07-02 02:50:40 -07:00
Howard Kapustein bdde939d5b
Do a compiler options pass on all binaries contributing to WinAppSDK (#2629)
Tweak various compiler options for optimization (e.g. /GR-) and correctness/productivity (e.g. /W4).

Project-wide standardization via new \WindowsAppSDK.Build.Cpp.props. See for more details.

Corrected several inconsistencies across projects e.g. given Debug|Release + x86+x64+arm64 = 6 permutations, but some projects had an option set for only 5, or only 1. Most projects were mostly already setting most of these options so their changes were mostly removing the now-redundant project-specific setting and let the top-level project-wide standards handle it.

This now standardizes all C++ projects to...
* Compile (all): `/W4 /sdl /permissive- /std:c++17 /GR-` (except 2 projects that explicitly set `/std:c++20`)
* Compile (debug): `/Od`
* Compile (release): `/GS /GF /GL /Gy /Gw /Ob2 /Oi /Os /Oy`
* Link (debug) `/DEBUG:FULL /INCREMENTAL`
* Link (release): `/INCREMENTAL:NO /LTCG /OPT:ICF /OPT:REF`

https://task.ms/39994837 Foundation

https://task.ms/39994852 MRTCore

* Add standardized (project-wide) C++ compile and link options

* Remove ARM support (not supported, but some ARM-conditional fragments weren't removed)

* Removed <WarningLevel> from all projects. Fixed up warnings masked by projects who'd set Level3

* Added SDLCheck for all builds. Added Disable-Optimization for Debug builds. Remove properties in *vcxproj redundnat with standardized options

* Removed redundant <Optimization> from *vcxproj

* Fixed warnings. Removed unnecessary delayload

* Fixed some inconsistencies in project settings

* Fixed AccessControlTests weren't copying the Bootstrap dll to the test's OutDir and thus the test dll wouldn't load

* Fix some warnings in MRT. Had to disable read-only string pooling and strictstrings as workaround for some funky issues in MrtBaseUnitTests for now; filed bug for follow up to fix the errors

* Corrected some comments. Added the missing LTCG option

* Changed LTCG from fast to normal

* Updated FavorSizeOrSpeed to Size instead of Speed

* Move LinkIncremental=false for Release builds to the top-level project-wide standard

* Host LinkIncremental=true if Configuration=Debug to be project wide setting (projects were routinely doing this locally, but inconsistently)

* Fixed a comment

* Added a cautionary note about why Detours.vcxproj has seemingly redundant or contradictory options and to be wary of making any changes

* Removed options redundant with WindowsAppSDK.Build.Cpp.props

* Elevate GenerateDebugInformation=Full to project-wide and remove redundancies. Move dev\WindowsAppSDK.Build.Cpp.props content to project wide (not just \dev) and delete the now obsolete dev\WindowsAppSDK.Build.Cpp.props (really only amounted to /ZH:SHA_256).

* Incorporated feedback
2022-06-16 17:57:32 +00:00
Howard Kapustein 5385ff2e0f
Update WIL. Update C++/WinRT. Tweak build order (#2586)
* Update WIL to 1.0.220201.1

* Update CppWinRT to 2.0.220531.1

* Tweaked build order to avoid out-of-order build failures
2022-06-07 23:01:54 -07:00
Howard Kapustein e724fd5471 Bump WIL to version 1.0.210930.1 2021-11-01 18:03:26 -07:00
Scott Jones 34cf5fb8d2
removed OS CRT/STL leftovers and added CX considerations to Hybrid CRT doc (#1440)
* removed OS CRT/STL leftovers and added CX considerations to Hybrid CRT doc

* PR feedback
2021-10-04 13:22:21 -07:00
Ryan Shepherd 15312233e7
Add source link to product code (#1500) 2021-09-28 18:46:14 -07:00
Howard Kapustein 031c7000d1
Rename runtime components to *WindowsAppRuntime* (#1334)
* SDK->Runtime rename

* Moar renaming...

* Mo rename

* Fixed a path

* Had to shorten the test framework package name (after changing SDK->Runtime yielded package Name=52chars but max=50)

* Few more renames

* Updated Insights (originally deferred but necessary to get Aggregator builds right)

* Fixed inconsistent naming
2021-08-30 13:26:30 -07:00
Howard Kapustein b89e664a17
Added C# WinRT projections for DynamicDependency and AppLifecycle WinRT APIs (#1208)
* Added C# WinRT projections for DynamicDependency and AppLifecycle WinRT APIs

* Add new files

* Fixed dated Reunion reference

* Incorporated feedback re where the projections are packed into the NuGet

* Incorporated feedback

* OK let's try this

* Inconsistent WIL dependencies; updated everyone to the latest (which WindowsAppSDK_DLL was using)

* Inconsistent CppWinrt dependencies; updated to sync to latest (WindowsAppSDK_DLL was already using)

* Fix dupe import of WIL

* Fix misuse of THROW_IF_WIN32_ERROR

* Update the WIL references directly embedded in *.vcxproj (VS didn't)

* Fixed a couple of warnings. Removed some redundant vcxproj elements referencing the CRT not removed by the previous HybridCRT update

* Fixed the C# Projections. Can't refernce the WindowsAppSDK_DLL project because the WinRT namesspaces (and thus *.winmd) don't match, so CsWinRT can't infer namespace/winmd names from the project name. Remove the project reference and reference the .winmd (what VS's SolutionExplorer likes to call 'Assemblies')

* I think I rounded up the rest of the inconsistent references

* More packae reference inconsistencies (almost last of them. 1 last batch to come)

* Editing via GUI Configuration Manager wasn't sticking for some reason but editing the .sln solved it
2021-08-18 18:21:29 -07:00
Howard Kapustein af506d64e4
Commonize Hybrid CRT support (#1026)
* Move Hybrid CRT support out of individual project files up to the project level as a whole

* Remove unnecesasry Store-app-ness that fails the Hybrid CRT support

* Stop enabling DebugLibraries to avoid bringing in debug VC CRT DLL dependencies (violating the Hybrid CRT rules)

* Add DesktopCompatible to MrtCoreManagedTest for future reference - it doesn't hurt, but it doesn't help (at least, not this issue). Also added Win32Proj keyword to M.AM.Resources project. We now have 1 root issue

* Removed MrtCoreManagedTest from the build due to a fundamental incompatibility (ut's a Universal Windows project referencing Microsoft.ApplicationModel.Resources (the WinRT dll) which isn't, and VS doesn't like crossing streams. Even worse, VS and msbuild produce different results!).

* Revert "Removed MrtCoreManagedTest from the build due to a fundamental incompatibility (ut's a Universal Windows project referencing Microsoft.ApplicationModel.Resources (the WinRT dll) which isn't, and VS doesn't like crossing streams. Even worse, VS and msbuild produce different results!)."

This reverts commit 6f4b23dd10.

* Doing things to workaround MrtCoreManagedTest is a Univesal Windows project. Epic Failure. Because it's a Universal Windows project MSTest is creating $(OutDir)AppX subdir and copying files ***it knows about*** to the subdir. This brutal hack fails because File.Exists() for files in the parent directory fails, and that's because the last var pc = ... tries to access the AppX directory's parent ***and fails because Access Denied***. Previously doing the copy in the .csproj fails because the AppX directory doesn't necesarily exist before the test runs, and MD $(OutDir)AppX before copying files is pointless because MSTest is deleting all the files (if any) in the AppX directory when the test starts. So dead end upon dead end. Only way is to find a way to bench the Universal Windows .props logic to understand the files it doesn't want to allow through the ...Transitive... copy rules. Or just rewrite the project as a non-Universal Windows project. Or rewrite the test using TAEF instead of MSTest. Or... drink heavily. Hunting up Scott tomorrow hoping he has an idea

* Hah! Thank you ScottJ! ReferenceCopyLocalPaths does the right thing, copying the needed DLLs into $(OutDir) *and* $(OutDir)AppX and the tests now find the dll and pass

* Remove debugging hackery
2021-08-17 13:17:35 -07:00
Howard Kapustein f05b0d0d7a
Rename ProjectReunion -> WindowsAppSDK (#1041)
* ProjectReunion -> WindowsAppSDK rename (first pass. Of many...)

* /build/** renamed

* assets/**

* /docs

* dev\WindowsAppSDK_DLL\

* installer/

* specs/**

* Last pass! Time to test...

* Remove en-us from microsoft URLs e.g. BAD=https://docs.microsoft.com/en-us/blah GOOD=https://docs.microsoft.com/blah. The client+server figure out the appropriate language and update the URL (at least, Microsoft.com does it) so always encode the more generic syntax

* Incorporated feedback

* Merged latest from main and fixed up reunion references brought in

* Incorporated feedback

* Maybe this is it

* This too?

* Fixing another reunion reference that snaked in from recent main...
2021-07-15 22:30:19 -07:00
Howard Kapustein 2af7b0f546
Use the Universal C Runtime (#888) 2021-06-03 19:14:05 +00:00
Howard Kapustein 129e282bab
Fix DynamicDependencies generated build overrides (#831)
* Fix typo

* Added define+include override support to Directory.Build.props (as ProjectReunion.props doesn't seem to be used).

* DynamicDependencyLifetimeManager.ProxyStub project's MIDL task's AdditionalIncludeDirectories was a hardcoded path lacking 2 thus omitting the override location (needed to compile in pipeline builds). I verified this was the only such instance except some MRT projects, but they're different enough and working so letting sleeping dragons lie

* GenerateDynamicDependencyOverrides.ps1 was told to write to the wrong directory

* Huh. Maybe ProjectReunion.props is used after all - by the CI pipeline?

* Fixed a typo

* Added more debugging aid

* Fixed overridedir location

* Righter path (I hope

* Removed debugging codfe

* Removed dead code
2021-05-18 17:18:39 +00:00
Howard Kapustein f3dc71b071
Minor cleanups (#804) 2021-05-06 21:46:03 +00:00
Howard Kapustein f815192445
Lay groundwork for build/dyndep alignment (#754)
* Define PROJECTREUNION_PIPELINE_BUILD=1 during pipeline builds. Change package family names to include major.minor (not just major). Update Bootstrap API to support PackageFamilyName=blah.Major.Minor, distinct from MinVersion

* Change embedded constants to potentially overrideable during build pipeline

* Added *.binlog to .gitignore (just lie .log)

* Added /p:ProjectReunionPipelineBuild=true to build pipeline invocation of msbuild. Moved evaluation from ProjectReunion.Build.cpp.props to ProjectReunion.props

* Fixed sprintf missing format specifier

* Fixed up DynDep tests after making the packaging/versioning changes (that broke them :P)

* Added build\override\ to .gitignore as the place of pipeline pushed/generated content not for use during local development. Refined code to match

* Deleted obsolete file

* Refined MakeAppxManifestFromTemplate ps1 invocation

* Refined build support for ProjectReunionBuildPipeline=1. Added new build step to generate dynamic dependency values during build pipeline (and not for local development). We're close...

* Incorporated feedback

* Fixed a typo
2021-04-22 20:01:12 -07:00
Howard Kapustein 83b74cc730
Rewrite DynamicDependencies tests using TAEF (#727)
* Add TAEF to DynamicDependencies tests

* Update WIL

* Update CppWinRT to latest stable

* Initial conversion to TAEF

* Fiddling with IsolationMode to simplify some mass testing

* Removed obsolete file
2021-04-17 01:28:26 +00:00
Ryan Shepherd 3bd0869d6a
Enable running BinSkim on Foundation (#600)
* Test enabling BinSkim

* Test running BinSkim on binaries

* Move BinSkim task into build jobs.

* Fix some BinSkim issues

* Don't check BinSkim during CredScan pre-analysis

* Only enable Control Flow Guard for release bits

* Disable CFG for debug builds.

* Update ProjectReunion-CI.yml for Azure Pipelines to run binskim

* Don't run binskim on Debug builds

* Refactor build changes into common .props file and bring in more projects.
2021-03-26 12:20:19 -07:00
Howard Kapustein e86588b528
MSIX Dynamic Dependencies (#393)
* Added initial skeleton of DynamicDepedencies Flat-C APIs

More expansive skeleton. Fixed some build errors

Updated per API Review

Updated to match API changes

Updated per spec

Restructured DynDep API + Test layout

New dyndep dirs

Added WinRT API. Skeleton, but get past the project-isms. Compiles clean!

Changed /W3 to /W4

Implemented most of the WinRT API

Removed CreateForUser as WinRT has no Windows.System.User to SID conversion :-(

Removed CreateForUser

Added ProjectReunion_BootstrapDLL

Added MIDL generated .h file

Added Detours

Added README.md to track when we forked Detours (since they don't provide a nuget package or like artifact we can cleanly consume)

Fixed build configurations. Tests don't build for ARM64 due to CppTest not supporting ARM64, otherwise should all be good now

Started filling out e.g. Detours initialization for ProjectReunion_DLL. Almost ready to start some testing

Added wil::DLLMain() calls to ProjectReunion_[Boostrap]DLL projects

Forgot to add new dllmain.cpp. Moved ProjectReunion_BootstrapDLL project under dev in ProjectReunion.sln's view (no change to filesystem layout)

Added test Framework packages

Got MakeMSIX working!

An absolute path sneaked into the sln. Fixed

Incorporated feedback

Moved makemsix.cmd to the tools directory

Updated makemsix.cmd to also sign the generated package

Adding tests for Bootstrap API

Added Main.Sidecar test project

Added Main.Sidecar package for testing. Updating Bootstrap API to find the framework via a dependency of the package providing the LifetimeManager implementation (e.g. Main.Sidecar). Minor build-ism/makefile (well, vcxproj) corrections

Added comment about the LifetimeManager's implementation

Fixed absolute-ish relative path that snuck in (must have been inserted via VS' Add dialog)

Fixed absolute-ish path the snuck into the .sln

Simplified nested namespace statements

Incorporated feedback

Update Main.Sidecar's appxmanifest with COM registration info and other minor corrections

Fixed header filename

Simplified namespace'ing syntax

Incorproated feedback

Moved implementation bits into MddCore namespace. Pulled remaining code and pseudocode from spec. Marked work to come with TODO, often pseudocode blocked in #if defined(TODO_Stuff)...#endif so as not to break the build; will be revised shortly as I finish the implementation and light up tests

Added FAILFAST checks in MddBootstrapInitialize() to detect multiple initialization

Added missing end-tag

Fixed Main.Sidecar's manifest and logos. Updated makemsix.cmd to copy Assets\* if exists, and make logo.png optional (should have one or the other, but probably not both)

Started to exceptionalize error handling; more to come. Bootstrap test framing in place. But...Main.Sidecar manifest creation fails because there's no typelib :-( More vcxproj hackery needed...

Added message loop to Main.Sidecar exe to solve the need-to-live-until-told-to-quit problem. Removed typelib from appxmanifest as unnecessary

Removed leftover end-tag in appxmanifest.xml

Manifest tweaks. Added Main.Sidecar2 as a WRL alternative to Main.Sidecar, which is incomplete as you can't make a pure C++/WinRT OOP Server today you need a hybrid of C++/WinRT plus WRL; Main.Sidecar's incomplete; ignoring for now while focusing on getting Sidecar2 working. Build fails because the manifest can't find the proxystub dll. The project needs to be split into 3 -- make exe, make proxystub dll, make msix

Added Main.Sidecar3*. ProxyStub mostly in place (needs dlldata.c?). More to come

Main.Sidecar3 progress

Closer to working - Main.Sidecar3.exe looks almost right

More tweaks. Almost ther

Fiddling with msix makefile. Need more structural changes

It's alive! Aliiiiiive! Cleaned up Main.Sidecar variants.

Added new files missed in previous commit

Bootstrap test almost working! Did some HRESULT->Exception conversion; more to come

Force out test thread to be MTA despite CppUnitTest 'conveniently' initializing us as STA

First blood! ShutdownWithoutInitialize() passes! And there was much rejoicing

Updated Main.Sidecar's PackagedCOM OOP Server. It works (at last)! Minor related improvements. More to come

Add .def file for the Main.Sidecar's exe

Incorporated a stand-in for ProjectReunion's Framework package so we can test the Bootstrap API before the (real) framework package is created

Small tweaks per testing

More code cleanup. Bootstrap tests pass!

Added TODOs for follow up

DUpdated samples to match API

Added DynDep tests against current API implementation (e.g. return E_NOTIMPL); update coming with API implementation. Worked out test environment issues where we need packages for product code but don't have packages with locally built binaries like real product code (chicken/egg problems).

Changed Detours initialization to FAIL_FAST if anything goes wrong. Keeping HRESULT return for future extensibility so callers are prepared to handle it

Implement dynamic package graph

Lit up Create+Delete

Dialed down the chattiness of nmake projects

Fixed up more build errors

Checkingpoint

Fixed compile errors

More checkpointing

Add DataStore

Cleaned up build warnings. Incorporated DataStore into the UT

Implemented GetApplicationData

Fixed and enhanced tests. Fixed runtime. It works. Wow. It's aliiiive....

More verification in tests. Remove leaves an extra ';', need to fix

Fixed UpdatePath to produce the same PATH after Add+Remove (i.e. same as when we started)

Changed Framework.Math.* packages to be trivial Win32 compiled dlls w/no dependencies (save for kernel32.dll) to simplify testing

Added Detour'ing functions when ProjectReunion.dll is loaded (DllMain). Fixed Detour'd GetCurrentPackageInfo* to work as expected (bit fiddling is fun for the whole family!). Expanded verifications to include the package graph (GetCurrentPackageInfo*)

Fixed test to properly #include Math.*.h

Expanded tests to verify Add(ProjectReunion) works as expected

Test refinments

Generate context ids. Extend tests to a 2-fwk scenario

Partial DataStore support

Expanded the test suite. Fixed some warnings

Expanded test suite. Validating

Cleaned up some old style syntax

Fixed warnings. Fixing lifetimeKind=FilePath|RegistryKey expiry. Revised the no-static-package-graph detection

Expanded the test suite. All tests pass!

Remvoed obsolete comment

Updated per rebase

Fixed warnings only visible in Release builds. Fixed some build issues in some flavors; working on the rest

Partial vcxproj/Build fixes - x64=OK. ARM=Fail because MIDL generates #if defined(_ARM_) but VC++ defines _M_ARM_; should we just /D_ARM_ for ARM builds? ARM64=Fail because of some problem in dlldata.c. x86=Fail because 'LNK2001unresolved external symbol _ObjectStublessClient3' in the DynamicDependency.DataStore.ProxyStub project; need to #define something (_MERGE_PROXYSTUB)? Discussing with folks who know more

Removed MinimumTargetSystem=NT100 to fix the ObjectStublessClient problem; defaults to NT60 which 'doesn't need to link with ole32 for ObjectStublessClient'. How cryptic

LifetimeKind=RegistryKey didn't properly detect if a regkey was missing vs error (outofmemory, etc)

Fixed incorrect calling convention on Detour'd functions. x86 tests detected; x64 and compiler didn't

Start of DynamicDependencyLifetimeManager - create DDLM based on Main.Sidecar

Added appextension to DDLM manifest

Fixed ProjectReunion_BootstrapDLL to use MIDL output per-configuration/architecture (not checked in an shared across)

Revised Bootstrap API to support hunt for DDLM. Refactored VS projects to play nice (gah!). Now to update the tests to match

Bootstrap tests pass! TODO: Update other tests to match and cleanup

Fixed Win32 test syntax

Fixed test (fake) Reunion framework version to be >= test LifetimeManager <sheepish grin>. Twewaking tests to play nice with DDLM

Updated Create_Add_Architectures_Current test. Streamlined bootstrap logic

More test update sync for DDLM. Likewise updated some project references

More test sync-up-age for DDLM

Changed some old HRESULT-error based code to exceptions

More exception-ification

Removed the Main.Sidecar test projects/artifacts (superseded/formalized as the DDLM)

Removed some debugging hackery

Revamped WinRT tests for parity with Win32's more extensive tests

Fixed an inverted log message check

Added MddGetIdForPackageDependencyContext() so WinRT API could work, and generally useful for debugging, troubleshooting and testability. Implemented ScopeIsSystem. Cleanup up some leftover cruft

* Preparing to remove obsolete skeletal samples

* VS updated the sln after loading

* Removed dead entry leftover from a prior bad merge

* Added start of UndockedRegFreeWinRT to ProjectReunion_DLL

* Reworked URFW #includes to cull out redudancies and consolidate with ProjectReunion existing plumbing. Switched the few WRL uses to WIL

* Incorproated URFW's DllMain setup logic. Reverted ComPtr usage to minimize forkage. Baseline looks good as a URFW-fork. Now to add AppxManifest.xml support and test

* Reworking WinRT support to better fit with Mdd + URFW architectures

* Parse appxmanifest.xml for WinRT inproc servers

* Added slightly improved error reporting to makemsix.cmd

* Grabbed updated test cert

* WinRT support in progress but running into reentrancy issues. Need to refactor the WinRT data to be independent of the PackageGraph data (can't lock non-reentrant mutex and call GetActivationFactory which in turn does a GetActivationFactory and grab the lock already locked...

* Reworking WinRT support to avoid reentrancy problems

* Checkpointing while revising the WinRT support

* Corrected AppxManifest parsing and cleaned up some error reporting

* Tweaked error logging to avoid false spew to the debug output

* Updated appxmanifest parsing to produce absolute filenames (not package-relative) as needed for use at runtime

* Fix WinRT not passing down lifetimeArtifact

* Fixed PSID user support. Fixed WinRT's GetFromId(). Added WinRT's missing GetFromIdForSystem() to complement GetFromId() to match Create+CreateForSystem. Fixed some glitches in the WinRT test code. WinRT tests are passing!

* Small fix in text code. Something's wrong with the exception throw/catch/something causing process termination in Test::DynamicDependency::Test_WinRT::Create_RegistryLifetime_NoExist and Test::DynamicDependency::Test_WinRT::Create_FileLifetime_NoExist, but I don't see what. Will ping some folks in the morning

* Doh! Catching hresult_error, not hresult! Tests now pass as expected. Huzzah!

* Removed or fixed up some dated comments. Added thread safeto to WinRTModuleManager.

* Updated WinRTPInprocModule.Load handling of m_dll to be threadsafe. Fixed GetActivationLocation to NOT override inbox (Windows.*) namespaced types - aside from the obvious badness, it also results in deadlock during MddBootstrapInitialize() as that needs Windows.Management.Deployment.PackageManager to find the DDLM packages to choose from

* Switched PackageGraphNode to use MDD_PACKAGEDEPENDENCY_CONTEXT instead of wil::unique_package_dependency_context to avoid redundant reentrancy foolishness - when we're inside MddRemovePackageDependency should should be using the WIL smart type where its destructor calls MddRemovePackageDependency... The WIL type is for use OUTSIDE the DynamicDependencies implementation, not inside it. Sheepish grin :P

* Fixed a lock reentrancy error

* Updated spec with DDLM info

* Incorporated feedback

* Incorporated feedback

* TAEF and CppUnitTest can't both be used by a project (incompatible definitions) and CppTest project uses TAEF. Removed the unnecessary CppUnitTest header from CppTest's pch.h

* Fixed build break by removing OutDir in Release|x64 flavor of DynamicDependencyLifetimeManager.ProxyStub project (no other flavor specifies this)

* Fix IDynamicDependencyLifetimeManager's Makefile.mak support for Win32 (aka x86)

* Fixed ARM builds. Partially fixed ARM64 builds (less broken; something still very wrong)

* Added References to Framework.Math.Add/Multiply projects so DynDep Test_Win32/WinRT ensure correct build order (fix failures on github CI/pipeline)

* Removed dead commented code (leftover from earlier debugging)

* Fixed a typo

* Fixed AppLifecycle namespace. Fixed project references/dependencies to not (falsely) need or try to use Microsoft.ProjectReunion.winmd

* Minor correction of test MSIX manifests

* Fixed a regression in Add. Updated Remove to ignore context=null (just like Delete ignores id=null) - NOOP rather than error

* Added #include <appmodel.h> to MddBootstrap.h to make it more self-contained

* Wired up AppLifecycleTests for Dynamic Dependencies! Genericized (and TAEF'd) the DynDep/Bootstrap test plumbing for reuse across TAEF tests; see inc\ProjectReunion.Test.*.h. Most AppLifecycleFunctionalTests pass - GetACtivatedEventArgsIsNull, GetActivatedEventArgsForProtocol_Win32 and GetActivatedEventArgsForFile_Win32 fail because AppLifecycleTestApp.exe can't find the bootstrapper. Supposed to be in the directory next to the exe; probably something wrong in AppLifecycleTestApp.vcxproj

* Updated AppLifecycle tests to use DynamicDependencies. Changed DynamicDependencyLifetimeManager.Msix to use a templated/generated manfiest to match the current build architecture. All tests are passing!

* Added files missing from previous commit. Refactored supporting test APIs to be more shrinkwrapped and easier to use (and misuse :P)

* Refactored Test APIs to be more shrinkwrapped (easier to use, harder to misuse)

* Fixed ARM64 dlldata.c compile error (Hint: -DWIN32 is needed for dlldata.c in ARM64 builds). Removed CppUnitTestFramework-based tests from ConfigurationManager for ARM+ARM64 (CppUnit doesn't support ARM)

* Added 'Install Test Certificate' step to the build pipeline. Fingers crossed it's right

* Experimenting with a fix to the pipeline adding Install Test Certificates. TBD if we use it or an another solution. This is just experimenting with AzureDevOps to determine options. Will be reverted shortly

* Fixed typo

* Moved Boostrap packages Setup/Cleanup from Class- to Method-Setup/Cleanup to fix failure during the CI/Pipeline

* Added SetupPackages to CLASS_SETUP as an experiment to fix AppLifeCycle's GetActivatedEventArgsIsNull in the github CI/Pipeline. Currently fails because tthe tests METHOD_SETUP declares a custom manifest in TEST_METHOD_PROPERTY with a dependency on the Framework package (to get at the AppLifeCycle API). Theory is adding this during ClassSetup will make the framework available on the machine so when TAEF does the pkgmgr.RegisterPackage() Deployment will be able to resolve the <PackageDependency> and the rest will happily proceed

* Shuffled some fixture work and sprinkled in an ugly smattering of printf debuggery to track down how the CI/Pipeline runs tests to figure out what the ultimate fix needs to be. Don't stare at the current code unless you've got a strong stomach <g>

* Yet more debug hackery. And the hunt continues

* More testery

* Expanded printf-debugging logic to provide more execution context (poor man's windbg !token + !peb).

* Can't 'include' a manifest when it's also Copied

* Rejiggered the GetActivatedEventArgsIsNull (UAP) test to behave as expected

* Restored IsolationLevel=Method for UAP tests

* Yet more test hackery

* Narrowing tests

* Yet more narrowing of test to identify solutions

* Modified to test fixes for the Protocol test

* Added DevCheck.cmd/ps1 to check and (if necessary) fix the development environment

* Fixed DevCheck error counting/reporting

* Moved diagnostic aids into ProjectReunion.Test.Diagnostics.h

* Added -Check... options to DevCheck (specify nothing is equivalent to -CheckAll). Improve DevCheck help. Add 'Setup TAEF Service' to build pipeline

* Updated build pipeline command's arguments to setup TAEF service to match the recent change to DevCheck's parameter syntax

* Removed accidental duped task

* Removed some old debugging code

* Disabled the AppLifecycleTests task in the CI/Pipeline as github runs as a built-in Administrator account (Elevated and not a split token) which prevents TAEF RunAs:RestrictedUser from working. Given the CI/Pipeline running as a built-in Administrator account TAEF provides no way for us to work around it thus all AppLifecycleTests are Failed or Blocked (despite passing when run locally), and DynamicDependencies doesn't support Elevation so we can have passing tests that don't verify the actual primary target environment (DynDep, MediumIL) or failing tests that block all checkins. This problem will be solved when test execution (the whole pipeline?) is moved to Helix. When that happens we can reenable these tests.

* Add temp/ to .gitignore for temporary files. Added temp\MSTest.pfx generation for inner-loop development needing signed MSIX. NOTE: This will be updated in a future PR to pull MSTest.pfx from the Azure Key Vault.

* Added temporary file to unblock development. Will be deleted when DevCheck.cmd is updated to pull MSTest.pfx from the Azure Key Vault

* updated projects to use temp\MSTest.pfx to sign packages

* Moved temp .pfx generation to BEFORE building projectreunion.sln (as it's needed to build some of the tests). Removed a debugging statement from DevCheck.ps1

* Removed investigation code from AppLifecycleTests

* Incorporated Scott's feedback
2021-03-09 00:04:43 -08:00