Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Rollback CA from DLL doen't work if UI is basic...


12 replies to this topic

Sedov Roman

Sedov Roman
  • Full Members
  • 16 posts

Posted 14 November 2003 - 14:56

Look, I have a problem.
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?

Zweitze

Zweitze
  • Full Members
  • 522 posts

Posted 24 November 2003 - 10:25

I use CA type 1281 (= without msidbCustomActionTypeContinue), no problem for me.
Try writing to the log file in your CA, using MsiProcessMessage().

Sedov Roman

Sedov Roman
  • Full Members
  • 16 posts

Posted 24 November 2003 - 11:02

I've tried to use 1281 CA type - no effect. The same errors occur.
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).


Zweitze

Zweitze
  • Full Members
  • 522 posts

Posted 24 November 2003 - 13:21

And rollback does work when a real error occurs...

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).

Sedov Roman

Sedov Roman
  • Full Members
  • 16 posts

Posted 25 November 2003 - 08:24

1. Yes, I've tried to generate real error as I wrote in 3 of my first message.
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...

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 25 November 2003 - 10:09

You are launching the Deferred and the Rollback CA using DoAction? From where do you call DoAction?

Sedov Roman

Sedov Roman
  • Full Members
  • 16 posts

Posted 26 November 2003 - 11:17

Yes, I have a sequenced CA (in "InstallExecuteSequence") that calls DoAction method for Rollback CA and then for Deferred CA.
This sequenced CA is VBS CA from binary table.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 26 November 2003 - 11:38

And is this sequenced CA is for immediate execution, or deferred? I'm not sure if the first would work, but the latter certainly won't.
I'd suggest you get rid of that DoAction and insert the CAs in the sequence.


Sedov Roman

Sedov Roman
  • Full Members
  • 16 posts

Posted 26 November 2003 - 11:58

First of all, the sequenced CA is for immediate execution.
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.

catrill

catrill
  • Full Members
  • 16 posts

Posted 01 December 2003 - 15:12

I also have this problem. I should have noticed it before...

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

Rollback: DeleteServicesDependencyFix
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...

Sedov Roman

Sedov Roman
  • Full Members
  • 16 posts

Posted 02 December 2003 - 09:49

Yes, it's nice for me too, but, of cause it's very pity we haven't any ideas.
I think the only idea is to wait for something like hotfix for WI.

Sedov Roman

Sedov Roman
  • Full Members
  • 16 posts

Posted 08 July 2004 - 10:00

Microsoft released private hotfix for WI to fix this BUG.
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.

catrill

catrill
  • Full Members
  • 16 posts

Posted 22 September 2004 - 13:34

Perhaps this information could be added to InstallSite->Windows Installer->Bugs in Merge Modules and Windows Installer Engine.