Build Warning 4354 - InstallShield 2013 Limited Edition

I am receiving Warning 3 -4354: The build was unable to extract COM information from the file C:\Users\mkacos.ITC\Source\Workspaces\Workspace\ITC DLL\ITCClass\bin\Debug\ITCClass.dll in component C__199FB86F13E94D9B8FCFF517C045DAEE. Please ensure that the file is self-registering and verify that the self-registration process does not fail. ISEXP : warning : -4354: The build was unable to extract COM information from the file C:\Users\mkacos.ITC\Source\Workspaces\Workspace\ITC DLL\ITCClass\bin\Debug\ITCClass.dll in component C__199FB86F13E94D9B8FCFF517C045DAEE. Please ensure that the file is self-registering and verify that the self-registration process does not fail.


 The page that displays when I click on the warning message says: "The 'IsCmdBld.exe' file is the utility used by InstallShield to perform builds. In certain cases, it's possible that the Windows Operating System will not grant 'IsCmdBld.exe' the access it needs to complete certain operations of the build process. " Which, based on what we have experienced so far makes sense.

 I cannot find the "IsCmdBld.EXE" file. I have found where it should be located (Installshield System Folder) but it is not there. I did a search of my hard drive and it is not to be found. Could this be my issue? I need help on this one.

If I ignore this and install the DLL the interface is not working. For example, this DLL is used in an Access 2010 MDB application.  I cannot see the properties of the DLL.
LVL 1
mkacosAsked:
Who is Participating?
 
Vadim RappCommented:
> What I mean by exposed: While coding, I can type "ITCCode."  and the public properties and functions are listed where under the new install, there are no properties or functions.

For that to work, you need to deploy not only dll but also tlb (either generated by visual studio, or by regasm /tlb:), and add reference to the tlb to your VBA/VB6 project.
0
 
Vadim RappCommented:
Looking at the path of your dll, it looks like this is managed .Net DLL exposed as COM object. Right?
0
 
mkacosAuthor Commented:
Correct.
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
Vadim RappCommented:
Uncheck "Extract COM information" and instead check "COM Interop".

See http://helpnet.installshield.com/isxhelp20/Content/helplibrary/IDlgFilePropertiesComNetSettings.htm for more details.
0
 
mkacosAuthor Commented:
It will not let me do that.   I can change the properties and click apply, open the properties back up and they are set back to "Extract Com Information".  See doc attached.
ExtractComIssue1.docx
0
 
Vadim RappCommented:
If Com Interop setting stays, maybe it's enough, despite the warning during build. Try if the installation works.
0
 
mkacosAuthor Commented:
The installation does not work.  When I try it, the properties are not exposed and if I ignore that, the results from known tests are incorrect.
0
 
Vadim RappCommented:
Open resulting msi file in Orca and check if tables Registry and Class are populated. The best if you could make separate installation with just this dll and nothing else, to isolate the problem.

Also, once the installation is deployed and the dll does not work, go and register the dll manually, by running regasm. Will it work them?
0
 
mkacosAuthor Commented:
I do not have ORCA.  I renamed the MSI to TXT and attached it.

I ran the manual regasm and the results did not change.

When I tried it at first, I received a message saying I had to have administrator rights.  Then I reopened a CMD prompt as administrator.  The regasm seemed to work however the properties are still not exposed.  I am a member of the domain administers group.

The warning message in VSS takes me to https://flexeracommunity.force.com/customer/articles/en_US/ERRDOC/Build-Warning-4354.  It indicates that I need to run ISCmdBLD.exe in compatibility mode.
itc.txt
0
 
Vadim RappCommented:
> I ran the manual regasm and the results did not change.

Then you should stop right there, and find the reason. The installation can't do more than regasm, so if that does not work, it means that the problem is with the dll itself.

Looking at the msi, itcclass.dll appears to have all COM information in place. I could not actually test it because your msi relies on external files to install, rather than having them packed inside the msi.

How do you know it does not work? create this vbscript:

set o = createobject("ITCCLASS.Customer")

Save it as myscript.vbs and run after the installation. Will you see error message that the object could not be created?
0
 
mkacosAuthor Commented:
I can already answer that:
The Object gets created and I can execute functions that are in the DLL.
However, the properties and functions are not exposed and the results from several of those functions are not correct.  These are results that have survived the test of time and produce the correct results under the previous installation.

 Dim ITCCode As ITCClass.ITCCom
 Set ITCCode = New ITCClass.ITCCom

What I mean by exposed: While coding, I can type "ITCCode."  and the public properties and functions are listed where under the new install, there are no properties or functions.
0
 
mkacosAuthor Commented:
Well, I have tried several things and am now getting the Active X Component can't create the object.  This is in my VB code, not VB script.
0
 
mkacosAuthor Commented:
I agree. You had helped me a couple of months ago to get another issue resolved.  Unfortunately, at the time, I thought everything was perfect.  Going through this exercise,  I noticed that the TLB file that was being deployed was outdated.  That did not raise it's ugly head until I had to add another property which started all of this.
0
 
Vadim RappCommented:
On my own experience I came to the conclusion that with .net-based com objects it's more reliable to use only late binding, i.e. no references, and everything by createobject; and accordingly use only simple parameters.

For convenience, I do use references during the development, exactly in order to have intellisense, but for the release I remove the reference, comment out Dim myobject as new mytype, uncomment dim myobject as object:set myobject=createobject("mytype").  Far less headache this way, and you don't have to deploy the tlb, which capable of creating conflicts between different versions, when you see error to the effect that the client application is expecting different version of the tlb.
0
 
mkacosAuthor Commented:
OK, I just did that in one section of the code and it worked (got rid of the "Active X Component can't create the object" error message.

I am putting this away for the weekend and will get back to it on Monday.  I'll let you know if the new properties work next week.
0
 
mkacosAuthor Commented:
I am still getting the build warning however it now looks like it does not matter anymore.

I took the TLB file that was built by VS and copied it to another folder.  Then I pointed the install project to that TLB file and built just the installation package.  

Everything works including intellisense on 64 and 32 bit machines.  

The only issue I see is on one 32 bit machine (development machine) when list the references in Access VB, it is listed twice in the reference list.  Probably something with the registry but everything works.

I am not sure which comment to mark as the solution since your last two comments pointed me to this.
0
 
Vadim RappCommented:
I think ID: 40483815 is closest to what can be called a solution. Though you can split between the two.

Re. testing: always make sure to try it out on a clean machine. Have a set of virtual machines representing all architectures, with saved snapshots so can you quickly reset to the initial clean state; and try on each one. There's no limit to the degree of how previous installations can contaminate things - not to mention the development.
0
 
mkacosAuthor Commented:
As usual, vadimrapp1 was incredibly helpful.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.