MsiZap is sort of a last resort tool. What you should do is uninstall for any accounts that you have access to, and then if the machines still have product registrations under other inaccessible profiles that are stopping you from doing your new install, then you use MsiZap to wipe the machine clean of those registrations. Basically, it'll wipe out the HKCR\Installer and HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer data for the specified package. The user profiles for those inaccessible accounts aren't so relevant because, by definition, they're inaccessible and won't be used again. You can even delete any cached profiles for users who have left if you like.
BTW, to see which user accounts are affected, HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData contains the details of who has which packages installed. It's by UserSID, with the system account being the short SID. You can look under each user's key to see the Components, Products and Patches they have installed. Under Products the ProductCode is packed - brackets and hyphens removed and various characters switched around, have a search online to find out more details. Another way to achieve all this may be to change the UpgradeCode of your product. Not best practices, and not at all good if the product is externally released, but if it's a package that's internal to your organisation then that might do the trick. Though the component reference counting wouldn't be right, so it wouldn't all uninstall if you removed the package. Cheers, James -----Original Message----- From: hyung [mailto:[EMAIL PROTECTED] Sent: 30 October 2008 06:04 To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] uninstall per user product Thanks everyone for the help. I have managed to detect all users who ever installed our product using MsiEnumProductsEx and LookupAccountSidW. Now I am facing another challenging problem - how do we uninstall all per-user installations? If some accounts are no longer accessible, what can we do? Question: Can I use MsiZap to remove all per-user installations? I have tried "MsiZap TW! {productGuid} but according to the help W option requires that the profiles for all of the users be loaded. Anyone knows how to load all users' profile so that I can use "MsiZap TW! {productGuid}" to remove all per-user installations? Any hints will be much appreciated. Thanks, Hyung Buddell, James wrote: > > Tidying up per-user installs is almost impossible, especially when > some users might have left your business so their accounts are no > longer accessible. I try not to use it, but there's always MSIZap... > > -----Original Message----- > From: Ian Elliott (Excell Data Corporation) > [mailto:[EMAIL PROTECTED] > Sent: 24 October 2008 18:46 > To: General discussion for Windows Installer XML toolset. > Subject: Re: [WiX-users] uninstall per user product > > It won't uninstall. Just detects then allows you to put a message up > and advise the user to uninstall the old per-user app then re-run setup. > > I think you are correct that user needs to be admin to run this. > > -----Original Message----- > From: Rob Mensching [mailto:[EMAIL PROTECTED] > Sent: Friday, October 24, 2008 10:44 AM > To: General discussion for Windows Installer XML toolset. > Subject: Re: [WiX-users] uninstall per user product > > Only when admin right? And this won't uninstall right? I think you'd > need to load all the user's profiles to uninstall per-user applications. > Loading user profiles is tricky from what I've heard. > > -----Original Message----- > From: Ian Elliott (Excell Data Corporation) > [mailto:[EMAIL PROTECTED] > Sent: Friday, October 24, 2008 10:41 > To: General discussion for Windows Installer XML toolset. > Subject: Re: [WiX-users] uninstall per user product > > I've used a custom action to do something similar in the past. A > stripped down version of the code is below. I can't guarantee 100% > effectiveness but it worked for my needs at the time. > > UINT __stdcall FunctionName (MSIHANDLE hMsi) { > UINT uiStatus = ERROR_SUCCESS; > > WriteToLog( hMsi, _T("Entering")); > > uiStatus = MsiEnumProductsEx( > _T("{PUT_GUID_HERE}"), // product code to search for > _T("s-1-1-0"), // search all users > MSIINSTALLCONTEXT_USERMANAGED | > MSIINSTALLCONTEXT_USERUNMANAGED > | MSIINSTALLCONTEXT_MACHINE, // search all users > 0, > NULL, > NULL, > NULL, > NULL); > > > > if (uiStatus == ERROR_SUCCESS) // Product was found > { > MSIHANDLE hError = MsiCreateRecord(1); > MsiRecordSetInteger(hError, 1, 2001); // Use code 2001 from > the msi's Error table. Author 2001 in wix file. > MsiProcessMessage(hMsi, INSTALLMESSAGE_ERROR, hError); > } > else // we didn't find the Product > { > WriteToLog( hMsi, _T("Product not found")); > } > > WriteToLog( hMsi, _T("Leaving")); > return uiStatus; > } > > -----Original Message----- > From: Rob Mensching [mailto:[EMAIL PROTECTED] > Sent: Friday, October 24, 2008 10:36 AM > To: General discussion for Windows Installer XML toolset. > Subject: Re: [WiX-users] uninstall per user product > > Sounds very difficult to do correctly. Lots of complicated stuff in > there from what I've heard. > > -----Original Message----- > From: hyung [mailto:[EMAIL PROTECTED] > Sent: Friday, October 24, 2008 09:18 > To: wix-users@lists.sourceforge.net > Subject: Re: [WiX-users] uninstall per user product > > > Thanks for the answer. > > Any hints on how I can find who installed? I need to provide an > uninstall utility which removes prior versions. > > Thanks, > Hyung > > > Rob Mensching-2 wrote: >> >> I believe you'd have to log in as each user and execute the installer >> as that user. >> >> -----Original Message----- >> From: hyung [mailto:[EMAIL PROTECTED] >> Sent: Thursday, October 23, 2008 23:47 >> To: wix-users@lists.sourceforge.net >> Subject: [WiX-users] uninstall per user product >> >> >> Hi all, >> >> I have changed the product install type from per-user to per-machine >> and want to uninstall prior per-user installs. According to the >> archived emails it seems I need to write an uninstall utilitiy to >> remove all products installed by users. My question is "How can I >> find > >> all users who installed the prior version?" >> >> We have used a same product id so I can detect whether the prior >> version is installed or not by checking: >> HLKM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{productid} >> However as only a user who installed the prior version can uninstall >> it, I need to find a list of users who installed the prior version. >> Is > >> there any Windows Installer API that supports this kind of scenario? >> Any hints will be appreciated. >> >> Thanks, >> Hyung >> >> -- >> View this message in context: >> http://n2.nabble.com/uninstall-per-user-product-tp1371127p1371127.htm >> l Sent from the wix-users mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> - >> --- This SF.Net email is sponsored by the Moblin Your Move >> Developer's > >> challenge Build the coolest Linux based applications with Moblin SDK >> & > >> win great prizes Grand prize is a trip for two to an Open Source >> event > >> anywhere in the world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> WiX-users mailing list >> WiX-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/wix-users >> >> >> --------------------------------------------------------------------- >> - >> --- This SF.Net email is sponsored by the Moblin Your Move >> Developer's > >> challenge Build the coolest Linux based applications with Moblin SDK >> & > >> win great prizes Grand prize is a trip for two to an Open Source >> event > >> anywhere in the world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> WiX-users mailing list >> WiX-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/wix-users >> >> > > -- > View this message in context: > http://n2.nabble.com/uninstall-per-user-product-tp1371127p1372635.html > Sent from the wix-users mailing list archive at Nabble.com. > > > ---------------------------------------------------------------------- > -- > - > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge Build the coolest Linux based applications with Moblin SDK & > win great prizes Grand prize is a trip for two to an Open Source event > anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > > ---------------------------------------------------------------------- > -- > - > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge Build the coolest Linux based applications with Moblin SDK & > win great prizes Grand prize is a trip for two to an Open Source event > anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > > ---------------------------------------------------------------------- > -- > - > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge Build the coolest Linux based applications with Moblin SDK & > win great prizes Grand prize is a trip for two to an Open Source event > anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > > ---------------------------------------------------------------------- > -- > - > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge Build the coolest Linux based applications with Moblin SDK & > win great prizes Grand prize is a trip for two to an Open Source event > anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > > ---------------------------------------------------------------------- > -- > - > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge Build the coolest Linux based applications with Moblin SDK & > win great prizes Grand prize is a trip for two to an Open Source event > anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > > -- > This e-mail is confidential and the information contained in it may be > privileged. It should not be read, copied or used by anyone other > than the intended recipient. If you have received it in error, please > contact the sender immediately by telephoning +44 (0)20 7623 8000 or > by return email, and delete the e-mail and do not disclose its > contents to any person. We believe, but do not warrant, that this > e-mail and any attachments are virus free, but you must take full > responsibility for virus checking. Please refer to > http://www.dresdnerkleinwort.com/disc/email/ and read our e-mail > disclaimer statement and monitoring policy. > > Dresdner Kleinwort is the trading name of the investment banking > division of Dresdner Bank AG, and operates through Dresdner Bank AG, > Dresdner Kleinwort Limited and their affiliated or associated > companies. Dresdner Bank AG is a company incorporated in Germany with > limited liability and registered in England (registered no. FC007638, > place of business 30 Gresham Street, London EC2V 7PG), and is > authorised by the German Federal Financial Supervisory Authority and > by the Financial Services Authority > ('FSA') and regulated by the FSA for the conduct of designated > business in the UK. Dresdner Kleinwort Limited is a company > incorporated in England (registered no. 551334, registered office 30 > Gresham Street, London EC2V 7PG), and is authorised and regulated by the FSA. > > > ---------------------------------------------------------------------- > --- This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge Build the coolest Linux based applications with Moblin SDK & > win great prizes Grand prize is a trip for two to an Open Source event > anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > -- View this message in context: http://n2.nabble.com/uninstall-per-user-product-tp1371127p1397042.html Sent from the wix-users mailing list archive at Nabble.com. ------------------------------------------------------------------------ - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- This e-mail is confidential and the information contained in it may be privileged. It should not be read, copied or used by anyone other than the intended recipient. If you have received it in error, please contact the sender immediately by telephoning +44 (0)20 7623 8000 or by return email, and delete the e-mail and do not disclose its contents to any person. We believe, but do not warrant, that this e-mail and any attachments are virus free, but you must take full responsibility for virus checking. Please refer to http://www.dresdnerkleinwort.com/disc/email/ and read our e-mail disclaimer statement and monitoring policy. Dresdner Kleinwort is the trading name of the investment banking division of Dresdner Bank AG, and operates through Dresdner Bank AG, Dresdner Kleinwort Limited and their affiliated or associated companies. Dresdner Bank AG is a company incorporated in Germany with limited liability and registered in England (registered no. FC007638, place of business 30 Gresham Street, London EC2V 7PG), and is authorised by the German Federal Financial Supervisory Authority and by the Financial Services Authority ('FSA') and regulated by the FSA for the conduct of designated business in the UK. Dresdner Kleinwort Limited is a company incorporated in England (registered no. 551334, registered office 30 Gresham Street, London EC2V 7PG), and is authorised and regulated by the FSA. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users