-
Notifications
You must be signed in to change notification settings - Fork 320
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MSIX Dynamic Dependencies #393
Merged
+32,928
−230
Merged
Changes from all commits
Commits
Show all changes
75 commits
Select commit
Hold shift + click to select a range
d33bfae
Added initial skeleton of DynamicDepedencies Flat-C APIs
DrusTheAxe 5de91e9
Preparing to remove obsolete skeletal samples
DrusTheAxe 96dfbf8
VS updated the sln after loading
DrusTheAxe ae3faa9
Removed dead entry leftover from a prior bad merge
DrusTheAxe a4a5f76
Added start of UndockedRegFreeWinRT to ProjectReunion_DLL
DrusTheAxe a0db651
Reworked URFW #includes to cull out redudancies and consolidate with …
DrusTheAxe 7764b3a
Incorproated URFW's DllMain setup logic. Reverted ComPtr usage to min…
DrusTheAxe ead89cb
Reworking WinRT support to better fit with Mdd + URFW architectures
DrusTheAxe 8f5439a
Parse appxmanifest.xml for WinRT inproc servers
DrusTheAxe 9ca48b5
Added slightly improved error reporting to makemsix.cmd
DrusTheAxe 4e97cb4
Grabbed updated test cert
DrusTheAxe c97d1e3
WinRT support in progress but running into reentrancy issues. Need to…
DrusTheAxe 0a8b9ae
Reworking WinRT support to avoid reentrancy problems
DrusTheAxe d642546
Checkpointing while revising the WinRT support
DrusTheAxe 6b08095
Corrected AppxManifest parsing and cleaned up some error reporting
DrusTheAxe 9c74ce9
Tweaked error logging to avoid false spew to the debug output
DrusTheAxe 499b83c
Updated appxmanifest parsing to produce absolute filenames (not packa…
DrusTheAxe eed1cfa
Fix WinRT not passing down lifetimeArtifact
DrusTheAxe 19fb2e5
Fixed PSID user support. Fixed WinRT's GetFromId(). Added WinRT's mis…
DrusTheAxe 3d4a274
Small fix in text code. Something's wrong with the exception throw/ca…
DrusTheAxe 26cf2ac
Doh! Catching hresult_error, not hresult! Tests now pass as expected.…
DrusTheAxe 657811c
Removed or fixed up some dated comments. Added thread safeto to WinRT…
DrusTheAxe 3c80410
Updated WinRTPInprocModule.Load handling of m_dll to be threadsafe. F…
DrusTheAxe 4676e65
Switched PackageGraphNode to use MDD_PACKAGEDEPENDENCY_CONTEXT instea…
DrusTheAxe 95223f2
Fixed a lock reentrancy error
DrusTheAxe c3b9d5b
Updated spec with DDLM info
DrusTheAxe 8f92660
Incorporated feedback
DrusTheAxe 47090ea
Incorporated feedback
DrusTheAxe 277efaf
TAEF and CppUnitTest can't both be used by a project (incompatible de…
DrusTheAxe 62bd1bd
Fixed build break by removing OutDir in Release|x64 flavor of Dynamic…
DrusTheAxe 35f9c29
Fix IDynamicDependencyLifetimeManager's Makefile.mak support for Win3…
DrusTheAxe 18e0bf6
Fixed ARM builds. Partially fixed ARM64 builds (less broken; somethin…
DrusTheAxe 6b24d95
Added References to Framework.Math.Add/Multiply projects so DynDep Te…
DrusTheAxe 47b858e
Removed dead commented code (leftover from earlier debugging)
DrusTheAxe 721d174
Fixed a typo
DrusTheAxe 35999bc
Fixed AppLifecycle namespace. Fixed project references/dependencies t…
DrusTheAxe 742d0b2
Minor correction of test MSIX manifests
DrusTheAxe 654f17b
Fixed a regression in Add. Updated Remove to ignore context=null (jus…
DrusTheAxe 133b6cc
Added #include <appmodel.h> to MddBootstrap.h to make it more self-co…
DrusTheAxe 41037b5
Wired up AppLifecycleTests for Dynamic Dependencies! Genericized (and…
DrusTheAxe 4e50a6c
Updated AppLifecycle tests to use DynamicDependencies. Changed Dynami…
DrusTheAxe 1cf0a93
Added files missing from previous commit. Refactored supporting test …
DrusTheAxe 2e78897
Refactored Test APIs to be more shrinkwrapped (easier to use, harder …
DrusTheAxe 7e255d9
Fixed ARM64 dlldata.c compile error (Hint: -DWIN32 is needed for dlld…
DrusTheAxe 1db727e
Added 'Install Test Certificate' step to the build pipeline. Fingers …
DrusTheAxe 6368bf3
Experimenting with a fix to the pipeline adding Install Test Certific…
DrusTheAxe 6820f0a
Fixed typo
DrusTheAxe d021759
Moved Boostrap packages Setup/Cleanup from Class- to Method-Setup/Cle…
DrusTheAxe e845e83
Added SetupPackages to CLASS_SETUP as an experiment to fix AppLifeCyc…
DrusTheAxe 2f1f20c
Shuffled some fixture work and sprinkled in an ugly smattering of pri…
DrusTheAxe 8d2e657
Yet more debug hackery. And the hunt continues
DrusTheAxe b7a850b
More testery
DrusTheAxe 61cf688
Expanded printf-debugging logic to provide more execution context (po…
DrusTheAxe 4358631
Can't 'include' a manifest when it's also Copied
DrusTheAxe a9d2986
Rejiggered the GetActivatedEventArgsIsNull (UAP) test to behave as ex…
DrusTheAxe 407f879
Restored IsolationLevel=Method for UAP tests
DrusTheAxe d2f82cb
Yet more test hackery
DrusTheAxe 4085e34
Narrowing tests
DrusTheAxe fd41463
Yet more narrowing of test to identify solutions
DrusTheAxe e582a9a
Modified to test fixes for the Protocol test
DrusTheAxe 246a9e7
Added DevCheck.cmd/ps1 to check and (if necessary) fix the developmen…
DrusTheAxe 6a6e2d1
Fixed DevCheck error counting/reporting
DrusTheAxe 2310a0b
Moved diagnostic aids into ProjectReunion.Test.Diagnostics.h
DrusTheAxe a24a483
Added -Check... options to DevCheck (specify nothing is equivalent to…
DrusTheAxe 1321112
Updated build pipeline command's arguments to setup TAEF service to m…
DrusTheAxe 8e7047e
Removed accidental duped task
DrusTheAxe b21240e
Removed some old debugging code
DrusTheAxe 46ea056
Disabled the AppLifecycleTests task in the CI/Pipeline as github runs…
DrusTheAxe 47bb22e
Add temp/ to .gitignore for temporary files. Added temp\MSTest.pfx ge…
DrusTheAxe 9a9b3d7
Added temporary file to unblock development. Will be deleted when Dev…
DrusTheAxe 2be7c84
updated projects to use temp\MSTest.pfx to sign packages
DrusTheAxe 2f0053b
Moved temp .pfx generation to BEFORE building projectreunion.sln (as …
DrusTheAxe 55578d1
Removed investigation code from AppLifecycleTests
DrusTheAxe fdc02d8
Incorporated Scott's feedback
DrusTheAxe 1041c55
Merge branch 'main' into user/drustheaxe/dyndep
DrusTheAxe File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
-----BEGIN CERTIFICATE----- | ||
MIILSgIBAzCCCwYGCSqGSIb3DQEHAaCCCvcEggrzMIIK7zCCBggGCSqGSIb3DQEH | ||
AaCCBfkEggX1MIIF8TCCBe0GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcN | ||
AQwBAzAOBAjIXdhD2Rgv4AICB9AEggTYfAO/jMECF0pFl2cRPoakYKpKYFPFQeUk | ||
xXCyQhYKzLf9VPOWeboOmmhzQ2CXRfMLkSc2xUPeVkha3SrhLFzTrYIJNd0Fn2JI | ||
V8EyP3hpWdV5B1EDMe0tI/uQS7oBoAGmxuna7681UpeFDskctiJTtWz0cCVLhLcK | ||
amzH+EJi5X1r120fFtGLebb6Fom2ZV0xKNJcEYxZr7cX9e9oE7DtMRZ5DVRd20V0 | ||
ovtqwLY+6TpmS+a7g95h5jSBM9hYEXq4z1S9rl42iyDvdF74pcjG21+5Z20U04Cl | ||
qiySSTcn6GlzWhJevLSEwbREbRWkYEIgE5bZFAfYfgQ3Qas1qI4JadMkcdTkRypR | ||
InrArU6hB+H/X8i/tJ2VeCs2rRTYfDqydlzoU6LormoRvbB50bup6O90yw0bsHD9 | ||
/oIE9fiSnsf8GKzS14JYKMkEpCzrqf7suYYOhV/KwRMqI2E0i5H1ZrlOmGik9vq1 | ||
RYbh6+028QXBYsBBw80VRWr5OKGyrSP8xcK2Qg7XcDB4aLJ7QPRFQLtOOwWkuVOX | ||
SwYJs6N6QXhSvQpfE0dsEgTXyJ3tP7CJuGT6aWEHkHOkwBhH2zQ6lejEMHztWdEv | ||
zXis8vGtP5AxrDVx3f055n9hsamw/0R0pnzHMXmX0OJinb3ZuA2RsevQXK0nwLk+ | ||
Ljok1wcEBVXSUD6Ywd59cB1zdD89F/Tg5zgsNZ8SPhuGUs6ctNL0ymUJMGC3571z | ||
clVVDnvM03FH4zhaZDkn4DAIrukDcQX2/6esLTzTsjGxzRTM4Y9YUAXT3C6LnctV | ||
Sr0t9JpVILYqh68MonLND0jz8H+zVe2KNj0ROwv8IBGcG8a+klt61QBTlAAG8ee9 | ||
plqPrHKI62m98upspKn3MzqKN9xVedfB1v1ijO7MZrD8juNzDrSYzO6VlyA+oMjr | ||
pXyj9CqMqPGy2/sr5tpWcYEQe8LdEWlRQBVZIdelNkIm3C6jSgSSeSxXDB8IXNt6 | ||
fHtzCTCj4s0sJqipIOwECEQaSYVJlUKSZLJTYAfdfBLDy/Lz+G6n5/e9RRvWBeJx | ||
kqnOmJhXlyZ6wZJO5Fvdv1UF/zRCPUYNyorEXkA9Z82yTJ7KdqAOOUs/fRuiNvOg | ||
PezX/qyv2ZzR9LqU0pRrVVhoFV7cyllSDxXqPcR1Iq/a6OdJ3lEc95hUk+4TIioy | ||
ch9eFVDUwHJ98K9+7G78d9zQ7VpruE1a/FK9QOoHUPbfl4qpDxSgQfm/weD+qwo+ | ||
g4jjCby4l4GM23M/dzXbMEL4ilV7BU1tkmqzcF5Zee5zBiIVWLrt/5npuVi/8ZJF | ||
N/T8n1VLaLXGHcn7dlI9pl1+88DW2EKGDXor9CuOOOeH2fi0blgRUzD2mRZXnDjE | ||
4tfB0FTyUtnN5IVsKSvTEhQnywiByFMj6jPzZ+WmEEbxs3KbQHsofModvAVS/UbW | ||
uIojhQ+kT3ncIMZeS2IHbwZTPiAbDn8adg9rFptEQkQMFSyDmHwmRN4HPDGcnQrA | ||
gcBJbNLy5unxlwG+pUfttjJaS9q+z/eWyOhLiPI98aEJYrVZ1EQwyGTSYKN9tQ+C | ||
GajShWYPkVV7rjBNQCoWUDjuokW7GkeYe2YlZ58YwH7tZb0CkDw4j4WPmSoOcUpf | ||
xRd+KVBiGv4Gd/PannezhDGB2zATBgkqhkiG9w0BCRUxBgQEAQAAADBdBgkrBgEE | ||
AYI3EQExUB5OAE0AaQBjAHIAbwBzAG8AZgB0ACAAUwB0AHIAbwBuAGcAIABDAHIA | ||
eQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByMGUGCSqGSIb3 | ||
DQEJFDFYHlYAUAB2AGsAVABtAHAAOgA2ADIAOQBhADgAMQBmADQALQA0AGUAMgAz | ||
AC0ANABjAGQAMgAtADgAZAAxADMALQA2ADEAZQBjAGUANgBmADEAMwA5AGIAODCC | ||
BN8GCSqGSIb3DQEHBqCCBNAwggTMAgEAMIIExQYJKoZIhvcNAQcBMBwGCiqGSIb3 | ||
DQEMAQMwDgQIu/cm7lKUSWsCAgfQgIIEmIsUvJdZcNiVPybOD6v87I/BFOOg6S0K | ||
MV+hJdk9h7yGbIMkYtCW9B1jIHp07Mr/5ANGczkXgkqtPhz2fRqQSzg3LKZJOxpP | ||
2zPjRxvWLT06gEIDKZRbvNf+vesr+hw0WomhBHlzXV54aDgVVECEFZaHZnI1TgiR | ||
NwsnjXliMUkwQefMHfkFBYHv42twhAHHYdiA67Z3hQAMybASPiLeP6zV1MKuuzth | ||
qBwysrPmI3ldBCoAATyE/ythyby9/6NWWODXOy6+ooeMto2eyk+9V1Je3PVW8OKX | ||
bljHnrB8eJIEqM9WxV+Vrqk/Hxhq3+Q/vCm1PKQH+5EKkMQIyDdIrdtMvkR8l9AZ | ||
P51G7V9/ZUF3fn4m2HCKytkBWZBJI9yJXa+6FCZM2fZRxDdKKfXRcde7+0AqTWRr | ||
rSNOhr0cu2ol0bcHKHQHOKjKDNPoDQrVXo6uw+Zhl5+Ly8d50K8zOlqZrru7GpLj | ||
xX/VaVdB+fVpjtZIjGA14URrHux0StqGr7Ex7a5Fp4QB6eHkZX35bGO4ME7oZRHL | ||
QVDXKDEqhn8BXYE0rKl1F+iTQqkxL72YbiBRu0jxyGSzifX8h4oMijG5PfRJgEkP | ||
RLYRjJjxFFKZKJ8E2y5Du4xM0lYdU2td3iQyUkSip+1WVV/88T+ysiWYIa1dp+qt | ||
FNiXxOhriUBJ3OuIcgLNJZ1MaDwYHe2yhr4g8AL5xI9fnbjwy3TSHclLGb5hfT5u | ||
bFYPAWGvmxwVP2ntgnpjWO86AIl0fAMwHQern2CgnfomhEr7L/SLlAbqdrbD6t29 | ||
K94Xfacf6CphD8xgsMRKqG7ZIqOSbvQzSm3/810eLbL3ubEl38w33Kj1JWVHJaSN | ||
HH5NQfsJm6XrL3aDAVTENVqdTcW/Qg9n9XR/rVgyMbFXpfigWPBlO9aOUravzez/ | ||
bdsyLohkaaevbj4adqkCMkTYddIebdBoo/+FyAb4uShV/XaO0W+zs9xvqNBXXDf9 | ||
XJJpJOPn9BK0NTxbb8eA1CwM7dMZNqdoLxGjrc0gRew41ApTUQ+HJDB4+qQxn9Oy | ||
1ZREip2Uw1poxgBlNUlVGq5B5JGrZlqVtaJQygCSNHLWvXxUspF36uWQ6z5dqlO1 | ||
wK0aCziSLsY/gaeqWHvzTEHZvv5yQK3vvMiKT++wgOiiKijNhEoflyoU3hgu1jUR | ||
iNhbnIgByIiJkXdnC7gv2UJKvLlIMT45snnmUvmqvRryowqXZ75r7XezmseJ4I21 | ||
Heamung4U65fojsE1jURlcpt87x33a5coDzluCMTZprODLQZbBj39G4pwE3MKQXh | ||
6Im1O9qR4P2sgMx6lluRK94dkkn8+MvlK1GOso5T6HTwrkGgK1Sfpiz50SmbULx3 | ||
kiA1OVmraipVOrXD5pmT2AFt/vjkWJZMQgis2lOmTpuUz6jfEBUvfXvTXSk48KhG | ||
XRnq60R+ABsiW5FBrbwwGZG3hOhVoBdwhlQ5bBw7JTnGNhSPtvHPA7E3ZwhDxpn3 | ||
4UbIprfWVLrR9BbWayvt34JIN8WZkjH7bwhnZo3Q8yfzN1nk8+gRYkwjgky49UWg | ||
9TA7MB8wBwYFKw4DAhoEFG8Ifc9pvQshFzC3cnRPBTfW+FoHBBT2b3CHfQO0hexn | ||
tBf4/CkiLemo8AICB9A= | ||
-----END CERTIFICATE----- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am adding credscan to the pipeline which is going to cause the pipeline to break because of this certificate. That means we are going to have to remove the pfx and the cer from this repo. We can use Azure Key Vault which we have already setup to place a certificate file in the right place for running the tests.
But for running the tests locally, we should set up a script to run before running the tests to create and install the certificate.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have a branch ready that calls into Azure key vault and writes the cert to a file
https://github.com/microsoft/ProjectReunion/compare/user/kythant/RemovePfx
The successful run from it
https://dev.azure.com/ms/ProjectReunion/_build/results?buildId=142063&view=logs&j=f34e22ea-0873-5cfe-9808-56c0b9fb9988
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Recommend using azuresigntool and skipping all the file-based operations completely. (Example in production https://github.com/File-New-Project/EarTrumpet/blob/master/.github/workflows/main.yml#L327-L328). This simplifies the workflow and resolves credscan concerns.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bit offtopic, but how would that be used to sign APPX packages? If you're using a wapproj, you currently directly put a certificate thumbprint in the project properties and the build system invokes signtool for you.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I highly recommended you forget that feature exists 😋 and pass in
/p:AppxPackageSigningEnabled=false
when building Packaging projects. Then sign the artifacts manually. Thanks for asking as that's an important flag @kythant will need!(I edited my main.yml a few comments above to point to our appx signing and not an executable image.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kythant you can't remove MSTest.cer/pfx without breaking all not-packaged inner-loop development. DynDep's tests need signed test packages during development (inner-loop), as will every other developer working on not-packaged tests.
MSTest.cer/pfx shouldn't be used to sign real packages and you may even have alternative solutions for tests executed during the CI/Pipeline but how do you expect inner-loop testing to happen?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pre-build script in the vcxproj to generate a certificate file if it doesn't exist?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding a cert requires admin privilege.
This is generally something devs do once up front - just like they install VS, the needed Windows SDKs, etc. Requiring an admin prompt for a 1-time thing isn't unreasonable. Requiring it every time you hit F5 is...unwise. We do NOT want devs routinely forced to use an admin prompt to do development. To compound the problem, DynDep doesn't support elevation so running VS elevated is also counter-productive.
Yes it's possible to add a project "IF not certstore.Exists(ReunionMSTest) { GenerateCert(); Run(elevated, "certstore.exe -addcert TrustedPeople blah.cer"); } but that's not free or seamless. It's desirable for inner-loop to be fast and friction-free. Adding 1-time setup work to inner-loop is the wrong direction.
Remember, this is something every non-packaged test will require. Having the build automagically JustDoIt(TM) may be reasonable for CI/Pipeline but not for day to day development.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AFAIK, it shouldn't need admin to add it in the user store instead of the machine store, and that's how VS does it (it's able to create and register certs for sideloading MSIX without admin)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you referring to when you debug a VS packaged project? F5?
That calls
packageManager.RegisterPackageAsync(...,DeploymentOptions=DevelopentMode)
resulting in a package with Package.SignatureKind=Developer, or more specifically GetStagedPackageOrigin()=DeveloperUnsigned.DeploymentOptions.DevelopmentMode has restrictions. Even if you can register a framework package this way (not entirely positive; I'm checking) it's generally not recommended. It can also lead to some odd test problems e.g. one test runs as a user, registers the framework then fails or you're debugging and stop before any cleanup. Tests running as another user (say, you) will fail to register. I'd prefer to make it harder to cause problems down the road, not easier.