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] 
Sent: Tuesday, June 04, 2013 11:50 AM
To: 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 ot
 her 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[NETFRAMEWORK40FULLINSTALLROOTDIR]]></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> | 
www.accenture.com/pcsoftware<http://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
------------------------------------------------------------------------------
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

Reply via email to