cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Christoph
Level 8

64Bit package => failed to register infocardapi.dll

I've created a project where I generate a 32 -and 64Bit installer package from.
I distribute the .NET 4.0 standalone exe together with the project. It is installed as a prerequisite.

The 32Bit installer installs fine on a 32 -and 64Bit OS.

The 64Bit installer however raises a warning almost at the end of the installer(see attached screenshot).
The warning tells us that the installer tries to register the dll 'infocardapi.dll'.
If we look at the verbose log, we see:

Action 14:49:22: ISSelfRegisterFinalize.
Action start 14:49:22: ISSelfRegisterFinalize.
MSI (s) (4C:38) [14:49:22:223]: Note: 1: 2235 2: 3: ExtendedType 4: SELECT `Action`,`Type`,`Source`,`Target`, NULL, `ExtendedType` FROM `CustomAction` WHERE `Action` = 'ISSelfRegisterFinalize'
MSI (s) (4C:50) [14:49:22:517]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIF54F.tmp, Entrypoint: ISSelfRegisterFinalize
InstallShield 14:49:24: Initializing Property Bag...
InstallShield 14:49:24: Getting file count from property bag
InstallShield 14:49:24: File Count : 1
InstallShield 14:49:24: Sorting Based On Order...
Error 1904.Module C:\Windows\SysWOW64\infocardapi.dll failed to register. HRESULT -2147220473. Contact your support personnel.
MSI (s) (4C:C8) [14:49:32:245]: Product: UpdateManager (x64) -- Error 1904.Module C:\Windows\SysWOW64\infocardapi.dll failed to register. HRESULT -2147220473. Contact your support personnel.

Action ended 14:49:32: ISSelfRegisterFinalize. Return value 1.
Action ended 14:49:32: INSTALL. Return value 1.



This dll is not distributed via the installer and is not 'a needed' dependency for the application we install. Before we start the installation, the dll is present in the folders 'C:\Windows\winsxs\x86_wcf-infocard_api_dll_31bf3856ad364e35_6.1.7600.16385_none_a3bd50ec10f3cbf3' and 'C:\Windows\winsxs\amd64_wcf-infocard_api_dll_31bf3856ad364e35_6.1.7600.16385_none_ffdbec6fc9513d29'.

So, during the installation of our application, the file infocarapi.dll is 'copied' to the folder C:\Windows\SysWOW64' and windows installer tries to register it from there... For some reason this fails.

Do anyone knows why the file needs to be registered? For what is the file?

As a workaround we found out that when we install .NET 3.5SP1, the file exists in the folders c:\Windows\System32 and C:\Windows\SysWOW64. After installation of .NET 3.5SP1, our installation finishes correctly without the warning.

Anyone who can give me some explanation?
Labels (1)
0 Kudos
(3) Replies
Cary_R
Level 11

Hi There,

There may be a registration ordering problem with that particular library. I would first try changing it from 'Self-Register' to 'COM Extract at Build'. The latter is a flag on the component itself, rather than the file.

Or, is this file not one that you're including explicitly, but as a part of a merge module?
0 Kudos
Christopher_Pai
Level 16

Christoph wrote:
This dll is not distributed via the installer and is not 'a needed' dependency for the application we install.


The file may not be 'needed' but it's certainly being distributed by your installer. From your statement I will assume that you didn't intentionally author the DLL into your installer so that means one of two things is happening:

1) One or more components is marked as Scan Properties and Dependencies and InstallShield is automatically authoring the file into your installer. I'm not sure this is the case though becaue I'm not sure InstallShield has the logic to then mark that file as COM Self Register. Perhaps it does and I've just never used the feature.

2) The file exists in a merge module that you are merging into your installer.

The key would be to look at the built MSI in Orca and see if the file in the File table is modularized. If so, take a look at the ModuleComponents and ModuleSignature / ModuleDependency tables to understand what's pulling it in.

If it's not modularized, look at your InstallShield build log for entries indicating the file was detected as a dependency.
0 Kudos
Christoph
Level 8

I still don't understand why the installer generates the error about the registering/unregistering failure of the infocardapi.dll but I found out that when .NET Framework 3.5 is avaiblable on your system, the error doesn't popup.

I scanned throught the workspaces of all the dll's that form our application but every dll points to .NET 4 and not to .NET 3.5.

I also disabled the .NET Scan at Build option in the component properties but still the same error pops up.

No idea what to do beside delivering .NET 3.5 as a prerequisite with our installer.
But this is actually a solution I don't want to use. 😞
0 Kudos