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 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[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

Reply via email to