Showing results for 
Show  only  | Search instead for 
Did you mean: 
Level 3

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?
Labels (1)
0 Kudos
(4) Replies
Not applicable

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.
0 Kudos
Level 3

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.
0 Kudos
Not applicable

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.
0 Kudos
Level 13

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.
0 Kudos