Hello,
I have a custom action that moves some deprecated files from an old
install to a temp directory during a major upgrade and I have another custom
action to move them back that runs only during roll back. I am having trouble
accessing the two properties set by the first custom action in my rollback
custom action every time I access the CustomActionData dictionary in my
rollback action it is empty even though in the MSI log I can clearly see it got
set to the proper values.
Below are the custom action definitions:
<CustomAction Id="DeleteUserAdminDeprecatedFiles"
BinaryKey="FileSearchCA" DllEntry="DeleteDeprecatedFiles" Execute="immediate"
Return="check" />
<CustomAction Id="RestoreDeprecatedFiles"
BinaryKey="FileSearchCA" DllEntry="RestoreDeprecatedFiles" Execute="rollback"
Return="ignore"/>
<CustomAction Id="SetRollbackData"
Property="RestoreDeprecatedFiles"
Value="RootDir=[DEPRECATEDFILESROOTDIR];TempDir=[DEPRECATEDTEMPORARYDIR]" />
Below is the scheduling of the actions:
<Custom Action="SetRollbackData"
After="DeleteDeprecatedFiles">
OLD_VERSION_FOUND
OR
<!--Run if we are doing a major upgrade (msi -> msi).-->
REMOVEINSTALLSHIELD
</Custom>
<Custom
Action="DeleteDeprecatedFiles" Before="InstallFinalize">
OLD_VERSION_FOUND
OR
<!--Run if we are doing a major upgrade (msi -> msi).-->
REMOVEINSTALLSHIELD
<!--Run if we are upgrading installshield instance.-->
</Custom>
<Custom
Action="RestoreDeprecatedFiles" After="InstallInitialize"/>
Below are the relevant Log entries:
MSI (s) (20:D4) [07:53:29:229]: Doing action: DeleteDeprecatedFiles
Action 7:53:29: DeleteDeprecatedFiles.
Action start 7:53:29: DeleteDeprecatedFiles.
MSI (s) (20:2C) [07:53:29:237]: Invoking remote custom action. DLL:
C:\Windows\Installer\MSI2DDF.tmp, Entrypoint: DeleteDeprecatedFiles
SFXCA: Extracting custom action to temporary directory:
C:\Windows\Installer\MSI2DDF.tmp-\
SFXCA: Binding to CLR version v4.0.30319
Calling custom action
FileSearchCA!FileSearchCA.FileSearchCA.DeleteDeprecatedFiles
Starting UserAdmin delete deprecated files Custom Action.
MSI (s) (20!A4) [07:53:29:413]: PROPERTY CHANGE: Adding DEPRECATEDFILESROOTDIR
property. Its value is 'C:\Program Files\Duck Creek
Technologies\ExampleUserAdmin\bin'.
MSI (s) (20!A4) [07:53:29:417]: PROPERTY CHANGE: Adding DEPRECATEDTEMPORARYDIR
property. Its value is 'C:\Users\LMUser\AppData\Local\Temp\kg2s3d3v.vqo'.
Action ended 7:53:29: DeleteDeprecatedFiles. Return value 1.
MSI (s) (20:D4) [07:53:29:458]: Doing action: SetRollbackData
Action 7:53:29: SetRollbackData.
Action start 7:53:29: SetRollbackData.
MSI (s) (20:D4) [07:53:29:465]: PROPERTY CHANGE: Adding RestoreDeprecatedFiles
property. Its value is 'RootDir=C:\Program Files\Duck Creek
Technologies\ExampleUserAdmin\bin;TempDir=C:\Users\LMUser\AppData\Local\Temp\kg2s3d3v.vqo'.
Action ended 7:53:29: SetRollbackData. Return value 1.
MSI (s) (20:D4) [07:53:29:469]: Doing action: InstallFinalize
Action 7:53:29: InstallFinalize.
Rollback: RestoreDeprecatedFiles
MSI (s) (20:D4) [07:55:19:904]: Executing op:
ActionStart(Name=RestoreDeprecatedFiles,,)
MSI (s) (20:D4) [07:55:19:906]: Executing op:
CustomActionRollback(Action=RestoreDeprecatedFiles,ActionType=1345,Source=BinaryData,Target=RestoreDeprecatedFiles,)
MSI (s) (20:60) [07:55:19:910]: Invoking remote custom action. DLL:
C:\Windows\Installer\MSIDE33.tmp, Entrypoint: RestoreDeprecatedFiles
SFXCA: Extracting custom action to temporary directory:
C:\Windows\Installer\MSIDE33.tmp-\
SFXCA: Binding to CLR version v4.0.30319
Calling custom action
FileSearchCA!FileSearchCA.FileSearchCA.RestoreDeprecatedFiles
Starting rollback for Deprecated files.
Printing CustomActionData.
Error in Rollback Deprecated files...
System.Collections.Generic.KeyNotFoundException
The given key was not present in the dictionary.
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at FileSearchCA.FileSearchCA.RestoreDeprecatedFiles(Session session)
MSI (s) (20:D4) [07:55:20:578]: Executing op:
End(Checksum=0,ProgressTotalHDWord=0,ProgressTotalLDWord=0)
MSI (s) (20:D4) [07:55:20:581]: Error in rollback skipped. Return: 5
MSI (s) (20:D4) [07:55:20:611]: Note: 1: 2318 2:
MSI (s) (20:D4) [07:55:20:614]: No System Restore sequence number for this
installation.
MSI (s) (20:D4) [07:55:20:616]: Unlocking Server
MSI (s) (20:D4) [07:55:20:631]: PROPERTY CHANGE: Deleting UpdateStarted
property. Its current value is '1'.
Action ended 7:55:20: INSTALL. Return value 3.
Also for good measure the relevant code in the custom action:
[CustomAction]
public static ActionResult
RestoreDeprecatedFiles(Session session)
{
try
{
session.Log("Starting rollback for Deprecated files.");
session.Log("Printing CustomActionData.");
foreach (var kvp in
session.CustomActionData)
{
session.Log("{0} = {1}", kvp.Key, kvp.Value);
}
string
deprecatedRootDir = session.CustomActionData["RootDir"];
string
deprecatedTempDir = session.CustomActionData["TempDir"];
var di = new
DirectoryInfo(deprecatedRootDir);
var tempDir = new
DirectoryInfo(deprecatedTempDir);
if (!di.Exists)
{
di.Create();
}
foreach (var fi in
tempDir.EnumerateFiles())
{
fi.MoveTo(Path.Combine(di.FullName, fi.Name));
}
return
ActionResult.Success;
}
catch (Exception e)
{
session.Log("Error
in Rollback Deprecated files...");
session.Log(e.GetType().ToString());
session.Log(e.Message);
session.Log(e.StackTrace);
return
ActionResult.Success;
}
}
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: [email protected]<mailto:[email protected]> |
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
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
WiX-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users