wixtoolset / issues

WiX Toolset Issues Tracker
http://wixtoolset.org/
129 stars 24 forks source link

Windows App Certification Unresolvable Warnings on Burn Bootstrapper #5171

Open RGBradford opened 8 years ago

RGBradford commented 8 years ago

If you validate a burn bootstrapper installer (generated using WIX 3.10.1) using the Windows App Certification Kit, you get these warnings in the Clean reversible install test:

Write appropriate Add/Remove Program values

The requirements for Add/Remove Program registry settings are outlined in section 5.5 of Certification requirements for Windows desktop apps.

MirzaJS commented 8 years ago

Is there a workaround for this?

mbirtwistle commented 8 years ago

Should InstallLocation simply be set to the package cache location in order to pass the WACK certification test? I thought about trying to get my bundled MSI package to discover the burn package's ProductCode and write the msi product location under the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall{BURNPRODUCTCODE}\InstallLocation registry key, but really that's nonsense for anyone with multiple payloads in the bundle.

heaths commented 8 years ago

Probably better to allow InstallLocation to be set by a variable that a BA could set (or even a search, or by some other means) to where the main program is installed.

mbirtwistle commented 8 years ago

OK. Following a helpful discussion with the WIX devs I've had another attempt at this using variables. It now passes all WACK tests except for the fact that the unattended UNinstallation step pops up the UI so I have to click Uninstall - but that's something else I need to look into.

To remove the warnings about InstallLocation I used the following technique in my BURN code update:

Defines a new internal installer variable called WixBundleInstallLocation

Burn engine attempts to auto-discover this after each successful msi installation by looking for an InstallLocation in each MSIs own Uninstall registration area. Ensure your main product MSI package sets the ARPINSTALLLOCATION property as per the instructions here: http://robmensching.com/blog/posts/2011/1/14/arpinstalllocation-and-how-to-set-it-with-the-wix-toolset/ If you've got multiple msis that all set an InstallLocation, the final package wins (its likely to be the main one). In RegistrationSessionEnd, if WixBundleInstallLocation has a value, it is written as the InstallLocation in the Bundles Uninstall registration key..

WACK is happy

mbirtwistle commented 8 years ago

I've pushed a separate commit which produces a /quiet UninstallString by specifying <Variable Name="UnattendedUninstall" bal:Overridable="yes" Type="numeric" Value="1" /> in your Bundle.wxs

This allows WACK and other automated testers that rely on UninstallString to proceed without user intervention.

barnson commented 8 years ago

That seems really weird: QuietUninstallString exists for that purpose. Not sure why WACK would rely on the interactive version.

mbirtwistle commented 8 years ago

Agreed. Maybe somebody with bigger boots than me can give it a kick...

https://connect.microsoft.com/VisualStudio/feedback/details/768967/cant-pass-the-silent-uninstallation-command-to-windows-8-sdk-app-certificate-kit-ack-s-appcert-exe-when-automating-the-validation-process

therealhappy commented 8 years ago

We have the same problem in our setup.

robmen commented 8 years ago

If this is important to you, I recommend going and voting for the Connect issue above. It captures the issue well and WACK should be updated.

rseanhall commented 4 years ago

https://github.com/wixtoolset/wix3/pull/331 https://github.com/wixtoolset/wix4/pull/193

Does anyone know what happened to the Connect issue? The link no longer works since they retired Connect.