Re: [WiX-users] sql:SqlDatabase drops database on major upgrade
Thanks Michael, I have it working now though I had make a few modifications in your code: the REMOVE property was set to ALL on a major upgrade as well as on uninstall so I added another property to check whether it's a product upgrade - I only want to drop the database on an uninstall and nor on an upgrade. Here is the code that I add to the SqlString element: use [master] IF ('[REMOVE]' = 'ALL' AND '[KMFUNINSTALL]' = 'KMFUNINSTALL') BEGIN ALTER DATABASE $(var.DataBaseName) SET SINGLE_USER WITH ROLLBACK IMMEDIATE DROP DATABASE $(var.DataBaseName) END CustomAction Id=CheckKMFUninstall Property=KMFUNINSTALL Value=KMFUNINSTALL/ In the execute sequence: Custom Action=CheckKMFUninstall After=InstallInitializeInstalled AND NOT UPGRADINGPRODUCTCODE/Custom Michael Osmond wrote: Joe, My appologies, I was not carefull. If you put that SQL code in a SQLString element (not SQLScript), then it is treated like a formatted MSI string, so the [REMOVE] gets expanded to the REMOVE property before execution. My understanding is that REMOVE is set to ALL for an uninstall. Michael From: Joe Osman [mailto:joe.os...@tait.co.nz] Sent: Tue 17/02/2009 12:26 PM To: General discussion for Windows Installer XMLtoolset. Subject: Re: [WiX-users] sql:SqlDatabase drops database on major upgrade Hi Michael, In your answer are you referring to WIX V2 or WIX V3? I am using V3 and when I tried to reschedule the custom action DeleteExistingProduct I got the error message: Unresolved reference to symbol 'CustomAction:DeleteExistingProduct' . In your second comment you are saying that the script should run on ExecuteOnUninstall. Based on your suggestion I've created the following sql script: USE [master] GO IF ('[REMOVE]' = 'ALL') BEGIN DROP DATABASE MyDataBase END but the database doesn't get removed on uninstall. How can the sql script determine the value of [REMOVE] on uninstall? Thank you. Michael Osmond wrote: Hello Joe, I've been in a similar situation. The possible solutions I am aware of: 1. If you schedule the DeleteExistingProduct action at the end of the install (I think after the InstallFinalise), my understanding is that the install should calculate that there still is a count of one on the database component and not remove it. For other reasons I don't use this with mine. 2. Don't use the DropOnUnistall. Set the database as CreateOnInstall=y ContinueOnError=y and then have an SQL Script that is set to run ExecuteOnUninstall that drops the database. You could then put an MSI condition into the script eg: IF ('[REMOVE]' = 'ALL') drop database [DBNAME]. It gives you a little more control. For the books. Because of the nature of data in our server application, our uninstall does not delete the database at all, the user must manually (and hence knowingly) drop the database. PS: Something to check. Test what happens if there is a rollback during (or after) the SQL Install. My experience was that the rollback (because this is technically an install of a new database component) would do the rollback by droping the database. (I am still on WIX V2 and have a slightly modified version of the SQL Custom Actions). Mihael -Original Message- From: Joe Osman [mailto:joe.os...@tait.co.nz] Sent: Monday, 16 February 2009 12:14 PM To: General discussion for Windows Installer XMLtoolset. Subject: [WiX-users] sql:SqlDatabase drops database on major upgrade I want to have my database dropped only during uninstall and to do that I am using sql:SqlDatabase element. The problem is that the database is dropped during a major upgrade. How can I prevent it from happening? Here is the command I am using: Component Id=KmfDatabase Guid={82B345FC-A889-44c2-A964-DE2495DC0D29} sql:SqlDatabase Id=TaitKmf Database=TaitKmf ContinueOnError=yes CreateOnReinstall=no CreateOnUninstall=no CreateOnInstall=no DropOnReinstall=no DropOnUninstall=yes DropOnInstall=no Server=[ComputerName]/ /Component === This email, including any attachments, is only for the intended addressee. It is subject to copyright, is confidential and may be the subject of legal or other privilege, none of which is waived or lost by reason of this transmission. If the receiver is not the intended addressee, please accept our apologies, notify us by return, delete all copies and perform no other act on the email. Unfortunately, we cannot warrant that the email has not been altered or corrupted during transmission. === -- Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation
Re: [WiX-users] sql:SqlDatabase drops database on major upgrade
Thanks for the update Joe, good to see it worked. I had not considered the issue of releasing the database, you may find this is because the SqlString is associated with the database itself. But it will also make sure any users of the database are kicked off. One alternate to using the USE [Master] statement is something like what we do with backing up the database before upgrade. The Database ID sqlserver_Master is not defined as part of a component, so it is not managed by the installer (ie installed or uninstalled) it just a refen The strings that then manipulate our target database actually reference this database, but being under the target database component they only get run with the database component. (again this is in WIX Version 2). SqlDatabase Id=sqlserver_Master Database=master Server=[BAYDBSERVER] Instance=[BAYDBINST]/ DirectoryRef Id=TARGETDIR Component Id=CreateDB Guid=F791A6C2-1281-168B-0021-001143F0301B DiskId=1 Condition![CDATA[(Not BAYUPGRADELIST) and 1]]/Condition !-- Clean up for install only failure -- SqlString Id=CleanupOnInstallFail SqlDb=sqlserver_Master RollbackOnInstall=yes ContinueOnError=no SQL=drop database [BAYAPPDB] Sequence=19/ !-- Set Single User for Backup and MultiUser if rolling back -- SqlString Id=MultiUserOnRollBack SqlDb=sqlserver_Master RollbackOnReinstall=yes RollbackOnInstall=no ContinueOnError=no SQL=alter database [BAYAPPDB] set MULTI_USER Sequence=20/ SqlString Id=SingleUserOnStart SqlDb=sqlserver_Master ExecuteOnInstall=no ExecuteOnReinstall=yes ContinueOnError=no SQL=alter database [BAYAPPDB] set SINGLE_USER With Rollback Immediate Sequence=21/ SqlString Id=BackupOnStart SqlDb=sqlserver_Master ExecuteOnInstall=no ExecuteOnReinstall=yes ContinueOnError=no SQL=backup database [BAYAPPDB] to disk='[BAYBACKUPFOLDER][BAYAPPDB].bak' with INIT Sequence=30/ !-- Restore on minor upgrade rollback -- !-- Restore on minor upgrade rollback -- SqlString Id=RestoreOnRollBack SqlDb=sqlserver_Master RollbackOnReinstall=yes ContinueOnError=no Sequence=40 SQL= -- This sequence restores the database if there is a failure alter database [BAYAPPDB] set SINGLE_USER With Rollback Immediate drop database [BAYAPPDB] restore database [BAYAPPDB] from disk='[BAYBACKUPFOLDER][BAYAPPDB].bak' / -Original Message- From: Joe Osman [mailto:joe.os...@tait.co.nz] Sent: Wednesday, 18 February 2009 10:54 AM To: General discussion for Windows Installer XMLtoolset. Subject: Re: [WiX-users] sql:SqlDatabase drops database on major upgrade Thanks Michael, I have it working now though I had make a few modifications in your code: the REMOVE property was set to ALL on a major upgrade as well as on uninstall so I added another property to check whether it's a product upgrade - I only want to drop the database on an uninstall and nor on an upgrade. Here is the code that I add to the SqlString element: use [master] IF ('[REMOVE]' = 'ALL' AND '[KMFUNINSTALL]' = 'KMFUNINSTALL') BEGIN ALTER DATABASE $(var.DataBaseName) SET SINGLE_USER WITH ROLLBACK IMMEDIATE DROP DATABASE $(var.DataBaseName) END CustomAction Id=CheckKMFUninstall Property=KMFUNINSTALL Value=KMFUNINSTALL/ In the execute sequence: Custom Action=CheckKMFUninstall After=InstallInitializeInstalled AND NOT UPGRADINGPRODUCTCODE/Custom Michael Osmond wrote: Joe, My appologies, I was not carefull. If you put that SQL code in a SQLString element (not SQLScript), then it is treated like a formatted MSI string, so the [REMOVE] gets expanded to the REMOVE property before execution. My understanding is that REMOVE is set to ALL for an uninstall. Michael From: Joe Osman [mailto:joe.os...@tait.co.nz] Sent: Tue 17/02/2009 12:26 PM To: General discussion for Windows Installer XMLtoolset. Subject: Re: [WiX-users] sql:SqlDatabase drops database on major upgrade Hi Michael, In your answer are you referring to WIX V2 or WIX V3? I am using V3 and when I tried to reschedule the custom action DeleteExistingProduct I got the error message: Unresolved reference to symbol 'CustomAction:DeleteExistingProduct' . In your second comment you are saying that the script should run on ExecuteOnUninstall. Based on your suggestion I've created the following sql script: USE [master] GO IF ('[REMOVE]' = 'ALL') BEGIN DROP DATABASE MyDataBase END but the database doesn't get removed on uninstall. How can the sql script determine the value of [REMOVE] on uninstall? Thank you. Michael Osmond wrote
Re: [WiX-users] sql:SqlDatabase drops database on major upgrade
Hi Michael, In your answer are you referring to WIX V2 or WIX V3? I am using V3 and when I tried to reschedule the custom action DeleteExistingProduct I got the error message: Unresolved reference to symbol 'CustomAction:DeleteExistingProduct' . In your second comment you are saying that the script should run on ExecuteOnUninstall. Based on your suggestion I've created the following sql script: USE [master] GO IF ('[REMOVE]' = 'ALL') BEGIN DROP DATABASE MyDataBase END but the database doesn't get removed on uninstall. How can the sql script determine the value of [REMOVE] on uninstall? Thank you. Michael Osmond wrote: Hello Joe, I've been in a similar situation. The possible solutions I am aware of: 1. If you schedule the DeleteExistingProduct action at the end of the install (I think after the InstallFinalise), my understanding is that the install should calculate that there still is a count of one on the database component and not remove it. For other reasons I don't use this with mine. 2. Don't use the DropOnUnistall. Set the database as CreateOnInstall=y ContinueOnError=y and then have an SQL Script that is set to run ExecuteOnUninstall that drops the database. You could then put an MSI condition into the script eg: IF ('[REMOVE]' = 'ALL') drop database [DBNAME]. It gives you a little more control. For the books. Because of the nature of data in our server application, our uninstall does not delete the database at all, the user must manually (and hence knowingly) drop the database. PS: Something to check. Test what happens if there is a rollback during (or after) the SQL Install. My experience was that the rollback (because this is technically an install of a new database component) would do the rollback by droping the database. (I am still on WIX V2 and have a slightly modified version of the SQL Custom Actions). Mihael -Original Message- From: Joe Osman [mailto:joe.os...@tait.co.nz] Sent: Monday, 16 February 2009 12:14 PM To: General discussion for Windows Installer XMLtoolset. Subject: [WiX-users] sql:SqlDatabase drops database on major upgrade I want to have my database dropped only during uninstall and to do that I am using sql:SqlDatabase element. The problem is that the database is dropped during a major upgrade. How can I prevent it from happening? Here is the command I am using: Component Id=KmfDatabase Guid={82B345FC-A889-44c2-A964-DE2495DC0D29} sql:SqlDatabase Id=TaitKmf Database=TaitKmf ContinueOnError=yes CreateOnReinstall=no CreateOnUninstall=no CreateOnInstall=no DropOnReinstall=no DropOnUninstall=yes DropOnInstall=no Server=[ComputerName]/ /Component === This email, including any attachments, is only for the intended addressee. It is subject to copyright, is confidential and may be the subject of legal or other privilege, none of which is waived or lost by reason of this transmission. If the receiver is not the intended addressee, please accept our apologies, notify us by return, delete all copies and perform no other act on the email. Unfortunately, we cannot warrant that the email has not been altered or corrupted during transmission. === -- Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users === This email, including any attachments, is only for the intended addressee. It is subject to copyright, is confidential and may be the subject of legal or other privilege, none of which is waived or lost by reason of this transmission. If the receiver is not the intended addressee, please accept our apologies, notify us by return, delete all copies and perform no other act on the email. Unfortunately, we cannot warrant that the email has not been altered or corrupted during transmission. === -- Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD
Re: [WiX-users] sql:SqlDatabase drops database on major upgrade
Joe, My appologies, I was not carefull. If you put that SQL code in a SQLString element (not SQLScript), then it is treated like a formatted MSI string, so the [REMOVE] gets expanded to the REMOVE property before execution. My understanding is that REMOVE is set to ALL for an uninstall. Michael From: Joe Osman [mailto:joe.os...@tait.co.nz] Sent: Tue 17/02/2009 12:26 PM To: General discussion for Windows Installer XMLtoolset. Subject: Re: [WiX-users] sql:SqlDatabase drops database on major upgrade Hi Michael, In your answer are you referring to WIX V2 or WIX V3? I am using V3 and when I tried to reschedule the custom action DeleteExistingProduct I got the error message: Unresolved reference to symbol 'CustomAction:DeleteExistingProduct' . In your second comment you are saying that the script should run on ExecuteOnUninstall. Based on your suggestion I've created the following sql script: USE [master] GO IF ('[REMOVE]' = 'ALL') BEGIN DROP DATABASE MyDataBase END but the database doesn't get removed on uninstall. How can the sql script determine the value of [REMOVE] on uninstall? Thank you. Michael Osmond wrote: Hello Joe, I've been in a similar situation. The possible solutions I am aware of: 1. If you schedule the DeleteExistingProduct action at the end of the install (I think after the InstallFinalise), my understanding is that the install should calculate that there still is a count of one on the database component and not remove it. For other reasons I don't use this with mine. 2. Don't use the DropOnUnistall. Set the database as CreateOnInstall=y ContinueOnError=y and then have an SQL Script that is set to run ExecuteOnUninstall that drops the database. You could then put an MSI condition into the script eg: IF ('[REMOVE]' = 'ALL') drop database [DBNAME]. It gives you a little more control. For the books. Because of the nature of data in our server application, our uninstall does not delete the database at all, the user must manually (and hence knowingly) drop the database. PS: Something to check. Test what happens if there is a rollback during (or after) the SQL Install. My experience was that the rollback (because this is technically an install of a new database component) would do the rollback by droping the database. (I am still on WIX V2 and have a slightly modified version of the SQL Custom Actions). Mihael -Original Message- From: Joe Osman [mailto:joe.os...@tait.co.nz] Sent: Monday, 16 February 2009 12:14 PM To: General discussion for Windows Installer XMLtoolset. Subject: [WiX-users] sql:SqlDatabase drops database on major upgrade I want to have my database dropped only during uninstall and to do that I am using sql:SqlDatabase element. The problem is that the database is dropped during a major upgrade. How can I prevent it from happening? Here is the command I am using: Component Id=KmfDatabase Guid={82B345FC-A889-44c2-A964-DE2495DC0D29} sql:SqlDatabase Id=TaitKmf Database=TaitKmf ContinueOnError=yes CreateOnReinstall=no CreateOnUninstall=no CreateOnInstall=no DropOnReinstall=no DropOnUninstall=yes DropOnInstall=no Server=[ComputerName]/ /Component === This email, including any attachments, is only for the intended addressee. It is subject to copyright, is confidential and may be the subject of legal or other privilege, none of which is waived or lost by reason of this transmission. If the receiver is not the intended addressee, please accept our apologies, notify us by return, delete all copies and perform no other act on the email. Unfortunately, we cannot warrant that the email has not been altered or corrupted during transmission. === -- Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users === This email, including any attachments, is only for the intended addressee. It is subject to copyright, is confidential and may be the subject of legal or other privilege, none of which is waived or lost by reason of this transmission. If the receiver is not the intended addressee, please accept our apologies, notify us by return, delete all copies and perform no other
Re: [WiX-users] sql:SqlDatabase drops database on major upgrade
Hello Joe, I've been in a similar situation. The possible solutions I am aware of: 1. If you schedule the DeleteExistingProduct action at the end of the install (I think after the InstallFinalise), my understanding is that the install should calculate that there still is a count of one on the database component and not remove it. For other reasons I don't use this with mine. 2. Don't use the DropOnUnistall. Set the database as CreateOnInstall=y ContinueOnError=y and then have an SQL Script that is set to run ExecuteOnUninstall that drops the database. You could then put an MSI condition into the script eg: IF ('[REMOVE]' = 'ALL') drop database [DBNAME]. It gives you a little more control. For the books. Because of the nature of data in our server application, our uninstall does not delete the database at all, the user must manually (and hence knowingly) drop the database. PS: Something to check. Test what happens if there is a rollback during (or after) the SQL Install. My experience was that the rollback (because this is technically an install of a new database component) would do the rollback by droping the database. (I am still on WIX V2 and have a slightly modified version of the SQL Custom Actions). Mihael -Original Message- From: Joe Osman [mailto:joe.os...@tait.co.nz] Sent: Monday, 16 February 2009 12:14 PM To: General discussion for Windows Installer XMLtoolset. Subject: [WiX-users] sql:SqlDatabase drops database on major upgrade I want to have my database dropped only during uninstall and to do that I am using sql:SqlDatabase element. The problem is that the database is dropped during a major upgrade. How can I prevent it from happening? Here is the command I am using: Component Id=KmfDatabase Guid={82B345FC-A889-44c2-A964-DE2495DC0D29} sql:SqlDatabase Id=TaitKmf Database=TaitKmf ContinueOnError=yes CreateOnReinstall=no CreateOnUninstall=no CreateOnInstall=no DropOnReinstall=no DropOnUninstall=yes DropOnInstall=no Server=[ComputerName]/ /Component === This email, including any attachments, is only for the intended addressee. It is subject to copyright, is confidential and may be the subject of legal or other privilege, none of which is waived or lost by reason of this transmission. If the receiver is not the intended addressee, please accept our apologies, notify us by return, delete all copies and perform no other act on the email. Unfortunately, we cannot warrant that the email has not been altered or corrupted during transmission. === -- Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] sql:SqlDatabase drops database on major upgrade
Joe, I don't think you cam do this in WIX V2 (if that's what you using). Michael -Original Message- From: Joe Osman [mailto:joe.os...@tait.co.nz] Sent: Monday, 16 February 2009 12:14 PM To: General discussion for Windows Installer XMLtoolset. Subject: [WiX-users] sql:SqlDatabase drops database on major upgrade I want to have my database dropped only during uninstall and to do that I am using sql:SqlDatabase element. The problem is that the database is dropped during a major upgrade. How can I prevent it from happening? Here is the command I am using: Component Id=KmfDatabase Guid={82B345FC-A889-44c2-A964-DE2495DC0D29} sql:SqlDatabase Id=TaitKmf Database=TaitKmf ContinueOnError=yes CreateOnReinstall=no CreateOnUninstall=no CreateOnInstall=no DropOnReinstall=no DropOnUninstall=yes DropOnInstall=no Server=[ComputerName]/ /Component === This email, including any attachments, is only for the intended addressee. It is subject to copyright, is confidential and may be the subject of legal or other privilege, none of which is waived or lost by reason of this transmission. If the receiver is not the intended addressee, please accept our apologies, notify us by return, delete all copies and perform no other act on the email. Unfortunately, we cannot warrant that the email has not been altered or corrupted during transmission. === -- Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] sql:SqlDatabase drops database on major upgrade
Thanks Michael, I am using WIX V3 Michael Osmond wrote: Joe, I don't think you cam do this in WIX V2 (if that's what you using). Michael -Original Message- From: Joe Osman [mailto:joe.os...@tait.co.nz] Sent: Monday, 16 February 2009 12:14 PM To: General discussion for Windows Installer XMLtoolset. Subject: [WiX-users] sql:SqlDatabase drops database on major upgrade I want to have my database dropped only during uninstall and to do that I am using sql:SqlDatabase element. The problem is that the database is dropped during a major upgrade. How can I prevent it from happening? Here is the command I am using: Component Id=KmfDatabase Guid={82B345FC-A889-44c2-A964-DE2495DC0D29} sql:SqlDatabase Id=TaitKmf Database=TaitKmf ContinueOnError=yes CreateOnReinstall=no CreateOnUninstall=no CreateOnInstall=no DropOnReinstall=no DropOnUninstall=yes DropOnInstall=no Server=[ComputerName]/ /Component === This email, including any attachments, is only for the intended addressee. It is subject to copyright, is confidential and may be the subject of legal or other privilege, none of which is waived or lost by reason of this transmission. If the receiver is not the intended addressee, please accept our apologies, notify us by return, delete all copies and perform no other act on the email. Unfortunately, we cannot warrant that the email has not been altered or corrupted during transmission. === -- Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users === This email, including any attachments, is only for the intended addressee. It is subject to copyright, is confidential and may be the subject of legal or other privilege, none of which is waived or lost by reason of this transmission. If the receiver is not the intended addressee, please accept our apologies, notify us by return, delete all copies and perform no other act on the email. Unfortunately, we cannot warrant that the email has not been altered or corrupted during transmission. === -- Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users