Skip to content
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

Remove scope filter from being applied to portables #2383

Merged
merged 11 commits into from
Jul 28, 2022

Conversation

ryfu-msft
Copy link
Contributor

@ryfu-msft ryfu-msft commented Jul 27, 2022

If the --scope argument is present when installing a portable package, the command will fail if the incorrect scope is not present for a portable installer. This is the wrong behavior as the scope field in the manifest should not apply to portable packages.

To resolve this issue, I have removed the applied scope filter if the installerType is portable (and also for msix).

Changes:

  • Bypass scope filter if the installertype is portable (or msix) using a semantic function
  • Added an admin requirement to portable install if the scope is Machine
  • Fixed several discrepancies in the portableAppUserRoot and portableAppMachineRoot naming/documentation
  • Added unit and E2E tests to verify that portable install works as expected when scope arguments are provided.
Microsoft Reviewers: Open in CodeFlow

@ryfu-msft ryfu-msft requested a review from a team as a code owner July 27, 2022 18:31
src/AppInstallerCLICore/Workflows/ManifestComparator.cpp Outdated Show resolved Hide resolved
src/AppInstallerCommonCore/Manifest/ManifestCommon.cpp Outdated Show resolved Hide resolved
src/AppInstallerCommonCore/Runtime.cpp Outdated Show resolved Hide resolved
@ghost ghost added the Needs-Author-Feedback Issue needs attention from issue or PR author label Jul 27, 2022
@ghost ghost removed the Needs-Author-Feedback Issue needs attention from issue or PR author label Jul 28, 2022
src/AppInstallerCLICore/Workflows/ManifestComparator.cpp Outdated Show resolved Hide resolved
@@ -634,6 +659,7 @@ namespace AppInstaller::CLI::Workflow
{
context <<
EnsureSymlinkCreationPrivilege <<
EnsureRunningAsAdminForMachineScopeInstall <<
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems like theres a duplicated call here, but only in certain scenarios. When dev mode is disabled, it checks for admin to ensure synlink creation, then checks for admin again if running a machine scope install.

I’m sure that this will work, I’m just wondering if maybe theres a better way to handle checking the elevation level?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is less efficient, but EnsureSymlinkCreationPrivilege is planned to be temporary, so it is easier to keep it separated.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EnsureSymlinkCreationPrivilege is meant to be a temporary check to handle the special case where a user may have developer mode off. I expect that this check will be removed once we fully address this issue in 1.4, so I decided to keep these as separate checks for better clarity and cleanup in the near future.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Guess I needed to refresh the page :)

@ryfu-msft ryfu-msft merged commit a91559d into microsoft:master Jul 28, 2022
@ryfu-msft ryfu-msft deleted the scopeBug branch July 28, 2022 15:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants