Evaluate App Requirements at App Uninstall
Consider an app with multiple deployment types using different requirement rules filtering on items such as platform (x86, x64, APP-V, etc). When the app is configured the requirement logic is evaluated and the proper deployment type executed.
Suppose that the deployment type selected was specific for x64 systems and also that the deployment type is the third deployment type in the list. Assume also that each of the three deployment types supports an uninstall command.
If the user goes into software center and manually selects to uninstall everything works as expected and the specific deployment type is removed. If, instead, it is a business requirement to force the uninstall the requirements are NOT evaluated (see the link below) and the uninstall command line on the first deployment type is executed. If the install was based on a different deployment type then the content will need to be downloaded again for the first deployment type and the uninstall will likely fail.
If the application uninstall adhered to the requirement rule logic then the correct uninstall option would always be selected and no additional content would be downloaded.
Mark A-G commented
I think the requirements need to be separated but applicable if desired. I've got a scenario where I have placed a disk space requirement on an application. After the application is installed the disk space requirement is no longer satisfied because it is a huge application, and the Uninstall button is greyed out. If I remove the requirement, the Uninstall button works. This might be a bug, but if not we need to be able to distinguish between installation requirements and uninstall requirements if any.
Yes please! It just seems incongruent with the app model to just pick the first deployment type.
Steven Rachui commented
Forgot to include snip describing this behavior and the TechNet link.
“A deployment with the deployment purpose of Uninstall does not check requirement rules. If the application is installed on the computer on which the deployment runs, it will be uninstalled.”