Nevertheless, that "immediate" custom action is incorrect. I'll just repeat that immediate custom actions cannot run installed files because no files have yet been installed! This is a logical error in your install, and that custom action action is working only because sometimes the installutil.exe file is still there.
Phil -----Original Message----- From: tyler.w.r...@accenture.com [mailto:tyler.w.r...@accenture.com] Sent: Wednesday, June 05, 2013 6:57 AM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] Running a repair after install automatically Hello, I know I need to schedule the REP early that is what I want to do, but due to some bad decisions by my predecessor I was unable to do that because the REP would fail because of the custom action. I have however managed to find a fix and get my REP scheduled early. To fix this issue I had to set IgnoreRemoveFailure="yes" on the UpgradeVersion element. Now I have my REP early and I will fix the custom actions to avoid this problem in future versions. Thank you all for your help. Date: Tue, 4 Jun 2013 11:20:22 -0700 From: "Phil Wilson" <phil.wil...@mvps.org<mailto:phil.wil...@mvps.org>> Subject: Re: [WiX-users] Running a repair after install automatically To: "'General discussion for Windows Installer XML toolset.'" <wix-users@lists.sourceforge.net<mailto:wix-users@lists.sourceforge.net>> Message-ID: <sig.18678a29c2.sig.98677793d3.6188F422DA5C4B3CAD2D4C3C2A46DB54@PhilPC> Content-Type: text/plain; charset="us-ascii" If you're restructuring the components and guids then you must run your REP early to uninstall the old product before installing the new one, such as after InstallValidate. Your issue may be that your custom action is immediate because that means "before any files have been installed. I suspect your custom action works when you sequence REP towards the end because the old files are still on the system and your quiet exec runs the old InstallUtil.exe that hasn't yet been removed. Phil -----Original Message----- From: Hoover, Jacob [mailto:jacob.hoo...@greenheck.com] Sent: Tuesday, June 04, 2013 10:19 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Running a repair after install automatically I'm confused about: if I schedule the remove existing product early like our other installer then during that action the install fails as the dll is gone when the custom action to InstallUtil.dll gets called. If you schedule it afterInstallValidate or afterInstallInitialize, the old product is removed before the new one is installed. If you did it afterInstallExecute, I could see the behavior you are describing. >From the help file: afterInstallValidate - (Default) Schedules RemoveExistingProducts after the InstallValidate standard action. This scheduling removes the installed product entirely before installing the upgrade product. It's slowest but gives the most flexibility in changing components and features in the upgrade product. Note that if the installation of the upgrade product fails, the machine will have neither version installed. afterInstallInitialize - Schedules RemoveExistingProducts after the InstallInitialize standard action. This is similar to the afterInstallValidate scheduling, but if the installation of the upgrade product fails, Windows Installer also rolls back the removal of the installed product -- in other words, reinstalls it. -----Original Message----- From: tyler.w.r...@accenture.com<mailto:tyler.w.r...@accenture.com> [mailto:tyler.w.r...@accenture.com] Sent: Tuesday, June 04, 2013 11:50 AM To: wix-users@lists.sourceforge.net<mailto:wix-users@lists.sourceforge.net> Subject: [WiX-users] Running a repair after install automatically Hello, I have a problem with an older install that we have restructured to conform to the single file per component rules. However inside of this installer is some custom actions that call the InstallUtil.exe to install some performance counters that we have in a dll that gets installed. The problem we have comes when we do a major upgrade if I schedule the remove existing product early like our other installer then during that action the install fails as the dll is gone when the custom action to InstallUtil.dll gets called. So I left the RemoveExisting action before InstallFinalize and put the old Guid from the previous version back on that Dll and that gets me through the install, but a lot of the components that had multiple files are now in single components and get removed when the RemoveExisting action runs. So basically I am left with a completed install and most of the files have been removed. If I manually run a repair that fixes it, but I was wondering if there was any other way I could fix this and at the very least is there any way to automatically run the repair so our customers don't have to do it manually? I have pasted the relevant code for the performance counter custom actions below. <Property Id="PerformanceCounterCustomActions" Value="1" /> <!--We use netframework20 because installutil does not exist in the .net35 installrootdir--> <!--TODO: make this handle .net40 and prefer 40--> <PropertyRef Id="NETFRAMEWORK20INSTALLROOTDIR"/> <PropertyRef Id="NETFRAMEWORK40FULLINSTALLROOTDIR"/> <Property Id="INSTALLUTILDIR" Value="NETFRAMEWORK20INSTALLROOTDIR" /> <CustomAction Id="SetInstallUtilDirToNetframework20" Property="INSTALLUTILDIR" Value="[NETFRAMEWORK20INSTALLROOTDIR]"/> <CustomAction Id="SetInstallUtilDirToNetframework40" Property="INSTALLUTILDIR" Value="[NETFRAMEWORK40FULLINSTALLROOTDIR]"/> <CustomAction Id="InstallDuckCreek.Lib.dllPerfCounters_cmd" Property="InstallDuckCreek.Lib.dllPerfCounters" Value='"[INSTALLUTILDIR]InstallUtil.exe" /LogToConsole=false "[#DuckCreek.Lib.dll]"' Execute='immediate'/> <CustomAction Id="InstallDuckCreek.Lib.dllPerfCounters" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute='deferred' Return='check' Impersonate='no'/> <CustomAction Id='UnInstallDuckCreek.Lib.dllPerfCounters_cmd' Property='UnInstallDuckCreek.Lib.dllPerfCounters' Value='"[INSTALLUTILDIR]InstallUtil.exe" /LogToConsole=false /u "[#DuckCreek.Lib.dll]"' Execute='immediate'/> <CustomAction Id="UnInstallDuckCreek.Lib.dllPerfCounters" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute='deferred' Return='check' Impersonate='no'/> <CustomAction Id="RollbackInstallDuckCreek.Lib.dllPerfCounters_cmd" Property='RollbackInstallDuckCreek.Lib.dllPerfCounters' Value='"[INSTALLUTILDIR]InstallUtil.exe" /LogToConsole=false /u "[#DuckCreek.Lib.dll]"' Execute='immediate'/> <CustomAction Id='RollbackInstallDuckCreek.Lib.dllPerfCounters' BinaryKey="WixCA" DllEntry="CAQuietExec" Execute='rollback' Return='check' Impersonate='no'/> <CustomAction Id='RollbackUnInstallDuckCreek.Lib.dllPerfCounters_cmd' Property='RollbackUnInstallDuckCreek.Lib.dllPerfCounters' Value='"[INSTALLUTILDIR]InstallUtil.exe" /LogToConsole=false "[#DuckCreek.Lib.dll]"' Execute='immediate'/> <CustomAction Id='RollbackUnInstallDuckCreek.Lib.dllPerfCounters' BinaryKey="WixCA" DllEntry="CAQuietExec" Execute='rollback' Return='check' Impersonate='no'/> <InstallExecuteSequence> <Custom Action="SetInstallUtilDirToNetframework20" After="AppSearch" /> <Custom Action="SetInstallUtilDirToNetframework40" After="SetInstallUtilDirToNetframework20"><![CDATA[NETFRAMEWORK40FULLINSTALL ROOTDIR]]></Custom> <Custom Action="RollbackInstallDuckCreek.Lib.dllPerfCounters_cmd" Before='RollbackInstallDuckCreek.Lib.dllPerfCounters' /> <Custom Action='RollbackInstallDuckCreek.Lib.dllPerfCounters' Before='InstallDuckCreek.Lib.dllPerfCounters'><![CDATA[NOT((NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")) AND NOT REMOVEINSTALLSHIELD]]></Custom> <Custom Action="InstallDuckCreek.Lib.dllPerfCounters_cmd" Before='InstallDuckCreek.Lib.dllPerfCounters' /> <Custom Action="InstallDuckCreek.Lib.dllPerfCounters" After="InstallFiles" ><![CDATA[NOT((NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL"))]]></Custom> <Custom Action="RollbackUnInstallDuckCreek.Lib.dllPerfCounters_cmd" Before='RollbackUnInstallDuckCreek.Lib.dllPerfCounters' /> <Custom Action='RollbackUnInstallDuckCreek.Lib.dllPerfCounters' Before='UnInstallDuckCreek.Lib.dllPerfCounters'><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") AND NOT REMOVEINSTALLSHIELD]]></Custom> <Custom Action="UnInstallDuckCreek.Lib.dllPerfCounters_cmd" Before='UnInstallDuckCreek.Lib.dllPerfCounters' /> <Custom Action="UnInstallDuckCreek.Lib.dllPerfCounters" After="MsiUnpublishAssemblies" ><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]></Custom> </InstallExecuteSequence> Tyler Reid | Operations and Infrastructure | Accenture Software | P&C Insurance 1807 Jones Street | Bolivar, MO 65613| USA Office: +cc.xxx.xxx.xxxx | Fax: 417.777.3792 E-Mail: tyler.w.r...@accenture.com<mailto:tyler.w.r...@accenture.com<mailto:tyler.w. r...@accenture.com%3cmailto:tyler.w.r...@accenture.com>> | www.accenture.com/pcsoftware<http://www.accenture.com/pcsoftware<http://www. accenture.com/pcsoftware%3chttp:/www.accenture.com/pcsoftware>> ________________________________ This message is for the designated recipient only and may contain privileged, proprietary, or otherwise confidential information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the e-mail by you is prohibited. Where allowed by local law, electronic communications with Accenture and its affiliates, including e-mail and instant messaging (including content), may be scanned by our systems for the purposes of information security and assessment of internal compliance with Accenture policy. ____________________________________________________________________________ __________ www.accenture.com<http://www.accenture.com> ---------------------------------------------------------------------------- -- How ServiceNow helps IT people transform IT departments: 1. A cloud service to automate IT design, transition and operations 2. Dashboards that offer high-level views of enterprise services 3. A single system of record for all IT processes http://p.sf.net/sfu/servicenow-d2d-j _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net<mailto:WiX-users@lists.sourceforge.net> https://lists.sourceforge.net/lists/listinfo/wix-users ---------------------------------------------------------------------------- -- How ServiceNow helps IT people transform IT departments: 1. A cloud service to automate IT design, transition and operations 2. Dashboards that offer high-level views of enterprise services 3. A single system of record for all IT processes http://p.sf.net/sfu/servicenow-d2d-j _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net<mailto:WiX-users@lists.sourceforge.net> https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------ Tyler Reid | Operations and Infrastructure | Accenture Software | P&C Insurance 1807 Jones Street | Bolivar, MO 65613| USA Office: +cc.xxx.xxx.xxxx | Fax: 417.777.3792 E-Mail: tyler.w.r...@accenture.com<mailto:tyler.w.r...@accenture.com> | www.accenture.com/pcsoftware<http://www.accenture.com/pcsoftware> ---------------------------------------------------------------------------- -- How ServiceNow helps IT people transform IT departments: 1. A cloud service to automate IT design, transition and operations 2. Dashboards that offer high-level views of enterprise services 3. A single system of record for all IT processes http://p.sf.net/sfu/servicenow-d2d-j _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ How ServiceNow helps IT people transform IT departments: 1. A cloud service to automate IT design, transition and operations 2. Dashboards that offer high-level views of enterprise services 3. A single system of record for all IT processes http://p.sf.net/sfu/servicenow-d2d-j _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users