Rollback CA from DLL doen't work if UI is basic...
Posted 14 November 2003 - 14:56
First of all, the description of the situation:
1. I "plan" some deferred in pair with rollback CAs during installation sequence (by "DoAction" method).
2. Rollback works well at all if using full or reduced UI.
3. If I use basic UI, rollback works well too in the case of real error during execution of deferred CAs.
4. And if I press "Cancel" button while deferred CAs are executing, rollback CAs from DLL stored in Binary table stream doesn't work.
The example of lines from log file:
CustomActionRollback(Action=TaskRollback.304C0C50_D102_4AF0_AD49_7CE909D5FD9B,ActionType=1345,Source=BinaryData,Target=xRemoveTask, CustomActionData=<Some data>)
MSI (s) (50:0C): Error in rollback skipped. Return: 2
I've tried to use ActionType without msidbCustomActionTypeContinue flag, with msidbCustomActionTypeNoImpersonate flag already.
Also I tried to define EnvVar named "MsiBreak" with value "TaskRollback.304C0C50_D102_4AF0_AD49_7CE909D5FD9B", but no message about attaching debugger popups.
All rollback VBS-CAs work in this case.
There're not the only CA doesn't work. The several ones from different DLL doesn't.
And now I have no more ideas.
Is it a MSI bug or my mistake in somewhere?
Posted 24 November 2003 - 10:25
Try writing to the log file in your CA, using MsiProcessMessage().
Posted 24 November 2003 - 11:02
About writing messages to log: I have some, but they don't appear at log, because CA doesn't start at all (as I wrote, even "MsiBreak" doesn't work).
Posted 24 November 2003 - 13:21
When you press cancel in de basic UI, does Windows Installer ask for a confirmation? If it doesn't, maybe Windows Installer thinks you're cancelling again, so it stops your rollback too. Try cancelling with the Esc key, see if that has the same results (would be quite a bug in the Windows Installer).
Posted 25 November 2003 - 08:24
2. WI doesn't ask for confirmation in basic UI.
3. The cancelling with the "Esc" gives the absolutely same result.
Well, I think it's WI's bug too. And I'm not wonder of this, because my situation is very exotic: rollback CA from DLL, Basic UI, Cancel button.
I wonder how I've detect this problem...
Posted 26 November 2003 - 11:17
This sequenced CA is VBS CA from binary table.
Posted 26 November 2003 - 11:38
I'd suggest you get rid of that DoAction and insert the CAs in the sequence.
Posted 26 November 2003 - 11:58
But I can't use sequencing of rollback and deferred CAs, because my sequenced CA plans them during "processing" special table and it hasn't any information about number of CAs and it's parameters until it process that table...
I note that this problem is for DLL CAs only. Similar schemes with VBS CAs work well in this situation.
Posted 01 December 2003 - 15:12
I install with a basic UI. If I press the cancel button, then the rollback custom actions (which are in the execute sequence) do not run. I get something like this in the verbose log
MSI (s) (78:34): Executing op: ActionStart(Name=DeleteServicesDependencyFix,,)
MSI (s) (78:34): Executing op: CustomActionRollback(Action=DeleteServicesDependencyFix,ActionType=1281,Source=BinaryData,Target=RollbackServiceDependency,CustomActionData=
MSI (s) (78:34): Error in rollback skipped. Return: 2
If the installation rolled back because of an error in one of the custom actions, then the rollback actions do run.
At the moment I don't have any ideas on how to get round this. But it's nice to know I'm not alone...
Posted 02 December 2003 - 09:49
I think the only idea is to wait for something like hotfix for WI.
Posted 08 July 2004 - 10:00
This fix probably will be included to the next SP for Win2000.
And WI 3.0 (it's in Windows 2003, and SP2 for XP) hasn't this bug.
Posted 22 September 2004 - 13:34