Giter Site home page Giter Site logo

microsoft / winget-cli Goto Github PK

View Code? Open in Web Editor NEW
22.1K 306.0 1.4K 36 MB

WinGet is the Windows Package Manager. This project includes a CLI (Command Line Interface), PowerShell modules, and a COM (Component Object Model) API (Application Programming Interface).

Home Page: https://learn.microsoft.com/windows/package-manager/

License: MIT License

C++ 58.53% C 14.27% CMake 0.52% Makefile 0.24% M4 0.02% Shell 0.14% PowerShell 13.13% C# 11.33% Dockerfile 0.01% HTML 0.27% CSS 0.02% JavaScript 0.20% SAS 0.01% Ada 0.53% Assembly 0.10% Pascal 0.45% DIGITAL Command Language 0.16% Roff 0.05% Module Management System 0.01% Perl 0.02%
windows package-manager winget command-line

winget-cli's Introduction

WinGet Icon Windows Package Manager

WinGet Client

winget install wingetcreate

If you are new to the Windows Package Manager, you might want to Explore the Windows Package Manager tool. The client has access to packages from two default sources. The first is "msstore" the Microsoft Store (free Apps rated "e" for everyone). The second is "winget" the WinGet community repository.

Note: Group policy may be configured and modify configured sources. Run winget --info to see any configured policies.

Installing The Client

Note: The client requires Windows 10 1809 (build 17763) or later at this time. Windows Server 2019 is not supported as the Microsoft Store is not available nor are updated dependencies. It may be possible to install on Windows Server 2022, this should be considered experimental (not supported), and requires dependencies to be manually installed as well.

Microsoft Store [Recommended]

The client is distributed within the App Installer package.

Development Releases

There are two methods to get development releases:

Note: It may take a few days to get the updated App Installer after you receive e-mail confirmation from joining the Windows Package Manager Insider program. If you decide to install the latest release from GitHub, and you have successfully joined the insider program, you will receive updates when the next development release has been published in the Microsoft Store.

Once you have received the updated App Installer from the Microsoft Store you should be able to execute winget features to see experimental features. Some users have reported issues with the client not being on their PATH.

Manually Update

The same Microsoft Store package will be made available via our Releases. Note that installing this package will give you the WinGet client, but it will not enable automatic updates from the Microsoft Store if you have not joined the Windows Package Manager Insider program.

Note: You may need to install the VC++ v14 Desktop Framework Package. This should only be necessary on older builds of Windows 10 and only if you get an error about missing framework packages.

Troubleshooting

Please read our troubleshooting guide.

Administrator Considerations

Installer behavior can be different depending on whether you are running winget with administrator privileges.

  • When running winget without administrator privileges, some applications may require elevation to install. When the installer runs, Windows will prompt you to elevate. If you choose not to elevate, the application will fail to install.

  • When running winget in an Administrator Command Prompt, you will not see elevation prompts if the application requires it. Always use caution when running your command prompt as an administrator, and only install applications you trust.

Build your own

You can also build the client yourself. While the client should be perfectly functional, we are not ready to provide full support for clients running outside of the official distribution mechanisms yet. Feel free to file an Issue, but know that it may get lower prioritization.

Build Status

Build Status

Windows Package Manager Release Roadmap

The plan for delivering next Windows Package Manager releases is described included in our discussions, and will be updated as the project proceeds.

Overview of the Windows Package Manager

The Windows Package Manager is a tool designed to help you quickly and easily discover and install those packages that make your PC environment special. By using the Windows Package Manager, from one command, you can install your favorite packages:

winget install <package>

Overview

Client Repository

This winget-cli repository includes the source code designed to build the client. You are encouraged to participate in the development of this client. We have plenty of backlog features in our Issues. You can upvote the ones you want, add more, or even get started on one.

Sources

The client is built around the concept of sources; a set of packages effectively. Sources provide the ability to discover and retrieve the metadata about the packages, so that the client can act on it.

Building the client

  1. Clone the repository
  2. Configure your system, please use the configuration file. This can be applied by either:
    • Dev Home's machine configuration tool
    • WinGet configuration. If you have the experimental feature enabled, run winget configure .configurations/configuration.dsc.yaml from the project root so relative paths resolve correctly

Prerequisites

  • Windows 10 1809 (17763) or later
  • Developer Mode enabled
  • Visual Studio 2022
    • Or use winget to install it ;) (although you may need to adjust the workloads via Tools->Get Tools and Features...)
  • The following workloads:
    • .NET Desktop Development
    • Desktop Development with C++
    • Universal Windows Platform Development
  • Windows SDK for Windows 11 (10.0.22000.194)

    Note: You can also get it through winget install Microsoft.WindowsSDK --version 10.0.22000.832 (use --force if you have a newer version installed) or via Visual Studio > Get Tools and Features > Individual Components > Windows 10 SDK (10.0.22000.0)

  • The following extensions:

Building

Open winget-cli\src\AppInstallerCLI.sln in Visual Studio and build. We currently only build using the solution; command line methods of building a VS solution should work as well. After the build finishes, deploy the solution from Build > Deploy Solution. You can then run the client from the command line using wingetdev.

Credit

We would like to thank Keivan Beigi (@kayone) for his work on AppGet which helped us on the initial project direction for Windows Package Manager.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com. More information is available in our CONTRIBUTING.md file.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information, please refer to the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Data/Telemetry

The winget.exe client is instrumented to collect usage and diagnostic (error) data and sends it to Microsoft to help improve the product.

If you build the client yourself the instrumentation will not be enabled and no data will be sent to Microsoft.

The winget.exe client respects machine wide privacy settings and users can opt-out on their device, as documented in the Microsoft Windows privacy statement here. In addition, you may also explicitly block telemetry using settings

In short to opt-out, do one of the following:

Windows 11: Go to Start, then select Settings > Privacy & security > Diagnostics & feedback > Diagnostic data and unselect Send optional diagnostic data.

Windows 10: Go to Start, then select Settings > Privacy > Diagnostics & feedback, and select Required diagnostic data.

See the privacy statement for more details.

winget-cli's People

Contributors

amelbawa-msft avatar ashpatil-msft avatar chausner avatar denelon avatar felipecrs avatar florelis avatar fzanollo avatar hackean-msft avatar imjoakim avatar jamespik avatar jedieaston avatar johnmcpms avatar jontab avatar jsoref avatar kevinlams avatar madhusudhan-msft avatar mapill-msft avatar mdanish-kh avatar microsoftopensource avatar msftrubengu avatar palenshus avatar rdmaclachlan avatar ryfu-msft avatar sachintamsft avatar spectershell avatar sreadingmsft avatar trenly avatar vedantmgoyal9 avatar wdhdev avatar yao-msft avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

winget-cli's Issues

Support for PWAs

Description of the new feature/enhancement

I'd like to be able to Progressive Web Applications with the Windows Package Manager.

Proposed technical implementation details (optional)

Client Verbosity Settings

Description of the new feature/enhancement

As a power user I would like to be able to get additional data about what the client is doing so I can be informed.

Proposed technical implementation details (optional)

Note:
The verbosity levels might be "silent", "default", and "verbose".
There should also be a setting or mechanism to support screen readers
Progress bars don't work well for screen reader applications

Be responsible on metered networks

Metered networks should be taken into consideration when installing large packages.

Proposed technical implementation details (optional)

Support for installation of portable/standalone apps

Description of the new feature/enhancement

There are programs like starship or aria2, which only provide portable archived files.
There maybe also some apps just releases an standalone .exe file.
Although we can request they to build an msi/msix package, it will be more convenient if we support to install them directly.

For the portable apps, the install may mean extract the archive to Program Files, then create a shim-like redirection for the program, put it into a specific directory, and add the directory to PATH.

Related:

Edited by @denelon

Support UNC source

As an enterprise IT administrator I want to be able to have a UNC source so I don't have to stand up APIs or web services to provide a private repository to my users.

This may mean that the repository is simply a "manifests" folder, and the client needs to traverse the structure to pull in the information in order to support the "search" command.

Support Delivery Optimization

Some enterprise tools integrate with delivery optimization (DO) to minimize network traffic. We need to be good citizen and be DO aware.

As an enterprise administrator I want to have the benefit of reduced traffic to the Internet so I can reduce the cost and load on my network.

Proposed technical implementation details (optional)

Provide the ability to use DO when downloading resources from the Internet when using the Windows Package Manager.

Edited: description.

Create manifest wizard

I want a wizard to aid in the creation of a manifest.

Initially this could work like the PowerShell script in the Tools directory. The longer term vision would be depending on the installer type.

If I have an MSIX installer, it likely contains the majority of the metadata so a user wouldn't have to provide much more than the URL to the installer.

Support for apps installed outside of the Package manager

I want to use the winget client as my tool for configuring all apps on my PC. Even if I have not installed the app through winget I can list / update / uninstall and repair the app.

By passing a command line argument to the winget, the winget will query the control panel for all ARP entries and all Windows Store and Sideloaded apps.

winget list --win32
winget update --win32
winget uninstall --win32

*--win32 is a placeholder name.

Multiple Languages in one manifest

Description of the new feature/enhancement

I want to be able to submit a single manifest for an application that has support for multiple languages.

Proposed technical implementation details (optional)

The client should default to the locale in my OS, but I should be able to override via the command line.

Multiple Installers in one manifest

Description of the new feature/enhancement

As a developer I want to submit a manifest with multiple installers so I don't have to choose which installer type is available for a given version of my software.

Proposed technical implementation details (optional)

winget update

Description of the new feature/enhancement

winget install xyz seems to install an app even if that same version is already installed.
There must a distinction for a new install vs an update of an existing version to a newer one.

  • winget update winget # updates winget to the latest version
  • winget update app1, app2 # updates app1 and app2 to their latest versions in repo
  • winget update python==3.8.1 # updates currently install python to version 3.8.1, if it exists in the repo
  • winget update --all # updates all existing packages to their latest version

Config files to support silent installation

Some installers require a configuration file to specify parameters necessary for silent installation.

The manifest could be extended to support the data needed in a config file and could be created at install time on the local machine, or a file could be provided in addition to the manifest with some kind of pointer.

Change default sort order on search.

I would like the ability to customize the sort order when multiple results are returned.

In addition to arguments like winget search _foo_ -sort Name, I would like settings to specify my default preferences.

winget list -sort Version

In addition, I would like to have settings to handle results from multiple sources so they can be displayed in a coalesced manner vs. the default where we sort by source based on their order in winget source list.

Note: The current sort order is based on the fields matched for search. This may vary by source as REST sources are allowed to return results in any order they prefer.

Discord does not install

Brief description of your issue

When trying to install Discord via winget, installer throws an error about lack of permission to copy file. Doesn't matter if this is done via Windows Terminal launched as admin or not (in the latter case, error left in console is different and only second error from attached screenshot is displayed).

error

Steps to reproduce

  1. Launch Windows Terminal as admin
  2. Issue winget install Discord command

Expected behavior

Discord installs properly

Actual behavior

Installation fails

Environment

Windows Package Manager v0.1.41331
Windows: Windows.Desktop v10.0.19041.264
Package: Microsoft.DesktopAppInstaller v1.0.41331.0

Prior to Windows 10.0.17763, installing an MSIX through winget succeeds with 0%, but does not install

Environment

As described in title

Steps to reproduce

winget install EarTrumpet

Or any other application that is an MSIX not published by Microsoft.

Expected behavior

Application installs.

Actual behavior

Installation reports no progress or 0%, then claims success. Application is not installed.

There was a policy check for Centennial processes deploying a package that required the publisher to match. This policy was relaxed in 17763. The cause of the fake success is unknown, but the user experience is bad.

Uninstall an installed App

As a user I want to be able to use winget to uninstall a package so I don't have to go through the Add/Remove software UX.

Experimental Feature
winget uninstall <package> - uninstalls the specified package.
winget uninstall -? - displays help for the uninstall command.

Note: uninstall depends on list also being enabled.

winget features - displays all experimental features and their status
winget settings - launches settings.json to configure settings like experimental features

Note:
There are limitations about how programs get installed and whether or not that binary supports uninstall. This may also need to be supported in the manifest with new key(s) and or syntax.

Edited: experimental status

Install Microsoft Store Apps

From MVP Summit feedback:

Will there be a way to automate installation of Store apps? I have a script I run to install my programs after Windows reinstall with Chocolatey, but I have to install Microsoft Store apps manually afterwards, which is a bit annoying.

Support different release channels [released, beta, alpha]

I'd like to be able to use the package manager for different channels of software. This could be beta, or unstable branches, or other kinds of constructs.

Semantic versioning (https://semver.org) has a specification we may follow for pre-release software.
Microsoft has channels.
Many open source projects have branches.

Note: Some packages support "side by side" install where a stable and a pre-release version may both be on a system at the same time. These are not considered release channels in the Windows Package Manager, but they are treated as different packages. Release channels are considered in the context of the Windows Package Manager for packages that do not support "side by side" installation.

Installed Packages Snapshot

As a developer I want to take a snapshot of the packages installed on my machine so I can sync that setup on another machine.

Effectively the initial ask was for something that would allow one to define a desired state based on what is currently installed and then configure another machine to match that state

Note:
This is a much more complicated scenario to fully resolve.
One of the concerns is that the manifest file could have been altered from the time one user installed it until the second one did

The challenge is making sure the subsequent users could be informed if something was different from what was available or originally installed on the first machine.

Repository REST API

I'd like to be able to have a repository accessible via REST APIs rather than a signed MSIX package.

The API will need a full design. This will also have an impact on client behavior. The MSIX index package can become a backup mechanism if the APIs are offline, or the client is unable to connect.

Notes:
The client needs to be able to get the list of packages to enable "search"
The client needs to be able to get the manifest so it can "install"
This implies that the client will build a local cache of packages after retrieving the list so they can perform a local search.
In the future we may create a web based search API (TBD).
The contents of the Microsoft Community Package manager should be available via this API once it's built.

User vs. System installation (non MSIX)

As a user I want to be able to specify whether the software installs for me or any user on my machine.

Note:
The manifest needs to support specifications for both.
The client should default to user mode "out of the box" if no preference is supplied in the manifest and both are possible.
The user should be able to specify user or machine based installation with the client regardless of the manifest default if both are possible.

Is it a typo in README.md?

This repository contains the source code for the Window Package Manager Client (aka winget).

Is s of Windows Package Manager Client missing?

Support for package dependencies

Description of the new feature/enhancement

Some packages like IDEs require the language to be installed separately. Most installers take care of their own dependencies, but there should be a way to support this situation. Maybe it's just a package collection, but we would still need to figure out the right order to install packages like this

Proposed technical implementation details (optional)

https://github.com/microsoft/winget-cli/blob/master/doc/specs/%23163%20-%20Dependencies.md


Edited: Added link to specification document.

Proxy options support

Description of the new feature/enhancement

Something like:

winget install git.git --proxy="http://127.0.0.1:2345"

This will make winget download git through the proxy server.

Support a collection of packages

As a developer I want to be able to specify a set of packages for the Package Manager to install.

Ideally this would allow a single file to be able to drive a more complex scenario that supports installing multiple packages. The shapshot ask would likely output it's results in this form. The collection could reference multiple manifests in one or more repositories. Initially the scope might need to be reduced to a single repository. If that's the case, this Issue should be split.

Winget command missing from server 2019

Winget command missing from server 2019

Environment

[winget --info]
Windows Package Manager v0.1.41331 Preview
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.server 17763.1
Package: Microsoft.DesktopAppInstaller v1.0.41331.0


Any other software?

Steps to reproduce

  1. Install the latest Windows Package Manager
  2. I cannot find the Windows Package Manager though I have it installed.

Expected behavior

Winget should be available from the command line.

Actual behavior

Winget is not available from the command line.
The only way to get it to work,

  1. enable developer mode in settings
  2. execute the following powershell command
    Get-AppxPackage Microsoft.DesktopAppInstaller | %{ Invoke-CommandInDesktopPackage -PackageFamilyName $_.PackageFamilyName -AppId winget -Command C:\Windows\System32\cmd.exe -PreventBreakaway }
  3. navigate to the app package and run AppInstallerCli.exe

winget has incorrect capitalization in --help

Environment

[winget --info]
Windows Package Manager v0.1.41331 Preview
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.19619.1000
Package: Microsoft.DesktopAppInstaller v1.0.41331.0

Any other software?

n/a

Steps to reproduce

winget --help

Actual behavior

notice string reads:
WinGet command line utility enables installing applications from the command line.

Expected behavior

Should read
The winget command line utility enables installing applications from the command line.

Support installers that require elevated priveleges

As a user I want graceful behavior when I try to install an application that requires admin privileges and I'm in user mode.

Notes:
Some applications don't gracefully behave when installation is initiated in user mode and admin mode is required.
We should consider an attribute in the Manifest (like SupportedMode: Admin, RequiresAdmin: true, or something like that)
When the value is specified, the client should not try to perform the install if it's not elevated and the user should be informed.

There should be some automation added when we validate the manifest after PR to check and see if the attribute should have been added.

The client should be able to validate a manifest that has the attribute.

Proposed technical implementation details (optional)

Cannot install VSCode on Win10/ARM64 device

Environment

Windows 10 20129 on ARM64 device.

winget --info
Windows Package Manager v1.0.41271.0
Copyright (c) Microsoft Corporation. All rights reserved.

Links:
  Privacy Statement: https://aka.ms/winget-privacy
  License agreement: https://aka.ms/winget-license
  3rd Party Notices: https://aka.ms/winget-3rdPartyNotice
  Homepage:          https://aka.ms/winget

Any other software?

Office, VS2019, Windows Terminal, WSL + Ubuntu, git

Steps to reproduce

  1. Open Windows Terminal in PowerShell 7 profile
  2. Enter winget search vscode - VSCode is found
  3. Enter winget install vscode

Expected behavior

VSCode installs as usual

Actual behavior

VS unable to install. Displays error No installers are applicable to the current system
image

Note

⚠ ARM64 devices can install & run most x86 apps & tools if no ARM64 native app is available.

7zip install fails

Brief description of your issue

Steps to reproduce

winget install 7zip

Expected behavior

7zip gets installed

Actual behavior

7zip install fails

The app downloads and triggers the UAC dialog, I hit okay and it fails. I assume it is because 7zip was already installed

PS C:\Users\Stan> winget install 7zip
Found 7Zip [7zip.7zip]
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://www.7-zip.org/a/7z1900-x64.msi
  ██████████████████████████████  1.66 MB / 1.66 MB
Successfully verified installer hash
Installing ...
Installer failed with exit code: 1603

Environment

[winget --info]
Windows Package Manager v0.1.41331 Preview
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.19041.264
Package: Microsoft.DesktopAppInstaller v1.0.41331.0

Links:
  Privacy Statement: https://aka.ms/winget-privacy
  License agreement: https://aka.ms/winget-license
  3rd Party Notices: https://aka.ms/winget-3rdPartyNotice
  Homepage:          https://aka.ms/winget
=== Logging started: 19.05.2020  18:16:33 ===
Action start 18:16:33: INSTALL.
Action start 18:16:33: AppSearch.
Action ended 18:16:33: AppSearch. Return value 1.
Action start 18:16:33: FindRelatedProducts.
Action ended 18:16:33: FindRelatedProducts. Return value 0.
Action start 18:16:33: ValidateProductID.
Action ended 18:16:33: ValidateProductID. Return value 1.
Action start 18:16:33: CostInitialize.
Action ended 18:16:33: CostInitialize. Return value 1.
Action start 18:16:33: FileCost.
Action ended 18:16:33: FileCost. Return value 1.
Action start 18:16:33: CostFinalize.
Action ended 18:16:33: CostFinalize. Return value 1.
Action start 18:16:33: MigrateFeatureStates.
Action ended 18:16:33: MigrateFeatureStates. Return value 0.
Action start 18:16:33: InstallValidate.
Action ended 18:16:33: InstallValidate. Return value 1.
Action start 18:16:33: RemoveExistingProducts.
Action ended 18:16:33: RemoveExistingProducts. Return value 0.
Action start 18:16:33: InstallInitialize.
Action ended 18:16:33: InstallInitialize. Return value 1.
Action start 18:16:33: ProcessComponents.
Action ended 18:16:33: ProcessComponents. Return value 1.
Action start 18:16:33: UnpublishFeatures.
Action ended 18:16:33: UnpublishFeatures. Return value 1.
Action start 18:16:33: RemoveRegistryValues.
Action ended 18:16:33: RemoveRegistryValues. Return value 1.
Action start 18:16:33: RemoveShortcuts.
Action ended 18:16:33: RemoveShortcuts. Return value 1.
Action start 18:16:33: RemoveFiles.
Action ended 18:16:33: RemoveFiles. Return value 0.
Action start 18:16:33: InstallFiles.
Action ended 18:16:33: InstallFiles. Return value 1.
Action start 18:16:33: CreateShortcuts.
Action ended 18:16:33: CreateShortcuts. Return value 1.
Action start 18:16:33: WriteRegistryValues.
Action ended 18:16:33: WriteRegistryValues. Return value 1.
Action start 18:16:33: RegisterUser.
Action ended 18:16:33: RegisterUser. Return value 0.
Action start 18:16:33: RegisterProduct.
Action ended 18:16:33: RegisterProduct. Return value 1.
Action start 18:16:33: PublishFeatures.
Action ended 18:16:33: PublishFeatures. Return value 1.
Action start 18:16:33: PublishProduct.
MSI (s) (04:1C) [18:16:33:274]: Product: 7-Zip 19.00 (x64 edition) -- Error 1316. The specified account already exists.


Error 1316. The specified account already exists.

Action ended 18:16:33: PublishProduct. Return value 3.
Action ended 18:16:33: INSTALL. Return value 3.
Property(S): INSTALLDIR = C:\Program Files\7-Zip\
Property(S): UpgradeCode = {23170F69-40C1-2702-0000-000004000000}
Property(S): LicenseAccepted = 1
Property(S): Installed = 00:00:00
Property(S): Privileged = 1
Property(S): MyLang = C:\Program Files\7-Zip\Lang\
Property(S): ProgramFiles64Folder = C:\Program Files\
Property(S): TARGETDIR = K:\
Property(S): PMenu = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\7-Zip\
Property(S): ProgramMenuFolder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\
Property(S): SourceDir = C:\Users\Stan\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\TempState\WinGet\
Property(S): Manufacturer = Igor Pavlov
Property(S): ProductCode = {23170F69-40C1-2702-1900-000001000000}
Property(S): ProductLanguage = 1033
Property(S): ProductName = 7-Zip 19.00 (x64 edition)
Property(S): ProductVersion = 19.00.00.0
Property(S): MSIRMSHUTDOWN = 2
Property(S): ALLUSERS = 1
Property(S): ARPURLINFOABOUT = http://www.7-zip.org/
Property(S): ARPHELPLINK = http://www.7-zip.org/support.html
Property(S): ARPURLUPDATEINFO = http://www.7-zip.org/download.html
Property(S): DefaultUIFont = WixUI_Font_Normal
Property(S): WixUI_Mode = FeatureTree
Property(S): WixUI_WelcomeDlg_Next = LicenseAgreementDlg
Property(S): WixUI_LicenseAgreementDlg_Back = WelcomeDlg
Property(S): WixUI_LicenseAgreementDlg_Next = CustomizeDlg
Property(S): WixUI_CustomizeDlg_BackChange = MaintenanceTypeDlg
Property(S): WixUI_CustomizeDlg_BackCustom = SetupTypeDlg
Property(S): WixUI_CustomizeDlg_BackFeatureTree = LicenseAgreementDlg
Property(S): WixUI_CustomizeDlg_Next = VerifyReadyDlg
Property(S): WixUI_VerifyReadyDlg_BackCustom = CustomizeDlg
Property(S): WixUI_VerifyReadyDlg_BackChange = CustomizeDlg
Property(S): WixUI_VerifyReadyDlg_BackRepair = MaintenanceTypeDlg
Property(S): WixUI_VerifyReadyDlg_BackTypical = SetupTypeDlg
Property(S): WixUI_VerifyReadyDlg_BackFeatureTree = CustomizeDlg
Property(S): WixUI_VerifyReadyDlg_BackComplete = SetupTypeDlg
Property(S): WixUI_MaintenanceWelcomeDlg_Next = MaintenanceTypeDlg
Property(S): WixUI_MaintenanceTypeDlg_Change = CustomizeDlg
Property(S): WixUI_MaintenanceTypeDlg_Repair = VerifyRepairDlg
Property(S): WixUI_MaintenanceTypeDlg_Remove = VerifyRemoveDlg
Property(S): WixUI_MaintenanceTypeDlg_Back = MaintenanceWelcomeDlg
Property(S): WixUI_VerifyRemoveDlg_Back = MaintenanceTypeDlg
Property(S): WixUI_VerifyRepairDlg_Back = MaintenanceTypeDlg
Property(S): ErrorDialog = ErrorDlg
Property(S): SecureCustomProperties = OLDERVERSIONBEINGUPGRADED
Property(S): MsiLogFileLocation = C:\Users\Stan\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\TempState\WinGet\7zip.7zip.19.0.0.log
Property(S): PackageCode = {23170F69-40C1-2702-1900-000002000000}
Property(S): ProductState = 5
Property(S): ProductToBeRegistered = 1
Property(S): REBOOTPROMPT = S
Property(S): CURRENTDIRECTORY = C:\Users\Stan
Property(S): CLIENTUILEVEL = 2
Property(S): CLIENTPROCESSID = 31676
Property(S): MsiSystemRebootPending = 1
Property(S): PRODUCTLANGUAGE = 1033
Property(S): VersionDatabase = 200
Property(S): VersionMsi = 5.00
Property(S): VersionNT = 603
Property(S): VersionNT64 = 603
Property(S): WindowsBuild = 9600
Property(S): ServicePackLevel = 0
Property(S): ServicePackLevelMinor = 0
Property(S): MsiNTProductType = 1
Property(S): WindowsFolder = C:\WINDOWS\
Property(S): WindowsVolume = C:\
Property(S): System64Folder = C:\WINDOWS\system32\
Property(S): SystemFolder = C:\WINDOWS\SysWOW64\
Property(S): RemoteAdminTS = 1
Property(S): TempFolder = C:\Users\Stan\AppData\Local\Temp\
Property(S): ProgramFilesFolder = C:\Program Files (x86)\
Property(S): CommonFilesFolder = C:\Program Files (x86)\Common Files\
Property(S): CommonFiles64Folder = C:\Program Files\Common Files\
Property(S): AppDataFolder = C:\Users\Stan\AppData\Roaming\
Property(S): FavoritesFolder = C:\Users\Stan\Favorites\
Property(S): NetHoodFolder = C:\Users\Stan\AppData\Roaming\Microsoft\Windows\Network Shortcuts\
Property(S): PersonalFolder = C:\Users\Stan\Documents\
Property(S): PrintHoodFolder = C:\Users\Stan\AppData\Roaming\Microsoft\Windows\Printer Shortcuts\
Property(S): RecentFolder = C:\Users\Stan\AppData\Roaming\Microsoft\Windows\Recent\
Property(S): SendToFolder = C:\Users\Stan\AppData\Roaming\Microsoft\Windows\SendTo\
Property(S): TemplateFolder = C:\ProgramData\Microsoft\Windows\Templates\
Property(S): CommonAppDataFolder = C:\ProgramData\
Property(S): LocalAppDataFolder = C:\Users\Stan\AppData\Local\
Property(S): MyPicturesFolder = C:\Users\Stan\Pictures\
Property(S): AdminToolsFolder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\
Property(S): StartupFolder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\
Property(S): StartMenuFolder = C:\ProgramData\Microsoft\Windows\Start Menu\
Property(S): DesktopFolder = C:\Users\Public\Desktop\
Property(S): FontsFolder = C:\WINDOWS\Fonts\
Property(S): GPTSupport = 1
Property(S): OLEAdvtSupport = 1
Property(S): ShellAdvtSupport = 1
Property(S): MsiAMD64 = 23
Property(S): Msix64 = 23
Property(S): Intel = 23
Property(S): PhysicalMemory = 32721
Property(S): VirtualMemory = 14552
Property(S): LogonUser = Stan
Property(S): UserSID = S-1-5-21-3295885696-2941907520-459019011-1001
Property(S): UserLanguageID = 1031
Property(S): ComputerName = STAN-PC
Property(S): SystemLanguageID = 1033
Property(S): ScreenX = 1024
Property(S): ScreenY = 768
Property(S): CaptionHeight = 19
Property(S): BorderTop = 1
Property(S): BorderSide = 1
Property(S): TextHeight = 16
Property(S): TextInternalLeading = 3
Property(S): ColorBits = 32
Property(S): TTCSupport = 1
Property(S): Time = 18:16:33
Property(S): Date = 5/19/2020
Property(S): MsiNetAssemblySupport = 4.8.4084.0
Property(S): MsiWin32AssemblySupport = 6.3.19041.1
Property(S): RedirectedDllSupport = 2
Property(S): AdminUser = 1
Property(S): MsiRunningElevated = 1
Property(S): USERNAME = [email protected]
Property(S): DATABASE = C:\Windows\Installer\38437.msi
Property(S): OriginalDatabase = C:\Users\Stan\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\TempState\WinGet\7zip.7zip.19.0.0.msi
Property(S): UILevel = 3
Property(S): MsiUIProgressOnly = 1
Property(S): MsiUIHideCancel = 1
Property(S): ACTION = INSTALL
Property(S): ROOTDRIVE = K:\
Property(S): CostingComplete = 1
Property(S): OutOfDiskSpace = 0
Property(S): OutOfNoRbDiskSpace = 0
Property(S): PrimaryVolumeSpaceAvailable = 0
Property(S): PrimaryVolumeSpaceRequired = 0
Property(S): PrimaryVolumeSpaceRemaining = 0
Property(S): INSTALLLEVEL = 1
Property(S): SOURCEDIR = C:\Users\Stan\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\TempState\WinGet\
Property(S): SourcedirProduct = {23170F69-40C1-2702-1900-000001000000}
MSI (s) (04:1C) [18:16:33:294]: Windows Installer reconfigured the product. Product Name: 7-Zip 19.00 (x64 edition). Product Version: 19.00.00.0. Product Language: 1033. Manufacturer: Igor Pavlov. Reconfiguration success or error status: 1603.

=== Logging stopped: 19.05.2020  18:16:33 ===

What if current working directory was used instead of <long package path>

I submitted a PR (#256) for the kdenlive standalone installer (7Zip self-extracting archive). It supports the --location switch, so that's good.

Q: But if you don't pass --location, then where does the installer extract to?

A: To an undiscoverable temp path like "C:\Users\username\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\TempState\WinGet".

Perhaps the download could be performed in that location, but once it's downloaded, it's not great to actually run the EXE from that directory. Perhaps after downloading, the EXE could be moved to winget's current working directory, and be run from there. Then the resulting files that it extracts would be at least slightly more discoverable.

JSON Formatted Output Support

Description of the new feature/enhancement

To enable automation and consumption via other tools, it'd be great if current and future commands supported a JSON output mode.

List installed Apps

As a user I want to be able to see what winget has installed on my machine and if an update is available so I don't have to manually do updates for each program.

Experimental Feature
winget list - displays installed packages (includes programs in Add/Remove Programs).
winget list -? - displays help for the list command.
winget list <package> - displays installed packages filtered by <package>.

Note: upgrade depends on list also being enabled.

winget features - displays all experimental features and their status
winget settings - launches settings.json to configure settings like experimental features

Edited: experimental status

Upgrade an installed App

As a user I want to be able to use winget to install the most current version of a currently installed program so I don't have to go find it.

Experimental Feature
winget upgrade - displays installed packages with an available upgrade.
winget upgrade -? - displays help for the upgrade command.
winget upgrade --all - upgrades all packages with an available upgrade.
winget upgrade <package> - upgrades the specified package.

Note: upgrade depends on list also being enabled.

winget features - displays all experimental features and their status
winget settings - launches settings.json to configure settings like experimental features

Edited: experimental status

Multiple Architectures in one manifest

Description of the new feature/enhancement

The client should support manifests with multiple architectures.

Proposed technical implementation details (optional)

I should be able to have x86, x64, 32bit, 64bit, and ARM installers available from the same manifest (assuming the version of the package is the same). The client should chose the appropriate installer based on the machine's architecture.

Unable to install packages when user name contains non-ASCII characters

Brief description of your issue

My windows user name is "Björn", and hence contains a non-ASCII character. When I try to install any package using winget, I receive an error message similar to the following one:

"C:\Users\Björn\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\TempState\WinGet\gimp.gimp.2.10.18.exe" konnte nicht gefunden werden. Stellen Sie sicher, dass Sie den Namen richtig eingegeben haben und wiederholen Sie den Vorgang.

The specified path indeed does not exist. Replacing "Björn" with my correct username, "Björn", though, leads to the correct file downloaded by winget.

Steps to reproduce

  1. Log on with a Windows username containing non-ASCII characters.
  2. Open cmd.
  3. Run: winget install gimp.gimp -e

Expected behavior

winget should download the installer and execute it.

Actual behavior

winget downloads the installer, but fails to execute it, because it uses an invalid path for running the downloaded file. This leads to the following error message in a message box window:

"C:\Users\Björn\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\TempState\WinGet\gimp.gimp.2.10.18.exe" konnte nicht gefunden werden. Stellen Sie sicher, dass Sie den Namen richtig eingegeben haben und wiederholen Sie den Vorgang.

On the command line, I get this message:

Installer failed with exit code: 1223

Environment

[winget --info]
Windows Package Manager v0.1.41331 Vorschau
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.18363.836
Package: Microsoft.DesktopAppInstaller v1.0.41331.0

GitHub Desktop doesn't install properly

Brief description of your issue

GitHub Desktop didn't install correctly.

Steps to reproduce

winget install githubdesktop

Expected behavior

I expected the App to be installed and available.

Actual behavior

The program starts when manually installed, but no icons appear

Environment

Windows Package Manager v0.1.41331 Preview
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.18363.836
Package: Microsoft.DesktopAppInstaller v1.0.41331.0

Repair an App that is behaving badly

As a user I want to be able to repair my app if it is not working correctly.

Client:
winget repair <appname>

Repair can only be done as a single apps as it doesn't seem to make sense to do this for all installed applications.

Most installers have a repair mode.

  1. add repair command to YAML spec. this is probably the systemappid
  2. search the ARP for the command and be able to call it.
  3. this should also work for MSIX which are uwp store apps.

Support non-zero exit codes as success

Description of the new feature/enhancement

Some applications return non-zero codes that are not errors. There should be a way for the client to know the difference between these codes and actual errors.

Proposed technical implementation details (optional)

A key could be added to the manifest syntax to indicate which non-zero codes should be treated as success. The client could then treat these non-zero return codes as success.

Identify progressive installers or installer apps

Description of the new feature/enhancement

As a user I would like to be informed when an installer is progressive so I know I might not be able to get a specific version of an application. Some programs like Steam are available as an installer that immediately checks for the current version of the program and installs the latest version.

Proposed technical implementation details (optional)

This could be a flag or switch in the manifest that would identify these kinds of applications.

'install git' matches multiple apps, messaging unclear

Environment

winget --info
Windows Package Manager v0.1.41301 Preview
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.19041.208
Package: Microsoft.DesktopAppInstaller v1.0.41301.0

Links:
  Privacy Statement: https://aka.ms/winget-privacy
  License agreement: https://aka.ms/winget-license
  3rd Party Notices: https://aka.ms/winget-3rdPartyNotice
  Homepage:          https://aka.ms/winget

Steps to reproduce

Attempt to install git with winget:

winget install git

Expected behavior

Git installs without further prompting.

Actual

Git fails to install. Unclear for the user what to do next.

Multiple apps found matching input criteria. Please refine the input.
Name                    Id                                Version      Matched
-----------------------------------------------------------------------------------
Git                     Git.Git                           2.26.2       Moniker: git
Atom                    GitHub.Atom                       1.45.0
GitKraken               Axosoft.GitKraken                 6.5.4
Logitech Harmony Remote Logitech.Harmony                  1.0.1.308
GitHub Desktop          GitHub.GitHubDesktop              2.4.3
AppInstallerFileBuilder Microsoft.AppInstallerFileBuilder 1.2020.211.0 Tag: GitHub

🏆 For a bonus: Why are "Atom" and "Logitech Harmony Remote" packages returned in the list when installing git?

Winget fails to run and displays error on Windows 10 1709

Winget fails to run and displays error on Windows 10 1709

Environment

Windows Package Manager v0.1.41331 Preview
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.16299.1868  [1709]
Package: Microsoft.DesktopAppInstaller v1.0.41331.0



# Steps to reproduce

1.	Install the latest Windows Package Manager
2.	Run search or any command other than –help.


# Expected behavior
Winget should just work.
This is related to a SmartScreen issue.


# Actual behavior

Winget displays the following error when doing a search:
Failed to open the source; try removing and re-adding it
An unexpected error occurred while executing the command:
Install failed: Deployment Add operation with target volume C: on Package Microsoft.Winget.Source_2020.514.2303.902_neutral__8wekyb3d8bbwe from:  (Microsoft.Winget.Source_2020.514.2303.902_neutral__8wekyb3d8bbwe.msix)  failed with error 0x80073D1B. See http://go.microsoft.com/fwlink/?LinkId=235160 for help diagnosing app deployment issues.
0x80073d1b : The packages failed the SmartScreen reputation check.

Verbose show command

I'd like to be able to see all of the contents of a manifest including it's source (when multiple sources are present).

winget show foo -v

It would include the source of the manifest file, and the timestamp the manifest file was accessed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.