PDA

View Full Version : InstallScript Merge Modude Problem



SteveWyman
01-10-2005, 11:16 AM
I recently inherited an old InstallShield Pro 6.3 InstallScript project, and one of my essential enhancements is adding MSXML support. After some research I decided to kill 2 birds with one stone and upgrade to InstallShield X, allowing me to use the included XML 4.0 merge module and take advantage of other enhancements too.

My problem is I believe the XML 4.0 merge module is being added to my build, but when I install it, it is not being layed down on the destination machine.

I am quite inexperienced with InstallShield, so I could be missing something very basic, but I am under the impression that using merge modules should be as simple as creating a feature and dragging the merge module object into it (with the system creating a holder object in the process). Could it be that I also need to modify my script to force installation?

Any suggestions will be very gratefully recieved - I'm really inexperienced when it comes to this stuff, and (I think) the help files suggest I am doing the right thing, so if you see I have missed anything dumb please let me know.

Thanks,
Steve.


Specifics:
=======

I have not messed with any of the settings of the feature (other than changing the name), or the holder object (other than setting it to not uninstall and to install Msi 2.0 Engine).

When I create the build, the log file contains the following two sections (which I believe suggest the install is being created OK).


.
.
.

Feature: MSXML
Adding Object: MSXML\New Merge Module Holder Object 1.
Merging MSXML 4.0: C:\Program Files\Common Files\Merge Modules\msxml4.msm
Merging : Object Guid - {3E6A0948-9791-484E-8F67-8FCF9DE67F64} Description - The operation completed successfully.
Feature: MSXML\New Merge Module Holder Object 1.
Feature: Msi12A.
Feature: Msi12W.
Feature: Msi20A.
Feature: Msi20W.
Feature: MsiComponent.

.
.
.

Feature: <Data>\MSXML
Feature: <Data>\MSXML\New Merge Module Holder Object 1
Feature: <Data>\MSXML\New Merge Module Holder Object 1\Msi12A
Feature: <Data>\MSXML\New Merge Module Holder Object 1\Msi12W
Feature: <Data>\MSXML\New Merge Module Holder Object 1\Msi20A
Component: [New Merge Module Holder Object 1]NS_NSR_NPL_1___<TARGETDIR>\1BD86193_1
Feature: <Data>\MSXML\New Merge Module Holder Object 1\Msi20W
Component: [New Merge Module Holder Object 1]NS_NSR_NPL_1___<TARGETDIR>\1BD86193_2
Feature: <Data>\MSXML\New Merge Module Holder Object 1\MsiComponent
Component: [New Merge Module Holder Object 1]NS_NSR_NPL_1___<MSISTUBPATH>_1

.
.
.

Somebody
01-10-2005, 02:15 PM
Do you have your feature, which includes the XML 4.0, selected in the "Setup Types" panel too?

SteveWyman
01-10-2005, 06:27 PM
Yes I do (for all setup types). Good thought, though - I hadn't considered that it might not be checked by default.

Steve.

StevenM
01-11-2005, 04:40 PM
I seem to be encountering the exact same problem. Has anybody found a solution to this??

SteveWyman
01-12-2005, 12:42 AM
Steven,

I'm trying to narrow it down although I'm not there yet.

I can create an empty project in 10.5, add the merge module and it works just fine.

I can create an empty project in 6.3, upgrade it to 10.5, add the merge module and it works just fine.

This makes me believe the problem is somehow triggered by the content of my project (either simply the content, or the way the content is converted from 6.3).

Unless I (or InstallShield customer service) come up with something soon, I suspect I am going to have to create a new 10.5 project and gradually port my old install piece by piece. I really don't hold out much hope for a solution as I guess the only realistic way they could figure it out if they are not already aware of such a problem would be for me to provide them with my complete project (and I'm not in a position to do that).

If I do come across anything I will let you know.

Steve.

Somebody
01-12-2005, 04:50 PM
Do you have the problem of XML not being installed in both of these cases:

1. The install is a first time install on a PC.

2. The install is running in maintenance (modify, repair, remove) mode.

SteveWyman
01-12-2005, 05:41 PM
I have just managed to find a workaround for this problem. It's not a good workaround, but it gets the merge module installed.

I added the call

FeatureSelectItem(MEDIA, "feature name", TRUE);

Immediately before the call to FeatureMoveData(), and now it gets installed.

Next step is to try to find out why it is deselected when it is clearly selected in the Setup Types and I never give the user the opportunity to deselect it.

Steve.

Somebody
01-12-2005, 06:06 PM
Your work around solution is possibly related to my wondering if you have the problem in both the initial install scenario and the maintenance install scenario.

SteveWyman
01-12-2005, 06:21 PM
To be honest, I only tried installing over an existing install from before the merge module was incorporated. I'll back out the fix and try a clean install to see what happens. It might be tomorrow before I get that done though.

Thanks,
Steve.

SteveWyman
01-13-2005, 12:41 PM
Having played around with Somebody's suggestion (although I never got around to installing on a 'totally pure' machine, as I couldn't find a computer that didn't already have my software installed in one form or another), I found the problem was due to the following.

I do not offer the user a choice of setup types, and I was never initializing the setup type, so internally, I guess the installer was failing to get a valid state for my new feature.

By adding the following call before moving anything around

nResult = FeatureSetupTypeSet (MEDIA, "Typical");

I am forcing the setup type to typical, and all appears to be fine.

Somebody - Thanks for your suggestions - you led me in the right direction.

Steve.