In the log I can see that SQL Server is shut down on the
InstallValidate step.  I tried to put the custom action before that
step but I get the ICE error that it must be between InstallInitialize
and InstallFinalize.

Any suggestions on that?

                <InstallExecuteSequence>
                        
<!--http://stackoverflow.com/questions/320921/how-to-add-a-wix-custom-action-that-happens-only-on-uninstall-via-msi-->
                        <Custom Action="ExecuteSqlStrings" 
Before="InstallValidate">
                                (NOT UPGRADINGPRODUCTCODE) AND (REMOVE~="ALL")
                        </Custom>
                </InstallExecuteSequence>

Error   13      ICE77: ExecuteSqlStrings is a in-script custom action.  It
must be sequenced in between the InstallInitialize action and the
InstallFinalize action in the InstallExecuteSequence
table   C:\Projects\QCEW\IQDev0.2.2.4\Setup\Product.wxs 84      1



On Thu, Jun 3, 2010 at 9:11 AM, Pally Sandher <pally.sand...@iesve.com> wrote:
> Condition it with "Installed" or something similar in that case (remember to 
> account/test for repair, modify & patching/upgrading where applicable to your 
> installer).
> e.g. <Custom Action="ExecuteSqlStrings" 
> After="InstallInitialize">Installed</Custom>
> Might need to add stuff like "AND NOT REINSTALL" if you don't want it to run 
> during repair/modify/patch/upgrade.
>
> As I said open the original MSI in InstEd!/Orca & see what Condition it has 
> already & then copy whatever the condition on it is to your code.
>
> MSDN page on sequence tables has some of that info in it -> 
> http://msdn.microsoft.com/en-us/library/aa372404(v=VS.85).aspx It's not 
> exhaustive as the examples don't have optional stuff like 
> RemoveExistingProducts listed.
> Best place to look I've found is the WiX documentation pages for the Sequence 
> Elements (e.g. 
> http://wix.sourceforge.net/manual-wix3/wix_xsd_installexecutesequence.htm) 
> however nowhere is going to list Custom Actions like ExecuteSqlStrings anyway 
> so opening your MSI in InstEd!/Orca & looking at the tables is probably 
> easier in this case.
>
> Palbinder Sandher
> Software Deployment & IT Administrator
> T: +44 (0) 141 945 8500
> F: +44 (0) 141 945 8501
>
> http://www.iesve.com
> **Design, Simulate + Innovate with the <Virtual Environment>**
> Integrated Environmental Solutions Limited. Registered in Scotland No. 
> SC151456
> Registered Office - Helix Building, West Of Scotland Science Park, Glasgow 
> G20 0SP
> Email Disclaimer
>
> -----Original Message-----
> From: Nathan Zaugg [mailto:nza...@gmail.com]
> Sent: 03 June 2010 15:42
> To: General discussion for Windows Installer XML toolset.
> Subject: Re: [WiX-users] Detach Databases on Uninstall
>
> Pally,
>
> That's close, but it doesn't work because it tries to run on install and I 
> need it to run on uninstall.  I knew it had to be some kind of 
> InstallExecuteSequence, I just wasn't sure of the to make it work with 
> uninstall.  By the way, is there a list of these actions and install steps 
> that I can reference?
>
> Thanks!
> Nate
>
> On Thu, Jun 3, 2010 at 5:52 AM, Pally Sandher <pally.sand...@iesve.com> wrote:
>> Couldn't you just reschedule the ExecuteSqlStrings action by adding it to 
>> the InstallExecuteSequence with the appropriate Before="" or After="" 
>> attribute?
>>
>> That's how I worked around an issue with the SchedXMLConfig action before it 
>> was modified to run after the DuplicateFiles action as it would error in a 
>> pre-final build of WiX v3.0 if you tried to use XMLConfig on a CopyFile'd 
>> file. Try something like:
>>
>>    <InstallExecuteSequence>
>>      <Custom Action="ExecuteSqlStrings" After="InstallInitialize" />
>>    </InstallExecuteSequence>
>>
>> You may want to pop your MSI open in InstEd!/Orca first to check the 
>> InstallExecuteSequence & copy any Condition set on ExecuteSqlStrings into 
>> your code.
>>
>> Palbinder Sandher
>> Software Deployment & IT Administrator
>> T: +44 (0) 141 945 8500
>> F: +44 (0) 141 945 8501
>>
>> http://www.iesve.com
>> **Design, Simulate + Innovate with the <Virtual Environment>**
>> Integrated Environmental Solutions Limited. Registered in Scotland No.
>> SC151456 Registered Office - Helix Building, West Of Scotland Science
>> Park, Glasgow G20 0SP Email Disclaimer
>>
>>
>> -----Original Message-----
>> From: dB. [mailto:dbl...@dblock.org]
>> Sent: 03 June 2010 12:13
>> To: General discussion for Windows Installer XML toolset.
>> Subject: Re: [WiX-users] Detach Databases on Uninstall
>>
>> There's a set of immediate custom actions in http://msiext.codeplex.com that 
>> you can schedule at will. The one you want is ODBCExecute.
>>
>> There's also a whole stack of Wix extensions for ODBC generically and SQL 
>> server specifically if you decide that what's included in Wix doesn't do it 
>> for you.
>>
>> cheers
>> dB.
>>
>> dB. @ dblock.org
>> Moscow|Geneva|Seattle|New York
>>
>>
>> -----Original Message-----
>> From: Nathan Zaugg [mailto:nza...@gmail.com]
>> Sent: Wednesday, June 02, 2010 7:07 PM
>> To: General discussion for Windows Installer XML toolset.
>> Subject: Re: [WiX-users] Detach Databases on Uninstall
>>
>> I think I now have some insight.  The reason I can't connect is because WIX 
>> detected that SQL Server was using a file that was included in the 
>> installation and stopped SQL Server during the uninstall.
>>
>> Any idea how I coax it to running those scripts toward the beginning of the 
>> uninstall?
>>
>>
>>
>> Action 17:02:12: ExecuteSqlStrings. Executing SQL Strings MSI (s) (F8:F4) 
>> [17:02:12:349]: Executing op:
>> CustomActionSchedule(Action=ExecuteSqlStrings,ActionType=25601,Source=
>> BinaryData,Target=**********,CustomActionData=**********)
>> MSI (s) (F8:F4) [17:02:12:358]: Creating MSIHANDLE (44) of type 790536 for 
>> thread 5108 MSI (s) (F8:6C) [17:02:12:359]: Invoking remote custom action. 
>> DLL:
>> C:\Windows\Installer\MSIC91F.tmp, Entrypoint: ExecuteSqlStrings MSI
>> (s) (F8!80) [17:02:29:356]: Creating MSIHANDLE (45) of type 790531 for
>> thread 1152
>> ExecuteSqlStrings:  Error 0x80004005: continuing after failure to
>> connect to database: master MSI (s) (F8!80) [17:02:29:356]: Closing
>> MSIHANDLE (45) of type 790531 for thread 1152 MSI (s) (F8!80)
>> [17:02:29:357]: Creating MSIHANDLE (46) of type 790531 for thread 1152
>> ExecuteSqlStrings:  Error 0x80004005: continuing after failure to
>> connect to database: master MSI (s) (F8!80) [17:02:29:357]: Closing
>> MSIHANDLE (46) of type 790531 for thread 1152 MSI (s) (F8!80)
>> [17:02:29:357]: Creating MSIHANDLE (47) of type 790531 for thread 1152
>> ExecuteSqlStrings:  Error 0x80004005: continuing after failure to
>> connect to database: master MSI (s) (F8!80) [17:02:29:358]: Closing
>> MSIHANDLE (47) of type 790531 for thread 1152 MSI (s) (F8!80)
>> [17:02:29:358]: Creating MSIHANDLE (48) of type 790531 for thread 1152
>> ExecuteSqlStrings:  Error 0x80004005: continuing after failure to
>> connect to database: master MSI (s) (F8!80) [17:02:29:358]: Closing
>> MSIHANDLE (48) of type 790531 for thread 1152 MSI (s) (F8!80)
>> [17:02:29:358]: Creating MSIHANDLE (49) of type 790531 for thread 1152
>> ExecuteSqlStrings:  Error 0x80004005: continuing after failure to
>> connect to database: master MSI (s) (F8!80) [17:02:29:359]: Closing
>> MSIHANDLE (49) of type 790531 for thread 1152 MSI (s) (F8!80)
>> [17:02:29:359]: Creating MSIHANDLE (50) of type 790531 for thread 1152
>> ExecuteSqlStrings:  Error 0x80004005: continuing after failure to
>> connect to database: master MSI (s) (F8!80) [17:02:29:359]: Closing
>> MSIHANDLE (50) of type 790531 for thread 1152 MSI (s) (F8:6C)
>> [17:02:29:363]: Closing MSIHANDLE (44) of type 790536 for thread 5108
>>
>>
>> On Tue, Jun 1, 2010 at 4:55 PM, Michael Osmond <mosm...@baytech.com.au> 
>> wrote:
>>> Hi
>>>
>>> Another option to trace this is to use SQL Profiler - it should show the 
>>> calls being made and any errors occurring.
>>>
>>> By setting ContinueOnError="yes" any errors will be swallowed (they may be 
>>> in the log).  If you are doing this only to make the uninstall robust 
>>> against the database not existing, perhaps you should wrap the detach 
>>> process in a test of the database existing instead.
>>>
>>> Michael
>>>
>>>
>>> -----Original Message-----
>>> From: Pally Sandher [mailto:pally.sand...@iesve.com]
>>> Sent: Wednesday, 2 June 2010 4:12 AM
>>> To: General discussion for Windows Installer XML toolset.
>>> Subject: Re: [WiX-users] Detach Databases on Uninstall
>>>
>>> Try using "msiexec /i <msiname> /l*vx <logname>" to get verbose logs.
>>>
>>> I'm not sure on what info the WiX Standard Custom Actions like SqlExtension 
>>> put into the logs but those options should get everything & might help 
>>> point out where it's failing. For some reason I've got a feeling there is 
>>> some Property or variable you may need to set to get the Standard Custom 
>>> Actions to put more stuff into the logs, not 100% sure on that though & I 
>>> can't find any reference to it anywhere so I might be mixing it up with 
>>> something else. Hopefully if it does exist someone else will remember what 
>>> I'm rambling about & clarify.
>>>
>>> Palbinder Sandher
>>> Software Deployment & IT Administrator
>>> T: +44 (0) 141 945 8500
>>> F: +44 (0) 141 945 8501
>>>
>>> http://www.iesve.com
>>> **Design, Simulate + Innovate with the <Virtual Environment>**
>>> Integrated Environmental Solutions Limited. Registered in Scotland No.
>>> SC151456 Registered Office - Helix Building, West Of Scotland Science
>>> Park, Glasgow G20 0SP Email Disclaimer
>>>
>>> -----Original Message-----
>>> From: Nathan Zaugg [mailto:nza...@gmail.com]
>>> Sent: 28 May 2010 19:58
>>> To: wix-users@lists.sourceforge.net
>>> Subject: [WiX-users] Detach Databases on Uninstall
>>>
>>> I am trying to detach databases on uninstall.  I know the commands I have 
>>> work but for some reason this action fails.  We're using integrated 
>>> authentication and I wonder if that might be part of it.  I have also tried 
>>> running osql/sqlcmd as an install action.  It didn't work either and it 
>>> didn't give me anything interesting in the log.
>>>
>>> Any suggestions?  If I run these commands from a command line they work 
>>> fine.
>>>
>>> Thanks!
>>> Nate
>>>
>>> <sql:SqlDatabase Id="Master" Server="." Instance="SQLEXPRESS"
>>> Database="master" />
>>>
>>> <sql:SqlString Id="OfflineQCEW" ContinueOnError="yes"
>>> ExecuteOnUninstall="yes" SqlDb="Master" SQL="ALTER DATABASE QCEW.Deploy SET 
>>> OFFLINE WITH ROLLBACK IMMEDIATE" /> <sql:SqlString Id="DetachQCEW" 
>>> ContinueOnError="yes"
>>> ExecuteOnUninstall="yes" SqlDb="Master" SQL="EXEC
>>> master.dbo.sp_detach_db @dbname = N'[iQFolder]\QCEW.Deploy.MDF'"/>
>>>
>>> <!--Detach QCEWCommon-->
>>> <sql:SqlString Id="OfflineQCEWCommon" ContinueOnError="yes"
>>> ExecuteOnUninstall="yes" SqlDb="Master" SQL="ALTER DATABASE QCEWCommon SET 
>>> OFFLINE WITH ROLLBACK IMMEDIATE" /> <sql:SqlString Id="DetachQCEWCommon" 
>>> ContinueOnError="yes"
>>> ExecuteOnUninstall="yes" SqlDb="Master" SQL="EXEC
>>> master.dbo.sp_detach_db @dbname = N'[iQFolder]\QCEWCommon.MDF'"/>
>>>
>>> <!--Detach QCEWSecurity-->
>>> <sql:SqlString Id="OfflineQCEWSecurity" ContinueOnError="yes"
>>> ExecuteOnUninstall="yes" SqlDb="Master" SQL="ALTER DATABASE QCEWSecurity 
>>> SET OFFLINE WITH ROLLBACK IMMEDIATE" /> <sql:SqlString 
>>> Id="DetachQCEWSecurity" ContinueOnError="yes"
>>> ExecuteOnUninstall="yes"  SqlDb="Master" SQL="EXEC
>>> master.dbo.sp_detach_db @dbname = N'[iQFolder]\QCEWSECURITY.MDF'"/>
>>>
>>>
>>> Action 19:16:00: ExecuteSqlStrings. Executing SQL Strings
>>> ExecuteSqlStrings:  Error 0x80004005: continuing after failure to
>>> connect to database: master
>>> ExecuteSqlStrings:  Error 0x80004005: continuing after failure to
>>> connect to database: master
>>> ExecuteSqlStrings:  Error 0x80004005: continuing after failure to
>>> connect to database: master
>>> ExecuteSqlStrings:  Error 0x80004005: continuing after failure to
>>> connect to database: master
>>> ExecuteSqlStrings:  Error 0x80004005: continuing after failure to
>>> connect to database: master
>>> ExecuteSqlStrings:  Error 0x80004005: continuing after failure to
>>> connect to database: master
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> -
>>> --------
>>>
>>> _______________________________________________
>>> WiX-users mailing list
>>> WiX-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>>
>>> ---------------------------------------------------------------------
>>> -
>>> --------
>>>
>>> _______________________________________________
>>> WiX-users mailing list
>>> WiX-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>>
>>
>> ----------------------------------------------------------------------
>> -------- ThinkGeek and WIRED's GeekDad team up for the Ultimate
>> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit. 
>>  See the prize list and enter to win:
>> http://p.sf.net/sfu/thinkgeek-promo
>> _______________________________________________
>> WiX-users mailing list
>> WiX-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>
>> ----------------------------------------------------------------------
>> -------- ThinkGeek and WIRED's GeekDad team up for the Ultimate
>> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit. 
>>  See the prize list and enter to win:
>> http://p.sf.net/sfu/thinkgeek-promo
>> _______________________________________________
>> WiX-users mailing list
>> WiX-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>
>>
>>
>> ----------------------------------------------------------------------
>> -------- ThinkGeek and WIRED's GeekDad team up for the Ultimate
>> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the lucky parental
>> unit.  See the prize list and enter to win:
>> http://p.sf.net/sfu/thinkgeek-promo
>> _______________________________________________
>> WiX-users mailing list
>> WiX-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>
>
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate GeekDad Father's Day 
> Giveaway. ONE MASSIVE PRIZE to the lucky parental unit.  See the prize list 
> and enter to win:
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
>
>
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
> lucky parental unit.  See the prize list and enter to win:
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to