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: Advanced Suite Installation - How can I implement a system search?
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
‎Feb 04, 2015
07:41 AM
Advanced Suite Installation - How can I implement a system search?
I'm using InstallShield 2014 Premier.
I want to use a InstallShield Suite project, it should include several installation packages.
I need something similar to 'System Search' to store the value of a registry key (for example the computername) in a property.
Who is able to give me an example?
I want to use a InstallShield Suite project, it should include several installation packages.
I need something similar to 'System Search' to store the value of a registry key (for example the computername) in a property.
Who is able to give me an example?
(4) Replies
![](/skins/images/CC38E504FC9E1309DC48ACFEB4925670/responsive_peak/images/icon_anonymous_message.png)
Not applicable
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Feb 04, 2015
10:35 AM
As far as I know you will need to author InstallScript code to do this in a Suite project. Add the code as an event and call it as appropriate via "Run a suite Action". Take a look at the InstallShield help for the topic "Working with an Action that Runs InstallScript Code in a Suite/Advanced UI Installation".
You can then use the registry access functions like RegDBKeyExist and RegDBGetKeyValueEx. to query key existence and contents.
Then use the suite property access functions like SuiteSetProperty and SuiteGetProperty to save and query key contents to/from a suite property. You can then use the property to configure your installation.
You can then use the registry access functions like RegDBKeyExist and RegDBGetKeyValueEx. to query key existence and contents.
Then use the suite property access functions like SuiteSetProperty and SuiteGetProperty to save and query key contents to/from a suite property. You can then use the property to configure your installation.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Feb 05, 2015
04:44 AM
Really?
No support in the GUI?
And no intellisense support is provided?
It's really very uncomfortable and time exhausting.
It seems Flexera doesn't like to improve this project type. Too bad.
But anyway: thanks for your answer, but still I'm hoping you're wrong.
No support in the GUI?
And no intellisense support is provided?
It's really very uncomfortable and time exhausting.
It seems Flexera doesn't like to improve this project type. Too bad.
But anyway: thanks for your answer, but still I'm hoping you're wrong.
![](/skins/images/CC38E504FC9E1309DC48ACFEB4925670/responsive_peak/images/icon_anonymous_message.png)
Not applicable
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Feb 05, 2015
06:13 AM
I appreciate this looks pretty daunting at first if you're not already familiar with InstallScript. However it's worth getting to grips with it as a new skill if your requirement isn't just a one off.
InstallScript code used in conjunction with Events/CAs opens up an immense amount of flexibility in your installations - not just for suite projects.
InstallScript code used in conjunction with Events/CAs opens up an immense amount of flexibility in your installations - not just for suite projects.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Feb 06, 2015
01:44 PM
The thing to keep in mind is that the Suite project / Advanced UI is a 'wrapper' that allows handling multiple packages. It's purpose is to manage installation of several packages in a certain sequence.
If your goal is to manage a package or feature based on a 'system search' then most likely you can accomplish your goal with the built-in conditions. These allow you to search for a file, registry, etc as a condition for install.
For example one of the conditions I add is if a certain MSI package is already installed then I do not need for it to be extracted / downloaded as part of the install.
For this I add a condition to the 'Detection Condition' for the given package.
I set the check to 'Any' meaning that any one of the conditions need to be true for it to already be installed.
I add another condition 'Registry Exists' and specify the "HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\Uninstall\{GUID}" key. Note that I am using 2013, and the option for MSI Package was not working for me and it could be that I was just not implementing it correctly. But I found that this worked 100% of the time.
My guess is that this is what you are trying to accomplish, look for some registry value.
Now, there are times where a custom action is required. For instance, I need to look to see if an instance of SQL Server is installed, and if it is installed to determine if it is an older version of Express. If it is an older version of Express we want to uinstall that instance and install SQL 2012 Express. This type of system check is far more advanced and requires an InstallScript code.
If you are trying to set a property value based on a 'system setting' so you can pass that property to a package then I think you have to use a custom action as well.
If you have a group of packages that should be installed or not installed based on a system search then create a new feature, group your packages within that feature and then set a detection condition or Eligibility condition at the feature level rather than at the package level.
Hopefully this helps.
If your goal is to manage a package or feature based on a 'system search' then most likely you can accomplish your goal with the built-in conditions. These allow you to search for a file, registry, etc as a condition for install.
For example one of the conditions I add is if a certain MSI package is already installed then I do not need for it to be extracted / downloaded as part of the install.
For this I add a condition to the 'Detection Condition' for the given package.
I set the check to 'Any' meaning that any one of the conditions need to be true for it to already be installed.
I add another condition 'Registry Exists' and specify the "HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\Uninstall\{GUID}" key. Note that I am using 2013, and the option for MSI Package was not working for me and it could be that I was just not implementing it correctly. But I found that this worked 100% of the time.
My guess is that this is what you are trying to accomplish, look for some registry value.
Now, there are times where a custom action is required. For instance, I need to look to see if an instance of SQL Server is installed, and if it is installed to determine if it is an older version of Express. If it is an older version of Express we want to uinstall that instance and install SQL 2012 Express. This type of system check is far more advanced and requires an InstallScript code.
If you are trying to set a property value based on a 'system setting' so you can pass that property to a package then I think you have to use a custom action as well.
If you have a group of packages that should be installed or not installed based on a system search then create a new feature, group your packages within that feature and then set a detection condition or Eligibility condition at the feature level rather than at the package level.
Hopefully this helps.
![](/skins/images/CC38E504FC9E1309DC48ACFEB4925670/responsive_peak/images/icon_anonymous_message.png)