cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
pavanred
Level 4

oleaut32.dll, stdole32.tlb file self registration issue in Vista

Hi,
I have an install script project and I just upgraded from InstallShield
7 to InstallShield 2010.
The installer works fine with Win XP but the self registration error is
thrown only in WIndows Vista.

I am running the installer as the administrator. I set the 'required
execution level' to 'administrator', so even if a user is logged in as a
standard user in Vista, the installer demands the admin credentials and
then runs the installer as the administrator.

I debugged the install script and identified that the error is thrown at the function Do(SELFREGISTRATIONPROCESS). This function is also internally called by FeatureMoveData function.

The installer needs oleaut32.dll version 2.x or higher to work and the version provided by Vista is 6.x . I am not sure why this self registration error comes up when a higer version of the dll is already available and registered. Are there any work arounds or solutions to self regiester system dlls like oleaut32.dll on Vista?

Any help will be appreciated.
Thanks in advance.
Labels (1)
0 Kudos
(5) Replies
MichaelU
Level 12 Flexeran
Level 12 Flexeran

Do you still need to distribute and register these files? They sound like protected system files, and probably their self-registration tries to write to protected registry keys. InstallScript will see the result of that as an error like you say. If you still need these for some older systems, perhaps you can limit which operating systems will receive these files.
0 Kudos
pavanred
Level 4

Thanks MichaelU.
Yeah, I need to distribute and register these files. Though, I haven't yet tested my application without registering these files during install hoping that the better versions of oleaut32.dll in Vista etc are backward compatible and wont cause problems to my application.

Anyway a probable solution I can think of, though I am not sure if it will work, I need some help with this solution -

1. Toggle UAC in vista through InstallScript and then try registering these dlls. I remember seeing the permission level in Vista - Administrator doesn't have full control on the files like oleaut32.dll. Would this work? If its possible, how to enable or disable UAC through InstallScript?

Thanks.
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

You should not toggle UAC in that manner even if it were possible; I don't think it is. Furthermore, I don't think UAC and Windows Resource Protection are the same thing.

I also question the implied theory that downgrading a system file would cause less breakage to other programs on the machine, than trusting Microsoft to have maintained backwards compatibility in such a core protected DLL would cause to your app. Don't fight the system; just test on it. 🙂
0 Kudos
pavanred
Level 4

Thanks MichaelU, I took your advice and let UAC alone. Besides, I think every toggle of the UAC calls for a reboot so that entirely rules this option out. I cant have my installer rebooting twice. 🙂

I found a rather simple resolution/alternative to get rid of these errors. I moved the two files oleaut32.dll, stdole32.tlb to a component in another feature with the self register property set to false. This prevents the files to self ergister when Do(SELFREGISTRATIONPROCESS) is called. And I added this to my installscript to manually register these files.

STRING szOleaut32, szStdole2, szTargetStdole2, szTargetOleaut32;
szOleaut32 = "Oleaut32.dll";
szStdole2 = "Stdole2.tlb";

szTargetOleaut32 = WINSYSDIR ^ szOleaut32;
szTargetStdole2 = WINSYSDIR ^ szStdole2;

szRegsvr= "regsvr32.exe";
szCommandParms= " /s ";

LaunchApp(szRegsvr, szCommandParms + szOleaut32 );
LaunchApp(szRegsvr, szCommandParms + szStdole2 );


This code will ensure that these files are registered. All I will to do is run this through a condition and register the files only if necessary for e.g. case the OS is not Vista or if better versions of the files are already present etc.

In Windows Vista I know that there are better versions of these 2 files which are backward compatible.
0 Kudos
ussmitha
Level 2

😮 Have the smame Problem . using Install Shield 2012 , and the build pkg install well in Win XP but not in Win 7 .

Was wondering how were you able to debug FeatureMoveData , cause its a installshield's function . I have the same oleaut32.dll and stdole2.tlb , in my project too. tried setting the self registration process to No , but still was not able to pass through FeatureMoveData.

Only if i could know , which dlls are failing via debugging FeatureMoveData. Can anly please let me know how to debug inbuilt function of Installshield like FeatureMoveData??:mad:
0 Kudos