Dear Peter, Thank you for the hint! I replaced it now by ERROR_INSTALL_USEREXIT which fits the best in my opinion.
Regards, Luke Am 26.07.2010 13:03, schrieb Peter Shirtcliffe: > Sorry, I havent been following this thread, but I did have a glance at > the code while waiting for an installation :) > > !ERROR_SUCCESS isnt a valid custom action return. See this list > http://msdn.microsoft.com/en-us/library/aa368072%28VS.85%29.aspx > > > -----Original Message----- > From: Lukas Haase [mailto:lukasha...@gmx.at] > Sent: 26 July 2010 11:44 > To: wix-users@lists.sourceforge.net > Subject: Re: [WiX-users] Upgrading from other setup program to WiX/MSI > > Hi, > > I changed my approach a little bit. For reference: > > This is what I added to my wxs file: > > <CustomAction Id='CheckingSpecialist' BinaryKey='CheckingSpecialist' > DllEntry='CheckSpecialist' /> > <InstallUISequence> > <Custom Action='CheckingSpecialist' After='LaunchConditions' /> > </InstallUISequence> <Binary Id='CheckingSpecialist' > SourceFile='CheckSpecialist.dll' /> > > And this is my small CheckSpecialist.c: > > http://pastebin.com/mBL01Wtz > > So the return value is either ERROR_SUCCESS or !ERROR_SUCCESS. I do not > use MsiSetProperty any more and just one custom action. > > If anybody sees a bad thing in this approach/code I would really > appreciate a hint. > > Regards, > Luke > > > > Am 25.07.2010 17:27, schrieb Blair: >> If the other setup package is ultimately MSI, you should ideally use >> the Upgrade table to remove it (via the RemoveExistingProducts action >> using the "Major Upgrade" method). However, that doesn't work if the >> ALLUSERS value differs between the two installations and you will need > >> to look at ways to bootstrap that uninstallation, since you can't run >> it at all from the InstallExecuteSequence. >> >> If the other setup package is not-at-all MSI, there is nothing to pass > >> to Windows Installer, since WI can only deal with MSI packages, and >> you will need to execute the uninstall executable somehow/somewhere. >> >> -----Original Message----- >> From: Lukas Haase [mailto:lukasha...@gmx.at] >> Sent: Sunday, July 25, 2010 5:18 AM >> To: wix-users@lists.sourceforge.net >> Subject: Re: [WiX-users] Upgrading from other setup program to WiX/MSI >> >> Dear Blair, >> >> Thank you for the hint! I will replace my MessageBox-call prompt with >> MsiProcessMessage/WcaProcessMessage ... >> >> Apart from this, my approach is good practice? Or is it maybe better >> to pass the uninstall to MSI and executing it there rather than >> calling ShellExecuteEx from the DLL? >> >> Regards, >> Luke >> >> >> Am 23.07.2010 08:54, schrieb Blair: >>> You shouldn't prompt from the execute sequence. There are ways of >> "running" >>> MSI files where there is no user session to respond to the prompt and > >>> you would hang your install. >>> >>> The best way to show a message box from a custom action (and the only > >>> supported way if you must do so from the execute sequence) is using >>> the MsiProcessMessage API (or something that wraps it, like >>> WcaProcessMessage >> or >>> Microsoft.Deployment.WindowsInstaller.Session.Message). >>> >>> -----Original Message----- >>> From: Lukas Haase [mailto:lukasha...@gmx.at] >>> Sent: Thursday, July 22, 2010 12:47 PM >>> To: wix-users@lists.sourceforge.net >>> Subject: Re: [WiX-users] Upgrading from other setup program to >>> WiX/MSI >>> >>> Dear Blair, >>> >>> Am 22.07.2010 01:04, schrieb Blair: >>>> 1. You can build MSIs with WiX that don't require running the setup >>>> as administrator. Nothing that can be done outside of Windows >>>> Installer >>> without >>>> elevation requires elevation in Windows Installer to also do. >>> >>> In fact this is exactly what I do NOT want: I need to register a COM >>> component which requires admin privileges. >>> >>> So I have >>> >>> <Property Id="ALLUSERS">1</Property> >>> >>> and >>> >>> <Condition Message="..."> >>> Privileged >>> </Condition> >>> >>> and I am lucky. In fact this is exactly what messed up my previous >>> installations with SetupSpecialist: The old "viewer" did not need >>> registering a COM, so some users installed as admins and systemwide, >>> others not. >>> >>> Finally, SetupSpecialist lets you run the setup as normal user and >>> when registering the COM the there is an error. The setup terminates >>> and the a half installed system is left. >>> >>> In my opinion it is the best and consistent way to install the >>> software just into the system (incl. Shortcuts for all users) >>> >>>> 2. Windows Installer has no built-in support for detecting/removing >>> non-MSI >>>> packages. However, if you know how to find/remove your >>>> SetupSpecialist package (the Uninstall key, perhaps?) then you can >>>> detect presence and automate removal as part of your upgrade (does >>>> the old installer allow "silent" removal?) You may have trouble >>>> detecting/removing things >>> installed >>>> by other than the current user, however, but that is due to the >>>> nature of how Windows treats user accounts/profiles, not do to any >>>> inherent >>> limitation >>>> in Windows Installer itself. >>> >>> Thank you for the hint. This is what I have done now. As written in a > >>> new post ("InstallExecuteSequence completely ignored") I face heavy >>> problems concerning this right now. >>> >>> However, my approach is: >>> >>> <CustomAction Id='CheckingSpecialist' BinaryKey='CheckingSpecialist' >>> DllEntry='CheckSpecialist' /> >>> <CustomAction Id='RefuseInstall' Error='You must uninstall the old >>> one first' /> >>> >>> <InstallExecuteSequence> >>> <Custom Action='CheckingSpecialist' After='LaunchConditions' /> >>> <Custom Action='RefuseInstall' After='CheckingSpecialist'>ABORT >>> = "1"</Custom> </InstallExecuteSequence> >>> >>> <Binary Id='CheckingSpecialist' >>> SourceFile='CheckSpecialist/Release/CheckSpecialist.dll' /> >>> >>> The DLL just opens the registry key in Uninstall and reads out the >>> path to the uninstall program. >>> >>> Then it asks: "You must remove the old first, do you want to?". If >>> the users answers with no, then ABORT = 1 is set. >>> >>> Otherwise, the process uninstall is started with ShellExecuteEx and >>> waited for termination with WaitForSingleObject. Afterwards ABORT = 0 > >>> is set. >>> >>> If it fails to open the key (i.e. no old version found) just ABORT = >>> 0 is set. >>> >>> Is this a good idea or did I break some best practices? >>> >>> Regards, >>> Luke >>> >>> >>> >>> >> ---------------------------------------------------------------------- >> ------ >>> -- >>> This SF.net email is sponsored by Sprint What will you do first with >>> EVO, the first 4G phone? >>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first >>> _______________________________________________ >>> WiX-users mailing list >>> WiX-users@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/wix-users >>> >>> >>> >> ---------------------------------------------------------------------- >> ------ >> -- >>> This SF.net email is sponsored by Sprint What will you do first with >>> EVO, the first 4G phone? >>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first >> >> >> >> ---------------------------------------------------------------------- >> ------ >> -- >> This SF.net email is sponsored by Sprint What will you do first with >> EVO, the first 4G phone? >> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first >> _______________________________________________ >> WiX-users mailing list >> WiX-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/wix-users >> >> >> ---------------------------------------------------------------------- >> -------- This SF.net email is sponsored by Sprint What will you do >> first with EVO, the first 4G phone? >> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > > > > ------------------------------------------------------------------------ > ------ > The Palm PDK Hot Apps Program offers developers who use the Plug-In > Development Kit to bring their C/C++ apps to Palm for a share of $1 > Million in cash or HP Products. Visit us here for more details: > http://ad.doubleclick.net/clk;226879339;13503038;l? > http://clk.atdmt.com/CRS/go/247765532/direct/01/ > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > </pre> > <BR style="font-size:4px;"> > <a href = "http://www.sdl.com"><img src="http://www.sdl.com/images/email > logo_150dpi-01.png" alt="www.sdl.com" border="0"/></a> > <BR> > <font face="arial" size="2" "><a href = "http://www.sdl.com" > style="color:005740; font-weight: bold">www.sdl.com</a> > <BR> > <BR> > <font face="arial" size="1" color="#736F6E"> > <b>SDL PLC confidential, all rights reserved.</b> > If you are not the intended recipient of this mail SDL requests and requires > that you delete it without acting upon or copying any of its contents, and we > further request that you advise us.<BR> > SDL PLC is a public limited company registered in England and Wales. > Registered number: 02675207.<BR> > Registered address: Globe House, Clivemont Road, Maidenhead, Berkshire SL6 > 7DY, UK. > </font> > > > > ------------------------------------------------------------------------------ > The Palm PDK Hot Apps Program offers developers who use the > Plug-In Development Kit to bring their C/C++ apps to Palm for a share > of $1 Million in cash or HP Products. Visit us here for more details: > http://ad.doubleclick.net/clk;226879339;13503038;l? > http://clk.atdmt.com/CRS/go/247765532/direct/01/ ------------------------------------------------------------------------------ The Palm PDK Hot Apps Program offers developers who use the Plug-In Development Kit to bring their C/C++ apps to Palm for a share of $1 Million in cash or HP Products. Visit us here for more details: http://ad.doubleclick.net/clk;226879339;13503038;l? http://clk.atdmt.com/CRS/go/247765532/direct/01/ _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users