-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Uninstall an installed App #121
Comments
This is never going to happen since packages just consist of running random executable files that can do whatever they want. There's no package building step or anything. (edit: see also my clarification below) |
Chocolatey (and scoop in certain scenarios) already does it through running the uninstaller that is registered in the control panel, I thought. winget could do a similar thing, although the flags for a silent uninstall would have to be in the manifest somewhere. |
IMHO this is basic functionality which is paramount for the success of winget. |
There could be references to the programs' "uninstaller" executables as well. |
The uninstaller reference comes with every installation. There are RARE cases of applications that cannot be uninstalled this way but it is doubtful they will be ever accessible / installable via winget. Other than that you can clearly uninstall all apps using a WMI call and I have even borrowed a method someone else that is even able to crawl the registry for uninstalling applications by a name or wildcards. Without blaming anyone, I certainly support an /u --uninstall switch, which can also be combined with /h --silent |
in terms of naming i would not use Winget remove, imho as it is "install" it should be named "uninstall" for ease of use. https://github.com/microsoft/winget-cli/issues/192 |
i support it |
For clarification about what I meant with my (admittedly flippant) comment above, see these three threads:
Basically, my point is that since this works by running arbitrary exe files on the host computer, the only thing it can do to uninstall something is run another arbitrary exe, again pulled from 3rd party sources. That exe can do anything, especially not clean up all the crap left by the install process. What you expect from package managers (coming from other OSs) is that they build packages that are pretty much just declarative file archives with as little logic as possible, then those are installed with logic defined almost completely on the side of the package manager instead of the to-be-installed app. The logic that comes with the package itself is minimal if it exists at all, runs at specific times with specific functions (preinstall / postinstall / etc) and is declared as readable code (e.g. shell scripts). The package manager or user then can also verify that the package does not do anything weird like copying files to unusual locations or removing other files, or setting up / starting system services. (that's also a job of the package manager). |
Yes in fact what you are describing is something like MSI or MSIX / Windows Store that allows an internal uninstall via WinGet while at the moment and forseeable future winget is just the commandline (now also GUI) proxy for this task, but relies on some of the mentioned packagers and installation methods. |
I don't understand, if one of the intents of this program is to let allow you to install pre-existing software as well as any packages it may have. |
This is basic functionality for a package manager really. Without that we have something that is just barely above a powershell script or even a good ol' batch file. |
I have an early draft started of the spec. I am not tackling the notion of a sandbox at this time. |
SystemAppId is not enough to provide a proper uninstall experience IMHO. There might be a need for a It would also be nice if winget tried the de facto standard When it comes to actually running the uninstaller, it is a good idea for winget to use a Job object on the uninstaller process so it can wait for all the children like Add/Remove programs does. If you don't want to use a job object but still want to wait for the process then custom actions are required. For nullsoft this means using its special uninstaller syntax. In a batch file that would look something like this:
|
That's just silly. -- If the package registry can specify an executable which can be run to install a given package, then it should be able to specify an executable that can be run to uninstall a package. BTW, upon doing a quick search, it looks like package manifests are just yaml files -- so someone does have to build them -- apps don't just automatically have yaml files for no reason. (Not to mention there's a PowerShell script on that page that helps develops build their package manifests...) And if you can put an "Installers" key in your yaml file, you can sure as heck add an "Uninstallers" key with the exact same info. 😑 |
I agree with @BrainSlugs83 you can have contributors declare an uninstall key, that the program just executes, just like Homebrew formulae does, so you can have "if the user wants to uninstall do this: blah blah blah" and it would work without issues imo. |
The MSIX format is really horrendous because it allows the insertion of DRM in software through the form of the AppxBlockMap.xml files. On top of that, it is only supported on windows. Really really awful that microsoft is attempting to push forward with the locking of windows, without fixing any of the underlying problems of the platform. |
@keenbowl3009 Most paid software already has DRM, with or without MSIX. Also, how is "it is only supported on Windows" an argument? Scoop is only supported on Windows, Homebrew is only supported on Mac and Apt is only supported on Linux, does that make them bad? |
scoop is a shell script that unzip files, and adds to path. can you unzip files, and add them to path with winget? |
https://devblogs.microsoft.com/commandline/windows-package-manager-preview/
Can you winget install any of those from the original winget annoucement? |
No, it's on the roadmap, and I don't get how it's related to the previous conversation.
All of them! In fact I installed all of these through winget. What are you even trying to say? |
Given that
I suggest that you
EDIT: also could a mod mark everything for the last hour as off topic please? @denelon |
Yet another bad faith argument, seems people love these lately |
@tajetaje Since this issue is closed, I don't see much value in marking the thread "off topic". Unfortunately, there probably isn't a single solution that will make everybody happy. Sometimes people want to make sure they are heard. There are several tools attempting to solve the problems related to managing software on Windows. We're not trying to replace any of them. We're trying to meet developers where they are and have a plan to go forward in time. Some of the constraints we're trying to adhere to make the problems more challenging in some areas and easier in others. Hopefully over time, we will build something that is flexible enough to give the control users want and the flexibility to work with existing installers. |
@denelon > We're not trying to replace any of them. I'd be... more cautious with that statement. https://keivan.io/the-day-appget-died/ |
On top of that, i'm afraid of even running that and permanently borking my machine. |
If you are getting a error installing something, open a ticket. Things can't get fixed if the devs don't know of the issue |
Last I'll say on the topic |
@keenbowl3009 If you're afraid, don't use Also there is no error, unless you mean the disambiguation note which happens if you enabled the |
@tajetaje Yeah, I know. I just felt the itch to point this out, due to the statement's wording reminding me of this controversy. (Also did the "something to share" already happen?) |
There is no error. |
I have not "enabled" mstore. |
Thanks. |
@keenbowl3009 Using command line package managers requires a basic degree of computer literacy, including the ability to comprehend bright yellow text in simple English. I am afraid that I can not help you further, sorry. |
If you already had a ticket, what was the point other than to scratch the chip on your shoulder you seem to have of bringing it up. |
2dfc7499 Update Authors file 6dab4978 Update README and tweak syntax in Boost.JSON adapter 2ecd2119 Merge pull request microsoft#136 from matty0ung/boostjson b1119ccc Merge pull request microsoft#135 from matty0ung/uris f5cf601e Add Boost.JSON support 14325788 Add Boost.JSON support d3104ea8 Support fetching sub-schemas from other files ad7dac75 Merge pull request microsoft#133 from rayvincent2/feature/add-urn-reference-support 3442709a Update urn regex expression to be std::regex safe f787a8a7 Update urn regex to match widely accepted expression 653d515d Ensure that urn regex checks to end of string eac0859c Ensure that urn NID cannot include '.' ef42dae2 Add support for urn document references a4684c28 Fix path to rapidjson in fuzzing test code 11af6522 Merge remote-tracking branch 'clainio/build-fix' c5487c39 Update rapidjson to latest code from github 6a04040d Update adapters to avoid inheriting from std::iterator 385d2d83 Improve handling of compiler flags when exceptions are disabled 82e093fe Upgrade gtest to v1.11.0 c63ac26f Disable C4702: unreachable code warnings for json_pointer.hpp 855365bc Disable C4702: unreachable code warnings within relevant headers 5c97e3cc Fix gcc build error 4897d102 Fix exclusiveMaximum and exclusiveMinimum error messages 6cc4cddc Suppress boost warnings that aren't relevant to the test suite 2cf8d3dd Add default tests for draft 7 e94179e1 Add definitions tests for draft 7 bb2c4251 Improve array_iteration_basics example e6909b15 Add required test for draft 4 df89869e Add maxLength and minLength tests for draft 7 91834621 Fix return type on getMinLength 3740dc51 Explicitly initialise optionals in Subschema class cb778b6b Minor changes to address msvc warnings and make cmake work on Windows 70f12ed1 Merge pull request microsoft#123 from anishmonachan7/fix_unused_variable 03b8cccb Update include/valijson/constraints/concrete_constraints.hpp dc6d2fe0 fix unused variable error with gcc 8.3 77bae9fb Fix xcode stuff 66262baf Include nlohmann/json.hpp instead of json.hpp b3b958c8 Merge pull request microsoft#121 from anishmonachan7/virtual_destructor 84c9fbf5 destructor to virtual destructor 8a784f23 Minor fix for example code in README a19e1c00 Remove warning suppressions for clang af2358b6 Use custom RAPIDJSON_ASSERT macro to catch parser errors 7ab96207 Ensure ref values are strings 635f36f0 Merge pull request microsoft#119 from BSipos-RKF/issue-118 fba5a9e8 Reject JSON references that index into empty arrays cbcde15c Possible fix for microsoft#118 3621f98d Update rapidjson_utils.hpp to use iterative parsing f544cd02 Merge pull request microsoft#116 from AdamKorcz/fuzz1 c13eed99 Minor refactoring 3a47f0cd Added fuzzer with oss-fuzz build file cf648930 Merge pull request microsoft#114 from baylesj/fix-memory-leak 1f964c12 Fix memory leak in concrete constraints 7cb31947 Merge pull request microsoft#113 from hei-pa/master 8cc83c8b move curlpp findPackage in EXAMPLES block c1e75c70 Merge pull request microsoft#110 from baylesj/remote_throws bc81adbd add version checks around BOOST_NORETURN 7a560db2 Fixup headers b8e95810 Apply feedback, add boost version check 8f6f9b6a Use deprecated declarations f1006142 Cleanup unnecessary returns a30ef974 Add VALIJSON_USE_EXCEPTIONS mode 8a700811 Add JSON Inspector example app bbfc3f5c Fixed build on certain GCC toolchains 84b67fa6 Merge pull request microsoft#107 from baylesj/readme 90783ca4 Minor code style changes 3dd4482a Merge pull request microsoft#103 from wwriter/cond_schema_errormessage ee4f85bf Minor tweaks to README.md file a7038862 Update jsoncpp link in readme abedaf0e Merge pull request microsoft#105 from baylesj/update-jsoncpp 825ee110 Fix readme b6b6f167 Delete jsoncpp fuzzing stuff 2ee7474f Delete more unnecessary scripts 1ff5308f fix submodule dbc4fcc8 Remove modules 88d9d890 Update JsonCpp to 1.9.4 d5091b2d added feature : now users can get a detailed error message when if-then-else conditional constraints are not met 931f64d4 Merge pull request microsoft#102 from mathbunnyru/patch-2 c5e61543 Add conan package manager info 6cda9227 Merge pull request microsoft#99 from mathbunnyru/patch-1 45b0f83b Fix README so the code actually throws, when json is invalid 89e37cbf Fix typo 7f01c391 Minor suggestions from clangtidy a527564b Merge pull request microsoft#96 from joshuaeckroth/master ccad6b14 Switched from jsoncpp deprecated Reader to CharReader 45a333e6 Try to make builds faster 0ee3bada Fix broken build bbe62ecd Merge pull request microsoft#95 from wirenboard/feature/cache-regex f7f3acf2 Merge pull request microsoft#94 from wirenboard/fix/pass-by-ref 39f35069 Regex objects cache for pattern constraints 2216c2b8 Pass visitor to validationCallback by ref 0db0d139 Merge pull request microsoft#93 from Delgan/fix-unused-args 1c825cc6 Remove unused parameters instead of commenting them out ca031221 Fix compilation errors due to unused parameters 105e345a Merge pull request microsoft#92 from arthurafarias/add-cmake-interface-library f60a3089 Added interface target to CMakeLists.txt d453ee2e Revert breaking changes to jsoncpp_adapter.hpp f3a0390e Revert changes to json11_adapter.hpp 49c20301 Disable -Wshadow for included header in property_tree_utils.hpp 8875d802 Add CLion paths to .gitignore 73a8e440 More aggressive compiler warnings 77d2ef82 Cosmetic improvements for poco_json_adapter.hpp and property_tree_adapter.hpp e5c1cbfe Ensure tests are run for Poco, Qt and property_tree adapters 8c0d16a0 Cosmetic improvements for std_string_adapter.hpp, test_json_pointer.cpp and test_poly_constraint.cpp 217b990b Cosmetic improvements for schema_parser.hpp and validation_results.hpp 71f4cdaa Cosmetic improvements for custom_allocator.hpp e46af245 Cosmetic improvements for concrete_constraints.hpp and basic_constraint.hpp 7917b2f7 Cosmetic improvements for schema.hpp, schema_parser.hpp and subschema.hpp 8150a520 Cosmetic improvements for test_adapter_comparison.cpp 28cc9e8e Cosmetic improvements for qtjson_adapter.hpp 508bc019 Cosmetic improvements for rapidjson_adapter.hpp d7901d48 Cosmetics improvements for picojson_adapter.hpp 3211a04d Cosmetic improvements for nlohmann_json_adapter.hpp 0f57cb31 Cosmetic improvements for jsoncpp_adapter.hpp e11c17c3 Cosmetic improvements for json11_adapter.hpp 6f1f4acb Cosmetic improvements for basic_adapter.hpp 3ddbe585 Cosmetic improvements for validation_visitor.hpp 09d21423 Update xcode project files 0481a0bb Minor tidy up of const auto usage 94cef2fa Add example showing local file resolution git-subtree-dir: src/Valijson/valijson git-subtree-split: 2dfc7499a31b84edef71189f4247919268ebc74e
2dfc7499 Update Authors file 6dab4978 Update README and tweak syntax in Boost.JSON adapter 2ecd2119 Merge pull request microsoft#136 from matty0ung/boostjson b1119ccc Merge pull request microsoft#135 from matty0ung/uris f5cf601e Add Boost.JSON support 14325788 Add Boost.JSON support d3104ea8 Support fetching sub-schemas from other files ad7dac75 Merge pull request microsoft#133 from rayvincent2/feature/add-urn-reference-support 3442709a Update urn regex expression to be std::regex safe f787a8a7 Update urn regex to match widely accepted expression 653d515d Ensure that urn regex checks to end of string eac0859c Ensure that urn NID cannot include '.' ef42dae2 Add support for urn document references a4684c28 Fix path to rapidjson in fuzzing test code 11af6522 Merge remote-tracking branch 'clainio/build-fix' c5487c39 Update rapidjson to latest code from github 6a04040d Update adapters to avoid inheriting from std::iterator 385d2d83 Improve handling of compiler flags when exceptions are disabled 82e093fe Upgrade gtest to v1.11.0 c63ac26f Disable C4702: unreachable code warnings for json_pointer.hpp 855365bc Disable C4702: unreachable code warnings within relevant headers 5c97e3cc Fix gcc build error 4897d102 Fix exclusiveMaximum and exclusiveMinimum error messages 6cc4cddc Suppress boost warnings that aren't relevant to the test suite 2cf8d3dd Add default tests for draft 7 e94179e1 Add definitions tests for draft 7 bb2c4251 Improve array_iteration_basics example e6909b15 Add required test for draft 4 df89869e Add maxLength and minLength tests for draft 7 91834621 Fix return type on getMinLength 3740dc51 Explicitly initialise optionals in Subschema class cb778b6b Minor changes to address msvc warnings and make cmake work on Windows 70f12ed1 Merge pull request microsoft#123 from anishmonachan7/fix_unused_variable 03b8cccb Update include/valijson/constraints/concrete_constraints.hpp dc6d2fe0 fix unused variable error with gcc 8.3 77bae9fb Fix xcode stuff 66262baf Include nlohmann/json.hpp instead of json.hpp b3b958c8 Merge pull request microsoft#121 from anishmonachan7/virtual_destructor 84c9fbf5 destructor to virtual destructor 8a784f23 Minor fix for example code in README a19e1c00 Remove warning suppressions for clang af2358b6 Use custom RAPIDJSON_ASSERT macro to catch parser errors 7ab96207 Ensure ref values are strings 635f36f0 Merge pull request microsoft#119 from BSipos-RKF/issue-118 fba5a9e8 Reject JSON references that index into empty arrays cbcde15c Possible fix for microsoft#118 3621f98d Update rapidjson_utils.hpp to use iterative parsing f544cd02 Merge pull request microsoft#116 from AdamKorcz/fuzz1 c13eed99 Minor refactoring 3a47f0cd Added fuzzer with oss-fuzz build file cf648930 Merge pull request microsoft#114 from baylesj/fix-memory-leak 1f964c12 Fix memory leak in concrete constraints 7cb31947 Merge pull request microsoft#113 from hei-pa/master 8cc83c8b move curlpp findPackage in EXAMPLES block c1e75c70 Merge pull request microsoft#110 from baylesj/remote_throws bc81adbd add version checks around BOOST_NORETURN 7a560db2 Fixup headers b8e95810 Apply feedback, add boost version check 8f6f9b6a Use deprecated declarations f1006142 Cleanup unnecessary returns a30ef974 Add VALIJSON_USE_EXCEPTIONS mode 8a700811 Add JSON Inspector example app bbfc3f5c Fixed build on certain GCC toolchains 84b67fa6 Merge pull request microsoft#107 from baylesj/readme 90783ca4 Minor code style changes 3dd4482a Merge pull request microsoft#103 from wwriter/cond_schema_errormessage ee4f85bf Minor tweaks to README.md file a7038862 Update jsoncpp link in readme abedaf0e Merge pull request microsoft#105 from baylesj/update-jsoncpp 825ee110 Fix readme b6b6f167 Delete jsoncpp fuzzing stuff 2ee7474f Delete more unnecessary scripts 1ff5308f fix submodule dbc4fcc8 Remove modules 88d9d890 Update JsonCpp to 1.9.4 d5091b2d added feature : now users can get a detailed error message when if-then-else conditional constraints are not met 931f64d4 Merge pull request microsoft#102 from mathbunnyru/patch-2 c5e61543 Add conan package manager info 6cda9227 Merge pull request microsoft#99 from mathbunnyru/patch-1 45b0f83b Fix README so the code actually throws, when json is invalid 89e37cbf Fix typo 7f01c391 Minor suggestions from clangtidy a527564b Merge pull request microsoft#96 from joshuaeckroth/master ccad6b14 Switched from jsoncpp deprecated Reader to CharReader 45a333e6 Try to make builds faster 0ee3bada Fix broken build bbe62ecd Merge pull request microsoft#95 from wirenboard/feature/cache-regex f7f3acf2 Merge pull request microsoft#94 from wirenboard/fix/pass-by-ref 39f35069 Regex objects cache for pattern constraints 2216c2b8 Pass visitor to validationCallback by ref 0db0d139 Merge pull request microsoft#93 from Delgan/fix-unused-args 1c825cc6 Remove unused parameters instead of commenting them out ca031221 Fix compilation errors due to unused parameters 105e345a Merge pull request microsoft#92 from arthurafarias/add-cmake-interface-library f60a3089 Added interface target to CMakeLists.txt d453ee2e Revert breaking changes to jsoncpp_adapter.hpp f3a0390e Revert changes to json11_adapter.hpp 49c20301 Disable -Wshadow for included header in property_tree_utils.hpp 8875d802 Add CLion paths to .gitignore 73a8e440 More aggressive compiler warnings 77d2ef82 Cosmetic improvements for poco_json_adapter.hpp and property_tree_adapter.hpp e5c1cbfe Ensure tests are run for Poco, Qt and property_tree adapters 8c0d16a0 Cosmetic improvements for std_string_adapter.hpp, test_json_pointer.cpp and test_poly_constraint.cpp 217b990b Cosmetic improvements for schema_parser.hpp and validation_results.hpp 71f4cdaa Cosmetic improvements for custom_allocator.hpp e46af245 Cosmetic improvements for concrete_constraints.hpp and basic_constraint.hpp 7917b2f7 Cosmetic improvements for schema.hpp, schema_parser.hpp and subschema.hpp 8150a520 Cosmetic improvements for test_adapter_comparison.cpp 28cc9e8e Cosmetic improvements for qtjson_adapter.hpp 508bc019 Cosmetic improvements for rapidjson_adapter.hpp d7901d48 Cosmetics improvements for picojson_adapter.hpp 3211a04d Cosmetic improvements for nlohmann_json_adapter.hpp 0f57cb31 Cosmetic improvements for jsoncpp_adapter.hpp e11c17c3 Cosmetic improvements for json11_adapter.hpp 6f1f4acb Cosmetic improvements for basic_adapter.hpp 3ddbe585 Cosmetic improvements for validation_visitor.hpp 09d21423 Update xcode project files 0481a0bb Minor tidy up of const auto usage 94cef2fa Add example showing local file resolution git-subtree-dir: src/Valijson/valijson git-subtree-split: 2dfc7499a31b84edef71189f4247919268ebc74e
IMHO it is a dishonest attitude closing this issue since the uninstaller is currently broken and most of the time does not work. |
@EqualDust The feature is implemented, that's why this issue is closed. It can certainly be buggy for some uninstallers -- the correct attitude to fix this problem is to report each individual bugged uninstaller. Also, stop creating new GitHub accounts, please. |
every bug is a new account. Reporting each individual bugged uninstaller is inneficient, an org with resources like msft should be able to ship great products by default.
How come scoop, completely community backed, get this right by default?
|
Please don't make an ordeal of this, This thread is getting long and very noisy now, noisy threads are hard to follow. |
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 statuswinget settings
- launches settings.json to configure settings like experimental featuresNote:
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
The text was updated successfully, but these errors were encountered: