Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Build Warning 4354 - InstallShield 2013 Limited Edition

Posted on 2014-12-04
18
Medium Priority
?
1,189 Views
Last Modified: 2014-12-08
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.
0
Comment
Question by:mkacos
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 10
  • 8
18 Comments
 
LVL 40

Expert Comment

by:Vadim Rapp
ID: 40481423
Looking at the path of your dll, it looks like this is managed .Net DLL exposed as COM object. Right?
0
 
LVL 1

Author Comment

by:mkacos
ID: 40481434
Correct.
0
 
LVL 40

Expert Comment

by:Vadim Rapp
ID: 40481483
Uncheck "Extract COM information" and instead check "COM Interop".

See http://helpnet.installshield.com/isxhelp20/Content/helplibrary/IDlgFilePropertiesComNetSettings.htm for more details.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 1

Author Comment

by:mkacos
ID: 40481534
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
 
LVL 40

Expert Comment

by:Vadim Rapp
ID: 40482116
If Com Interop setting stays, maybe it's enough, despite the warning during build. Try if the installation works.
0
 
LVL 1

Author Comment

by:mkacos
ID: 40482771
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
 
LVL 40

Expert Comment

by:Vadim Rapp
ID: 40482795
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
 
LVL 1

Author Comment

by:mkacos
ID: 40482960
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
 
LVL 40

Expert Comment

by:Vadim Rapp
ID: 40483188
> 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
 
LVL 1

Author Comment

by:mkacos
ID: 40483430
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
 
LVL 1

Author Comment

by:mkacos
ID: 40483798
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
 
LVL 40

Accepted Solution

by:
Vadim Rapp earned 2000 total points
ID: 40483815
> 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
 
LVL 1

Author Comment

by:mkacos
ID: 40483841
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
 
LVL 40

Assisted Solution

by:Vadim Rapp
Vadim Rapp earned 2000 total points
ID: 40483858
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
 
LVL 1

Author Comment

by:mkacos
ID: 40483877
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
 
LVL 1

Author Comment

by:mkacos
ID: 40486901
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
 
LVL 40

Expert Comment

by:Vadim Rapp
ID: 40486917
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
 
LVL 1

Author Closing Comment

by:mkacos
ID: 40486989
As usual, vadimrapp1 was incredibly helpful.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

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.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I have been scripting applications way too long and can never remember how to create an ISS file.  So I decided to write this article to act as my own knowledge base for future reference, and hope you will also benefit. An ISS file is a response …
If you don't know how to downgrade, my instructions below should be helpful.
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
We’ve all felt that sense of false security before—locking down external access to a database or component and feeling like we’ve done all we need to do to secure company data. But that feeling is fleeting. Attacks these days can happen in many w…

715 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question