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: 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 ------------------------------------------------------------------------------ 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 WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users