cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
sw_guy
Level 3

IS2008 Issues - DLL registration, Error 1027, Single exe

I am working on upgrading a project from Installshield 12 (Pro) to Installshield 2008 (Pro). The binaries include DLL and EXEs generated from a combination of C# and C++ code (VS 2005 Pro), with .Net 2.0 SP1. I have four-some issues with the upgrade (please see the same with colors/picture in the attached Word document).

1. One of the C-Sharp DLL is not registered upon installation. I know this because when I copy registry entries from another machine where the product (made from Installshield 12) was installed, the product (made from Installshield 2008) starts to work. The C-sharp code includes the following, but Sample.Control doesn’t appear in the registry.

[System.Runtime.InteropServices.ComVisible(true)]
[GuidAttribute("1B19F6AB-5353-3A62-B776-E07D600ABDF5"), ProgId ("Sample.Control")]


2. The older version of Installshield was producing a single EXE, which we called productinstaller.exe. However, with Installshield 2008, I am not getting a single EXE. Instead, I am getting Four files (Autorun.INF, setup.INI, product.msi, and productinstaller.EXE). What settings are there to combine these four files into one?

3. Upon completion of the build, Installshield 2008 gives a warning and error. The error is “Failed signing certificate.msi”, with error code is -1027. What is certificate.msi and how do I correct this error?

4. Also, the version of the product made from Installshield 12 used to prompt with a dialog box if the user needed to install .Net Framework 2.0. However, the version made from Installshield 2008 does not.

Please help me with the right settings/approaches for these problems. Thanks,

George
Labels (1)
0 Kudos
(6) Replies
Christopher_Pai
Level 16

For #1, you should make the assembly a keyfile in it's own component and then hit the Com Interop attribute as True. Remember, managed assemblies ( even ones marked as ComVisible ) don't expose a DllRegisterServer function like unmanaged libraries do. You have to reflect their types and extract the signatures. InstallShield will do this for you.

For the .NET 2.0 question, you need to download and enable the .NET 2.0 Setup Prerequisite.

For the rest, it just sounds like you need to go through the release wizard and tweak some settings.
0 Kudos
sw_guy
Level 3

Hi Chris,

Thanks for the tip. By going through the Release Wizard, I've been able to resolve the last three issues (.Net 2.0, single file, error code 1027). However, the DLL is still NOT registering correctly. The COM Interop attribute is set to TRUE. Any ideas?

Thanks.
0 Kudos
Christopher_Pai
Level 16

Goto Tools | Options | .NET and make sure RegAsm is setup correctly. If that doesn't work, manually run regasm against your assembly with the /regfile:test.reg switch. Import this regfile into your component.

You shouldn't have to do this so if you do, I'd be curious as to what's going on to make you.
0 Kudos
sw_guy
Level 3

Got it. Actually, the .Net Framework wasn't installed on the build machine 😮
I installed it, changed the path for regasm, and it seems to be working.

Thanks Chris.

George
0 Kudos
Christopher_Pai
Level 16

No problem, glad to help. And welcome to the Community.
0 Kudos
joesukhum
Level 2

Hi Chris,

I have similar problem to register the managed DLL. The only different to the previous posts is when I install my new version over the previous version the dll didn't get register correctly. If I install this new version to a clean machine, it works just fine. I did also apply a Major upgrade to this new version, and no change to the dll what so ever.

Thank you for your help,

Joe A.
0 Kudos