This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- Re: Problem matching MSI feature to suite feature
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Sep 10, 2012
01:38 AM
Problem matching MSI feature to suite feature
I have a simple MSI with multiple features, and a simple suite with multiple features. I know you can't associate these through the GUI, but I have manually modified the suite xml file like this:
and yet it doesn't install the MSI at all.
Do I have the syntax wrong?
and yet it doesn't install the MSI at all.
Do I have the syntax wrong?
(7) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Sep 10, 2012
04:09 PM
Starting with IS 2012 Spring, there needs to be a feature that is just associated directly to the MSI package. This change was made to ensure that a package couldn't be enabled just by selecting a suite feature that only referenced a feature in the package and not the package itself.
So, to ensure this requirement is met, you could have a feature tree like the following:
The above is the most explicit form of declaring what package and features get installed (the package is the root; when it is selected the child features control what package features are installed). An alternate way of declaring this would be to include the package ID in each package feature's Install attribute:
The first method is recommended as it creates a clearer and simpler definition of what is installed by a feature through the use of a hierarchical tree.
So, to ensure this requirement is met, you could have a feature tree like the following:
The above is the most explicit form of declaring what package and features get installed (the package is the root; when it is selected the child features control what package features are installed). An alternate way of declaring this would be to include the package ID in each package feature's Install attribute:
The first method is recommended as it creates a clearer and simpler definition of what is installed by a feature through the use of a hierarchical tree.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Sep 11, 2012
02:54 AM
Excellent! Works a treat - thanks very much for your help 🙂
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Sep 20, 2012
01:36 AM
Now I have a request to do the same thing with an included basic MSI "setup.exe". I've tried what has been described below, but it doesn't seem to be working the same way. What's the trick with this type?
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Sep 21, 2012
11:51 AM
The suite engine does not have any knowledge of any particular EXE type package, unlike MSI and InstallScript packages. As such, command lines to select features in the EXE setup need to be set in the package operations. For example, on the install operation for an EXE package, if the EXE contains an MSI installation, and you know that certain features should be selected to install for the package, the following command line should select the desired features based on suite feature selection:
[code]
/v"ADDLOCAL=\"[ISParcelFeatureInstall]\""
[/code]
Note that the above command line is specific to MSI projects built with InstallShield that are launched by the InstallShield setup.exe bootstrap. If this EXE was not built by InstallShield, the command line needs to be changed to something appropriate for the EXE being launched.
Each package (MSI, InstallScript, or EXE) in a suite install has local properties that maintain a list of features to install and remove (ISParcelFeatureInstall and ISParcelFeatureRemove). For MSI and InstallScript packages the suite engine uses these properties to automatically control what features should be installed or removed for a package. However, for EXE packages, these properties can be used to build command lines that are passed to the EXE that will be launched.
Note that the values for the above properties are comma delimited lists based on the feature selection tree in the suite. Based on the previous selection tree example in this post, ISParcelFeatureInstall or ISParcelFeatureRemove would be set to 'NewFeature1' depending on whether the feature was being installed or removed.
[code]
/v"ADDLOCAL=\"[ISParcelFeatureInstall]\""
[/code]
Note that the above command line is specific to MSI projects built with InstallShield that are launched by the InstallShield setup.exe bootstrap. If this EXE was not built by InstallShield, the command line needs to be changed to something appropriate for the EXE being launched.
Each package (MSI, InstallScript, or EXE) in a suite install has local properties that maintain a list of features to install and remove (ISParcelFeatureInstall and ISParcelFeatureRemove). For MSI and InstallScript packages the suite engine uses these properties to automatically control what features should be installed or removed for a package. However, for EXE packages, these properties can be used to build command lines that are passed to the EXE that will be launched.
Note that the values for the above properties are comma delimited lists based on the feature selection tree in the suite. Based on the previous selection tree example in this post, ISParcelFeatureInstall or ISParcelFeatureRemove would be set to 'NewFeature1' depending on whether the feature was being installed or removed.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Sep 24, 2012
04:19 AM
Thanks for your reply Josh - but I can't get it to work 😞
I have made a simple install using IS2012Spring, that contains a list of features and sub-features. This has been compiled to create a single compressed setup.exe file.
I have also made a simple Suite install that adds this setup.exe as a package. The suite install has a list of features and sub-features identical to the packaged setup.exe. The "EXE Silent Command Line" under "Install" within the package has the following command
[code]
/s /v"/qn ADDLOCAL=\"[ISParcelFeatureInstall]\""
[/code]
I compile the suite project, run the install and select only some features from the tree, but all features of the package are being installed.
I've obviously missed something, but I can't see what. I've attached a log created by running the suite project with "/debuglog"
What am I doing wrong/missed?
I have made a simple install using IS2012Spring, that contains a list of features and sub-features. This has been compiled to create a single compressed setup.exe file.
I have also made a simple Suite install that adds this setup.exe as a package. The suite install has a list of features and sub-features identical to the packaged setup.exe. The "EXE Silent Command Line" under "Install" within the package has the following command
[code]
/s /v"/qn ADDLOCAL=\"[ISParcelFeatureInstall]\""
[/code]
I compile the suite project, run the install and select only some features from the tree, but all features of the package are being installed.
I've obviously missed something, but I can't see what. I've attached a log created by running the suite project with "/debuglog"
What am I doing wrong/missed?
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Sep 24, 2012
03:55 PM
The log shows the following command line information for an EXE package to be launched:
Based on this, it appears the ISParcelFeatureInstall property for this package has no value. The only likely way this would occur is if no suite features have been associated with this package (meaning a feature defined in the suite with the Install attribute set to something in the form ":FeatureName").
What does the SelectionTree element collection look like in the built setup.xml for this test (the setup.xml can be found in the Interm folder for a built release)?
9-24-2012[10:07:29 AM]: EXE parcel command line: /s /v"/qn ADDLOCAL=\"[ISParcelFeatureInstall]\""
9-24-2012[10:07:29 AM]: EXE parcel resolved command line: /s /v"/qn ADDLOCAL=\"\""
Based on this, it appears the ISParcelFeatureInstall property for this package has no value. The only likely way this would occur is if no suite features have been associated with this package (meaning a feature defined in the suite with the Install attribute set to something in the form "
What does the SelectionTree element collection look like in the built setup.xml for this test (the setup.xml can be found in the Interm folder for a built release)?
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Sep 27, 2012
01:58 AM
Whoops - I knew I forgot something.
Thanks Josh - that works a treat now. All I need to do now is to figure out what command line to use for "Modify".
[code]
Install: /s /v"/qn ADDLOCAL=\"[ISParcelFeatureInstall]\""
Remove: /s /x /v"/q"
Repair: /s /f /v"/q"
Modify: /s /v"/qn ADDLOCAL=\"[ISParcelFeatureInstall]\" REMOVE=\"[ISParcelFeatureRemove]\""
[/code]
I think this *should* work, but doesn't 😞 I'm thinking it's probably an issue with the detection of what features are currently installed, as the Suite GUI gives me all features unticked in a modify scenario, regardless of what features have previously been installed.
Any ideas?
Thanks Josh - that works a treat now. All I need to do now is to figure out what command line to use for "Modify".
[code]
Install: /s /v"/qn ADDLOCAL=\"[ISParcelFeatureInstall]\""
Remove: /s /x /v"/q"
Repair: /s /f /v"/q"
Modify: /s /v"/qn ADDLOCAL=\"[ISParcelFeatureInstall]\" REMOVE=\"[ISParcelFeatureRemove]\""
[/code]
I think this *should* work, but doesn't 😞 I'm thinking it's probably an issue with the detection of what features are currently installed, as the Suite GUI gives me all features unticked in a modify scenario, regardless of what features have previously been installed.
Any ideas?
![](/skins/images/8CE4FAD0DE6F3A6F9D0567434D2D2DAE/responsive_peak/images/icon_anonymous_message.png)