Hi,

I am in the process of getting one of our installers ready for "Certified
for Windows Vista". I have all test cases passing except test case 23. The
test case uses a supplied merge module
(FailInstallFromCommitCustomAction.msm) to cause a failure and rollback
during the execution of the custom actions of the install, specifically
during the commit phase. Following the failure the system must be returned
to the state it was in prior to the installation, including removal of any
files (except in the temp directories, i assume).

Our install uses InstallUtilLib to execute managed custom actions during the
Install phase. The custom actions update the app config file for a managed
application and runs some connection tests. The custom actions execute
correctly during install and uninstall and all the files associated with the
custom actions are removed during uninstall.

However, if the application fails as per this test case and initiates a
rollback, there are several temp files left in the installation directory
(i.e. c:\program files\company\app). Examining the temp files, they would
appear the be the assemblies that the managed custom actions were in (and
any dependant libraries). As a result it would mean that this installation
would not pass certification.

Looking in the log, msi has identified that these files cannot be deleted
and schedules them to be deleted at the next reboot. However, as far as i
can understand this would cause a fail on the certification.

I assume that these files are not deleted during rollback as they remain
locked (for some reason) by the msi process. 

Has anyone encountered this problem and found a solution to it? I do not
particularly relish the prospect of rewriting my custom actions as a native
library if i can help it.

The installer is being developed in Wix 3, the custom actions in .net 2.0.
The custom actions reside a separate dll from the main application.

The relevant entries from the wxs file (with some names changed):

<CustomAction Id="SetPrereqs" BinaryKey="MSVBDPCADLL" DllEntry="CheckFX" />
<CustomAction Id="InstallSetProp" Property="Install"
Value='/serverpath="[DEFAULTSERVERNAME]" /webui="[DEFAULTWEBUI]"
/uilevel="[UILevel]" /configfile="[#MyApp.config]"
/installtype=notransaction /action=install /LogFile= "[#MyInstallUtils.dll]"
"[VSDFxConfigFile]"' />
<CustomAction Id="Install" Impersonate="no" BinaryKey="InstallUtil"
DllEntry="ManagedInstall" Execute="deferred" Return="check"/>

<CustomAction Id="CommitSetProp" Property="Commit"
Value='/installtype=notransaction /action=commit /LogFile=
"[#MyInstallUtils.dll]" "[VSDFxConfigFile]"' />
<CustomAction Id="Commit" Impersonate="no" BinaryKey="InstallUtil"
DllEntry="ManagedInstall" Execute="commit" />

<CustomAction Id="RollbackSetProp" Property="Rollback"
Value='/installtype=notransaction /action=rollback /LogFile=
"[#MyInstallUtils.dll]" "[VSDFxConfigFile]"' />
<CustomAction Id="Rollback" Impersonate="no" BinaryKey="InstallUtil"
DllEntry="ManagedInstall" Execute="rollback" />

<CustomAction Id="SetPrereqsUninst" BinaryKey="MSVBDPCADLL"
DllEntry="CheckFX" />
<CustomAction Id="UninstallSetProp" Property='Uninstall'
Value='/installtype=notransaction /action=uninstall /LogFile=
"[#MyInstallUtils.dll]" "[VSDFxConfigFile]"' />
<CustomAction Id="Uninstall" Impersonate="no" BinaryKey="InstallUtil"
DllEntry="ManagedInstall" Execute="deferred" />

<InstallExecuteSequence>
        <Custom Action="SetPrereqs"
After="InstallFiles">$AppComponent&gt;2</Custom>
        <Custom Action="InstallSetProp"
After="SetPrereqs">$AppComponent&gt;2</Custom>
        <Custom Action="Install"
After="InstallSetProp">$AppComponent&gt;2</Custom>

        <Custom Action="CommitSetProp" 
After="Install">$AppComponent&gt;2</Custom>
        <Custom Action="Commit" 
After="CommitSetProp">$AppComponent&gt;2</Custom>

        <Custom Action="RollbackSetProp"
After="CommitSetProp">$AppComponent&gt;2</Custom>
        <Custom Action="Rollback"
After="RollbackSetProp">$AppComponent&gt;2</Custom>

        <RemoveExistingProducts After="InstallFinalize" />

        <Custom Action="SetPrereqsUninst"
After="MsiUnpublishAssemblies">$AppComponent=2</Custom>
        <Custom Action="UninstallSetProp"
After="SetPrereqsUninst">$AppComponent=2</Custom>
        <Custom Action="Uninstall"
After="UninstallSetProp">$AppComponent=2</Custom>
</InstallExecuteSequence>

Any help or suggestions much appreciated.

Kind regards,

Rick Hobbs
Neoworks Limited

 
-- 
View this message in context: 
http://www.nabble.com/Vista-Verification-Test-Case-23---Custom-Actions-using-InstallUtilLib-tp14689342p14689342.html
Sent from the wix-users mailing list archive at Nabble.com.


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to