PDA

View Full Version : Install Problem with Merge Modules



jesseTripod
11-03-2001, 05:45 PM
I added the CMDialog ActiveX Control DLL to my project in InstallShield Express 3.03 and associated it with the Always Install Feature.

When I run the install on my development machine (Win 2K) it installs fine. But when I try running the VB executable the windows installer runs again asking for the location of my .MSI file. (The windows installer also launches when I load up Internet Explorer)

I assume the installer is running cause it thinks the some files required for installation are missing. But the machine I'm running it on has all the required files to run my VB 6 project. In fact if I don't include the CMDialog merge module the VB executable runs fine.

Any Advice?

Thanks,

jesse

jesseTripod
11-04-2001, 08:00 PM
Few things I neglected to mention :)

1. By Default when I add the CMDialog Merge Module Installshield also adds the Microsoft Component Manger Module, Microsoft OLE module, and VB Virtual Machine module.

The problem seems to be associated with the CMDialog because if I remove the CMDIalog merge module and leave the other three defaults the problem is resolved.

2. During the first install the comdlg32.ocx is COPIED to the correct directory. (If comdlg32.ocx is missing) And according to the log, the file is registered:

ComponentRegister(ComponentId={FC3E0B6E-F62B-11D1-B144-00C04F990B2B},KeyPath=C:\WINNT\System32\comdlg32.ocx,State=3,,Disk=1,SharedDllRefCount=1,BinaryType=0)

3. If I manually UNREGISTER comdlg32.ocx (regsvr32.exe /u comdlg32.ocx) and then REGISTER comldg32.ocx (regsvr32.exe /u comdlg32.ocx) the problem is resolved.

Chandima
11-05-2001, 10:06 AM
What is the machine you are testing this on? If it is a Win2K or a WinME machine it COULD be possible that comdlg32.dll is under System File Protection. Maybe you are distributing a (and your App is dependent on this) newer version of comdlg32.dll.

By default Express creates something called an "Advertised" shortcut. When this shortcut is used, Windows Installer laucnhes and makes sure all the files needed by this App are installed. It probably realizes that the comdlg32.dll file version is not correct and calls for the source msi to install it.

What happens if you manually create a shortcut on the target system and launch you App from there? Does it launch and function properly?

jesseTripod
11-05-2001, 11:21 AM
Thanks for your response.

Good news for you - looks like the problem is on my end. I did some testing and if I remove my Custom Action DLL the problem is resolved.

Why this is conflicting with the CMDialog Merge Module is still a puzzle but from testing I'm absolutely certain my DLL code is somehow conflicting.

I don't think you can help me at this point but in any case this problem has been duplicated on Win 2K and Win XP. I've run the VB application from the dosprmpt and from a new shortcut. Like I said the Windows Installer even launches when I load up IE.

In any case thanks for your help. Now I have to pour through my VC++ code and see what could be causing this problem.

Jesse

jesseTripod
11-05-2001, 03:39 PM
Chandima

I have determined that if I invoke my Custom Action before the Setup Progress Dialog Box then my problem is resolved. If my Custom Action is performed any time after the Setup Progress Dialog Box the problem still occurs.

Unfortunately I HAVE to invoke the Custom Action after the Setup Progress box since my Custom Action is dependent on the results of the Setup Progress.

Now here's my question:

How and why does my VB application launch the installer? (I understand what you said about Advertised Shortcuts, and I'm not launching it through that method). Is there some association in registry? And why does the installer also get launched when I load IE?








Originally posted by Chandima
What is the machine you are testing this on? If it is a Win2K or a WinME machine it COULD be possible that comdlg32.dll is under System File Protection. Maybe you are distributing a (and your App is dependent on this) newer version of comdlg32.dll.

By default Express creates something called an "Advertised" shortcut. When this shortcut is used, Windows Installer laucnhes and makes sure all the files needed by this App are installed. It probably realizes that the comdlg32.dll file version is not correct and calls for the source msi to install it.

What happens if you manually create a shortcut on the target system and launch you App from there? Does it launch and function properly?

jesseTripod
11-05-2001, 08:11 PM
I'm posting this in hopes to save someone hours of frustration. (Although I must admit I now know InstallShield like the back of my hand).

I mistakenly had included my custom action dll in the [tempfolder] of my project. This hadn't caused any problems until I added a few merge modules for the depedences in my VB application. When these merge modules were added they somehow conflicted with the custom action and whenever I tried running my application after the install the install program tried running AGAIN instead of the application.

So by removing the custom action DLL from the [tempfolder] my problem was solved.

Jesse

Chandima
11-06-2001, 10:46 AM
I see. That makes a little sense. Becuase I think at runtime, the Custom Action extracts the DLL from the msi to the Temp folder and runs it from there. Maybe since your project was distributing it as well (in the same location) something nasty (and wierd) happens. Would it be possible for you to send me this DLL? I would like to reproduce it, get to the bottom of the issue and submit a Work Order. If you are willing, please send me the DLL to chandimar@installShield.com.

Thanks!