DataAnalyzer
Flexera beginner

How to Change Value of @PRODUCT_NAME Programmatically?

I can see that the value is set from the Product Configuration level, but I need a different name for each release within it. Based on the flags, I know what I want to name each release. Is there a way to set that programmatically and if so, within which event?
Labels (1)
0 Kudos
13 Replies
TsungH
Pilgrim

ISCmdBld.exe is able to set property value with -z switch.
0 Kudos
DataAnalyzer
Flexera beginner

TsungH wrote:
ISCmdBld.exe is able to set property value with -z switch.


Interesting. I've never used SCmdBld.exe. We just use the Build feature withing InstallShield. Is there a way to set this within the release properties or in the InstallScript?
0 Kudos
TsungH
Pilgrim

If you are working with Basic MSI, InstallScript MSI, Merge Module project types, you can change product name at General Tab for a Product Configuration.If you are working with InstallScript project type, I haven't spent any time on that in recent years, I am not aware of any.
0 Kudos
DebbieL
Pilgrim

You can use the automation interface to make changes programmatically to your project. You can also use the automation interface to build releases in your project. So, you may want to look into using the automation interface for programmatically changing the product name at the product configuration level. Here are some relevant links:
0 Kudos
DataAnalyzer
Flexera beginner

Yes, I can manually change the property on the screen, but my question is how to do it programmatically. I have several releases within a product. The Product Name is set at the Product level, but I need a different name for each release. Each release has different flags, so I know what it should be. I just don't know what to set.

TsungH wrote:
If you are working with Basic MSI, InstallScript MSI, Merge Module project types, you can change product name at General Tab for a Product Configuration.If you are working with InstallScript project type, I haven't spent any time on that in recent years, I am not aware of any.
0 Kudos
DataAnalyzer
Flexera beginner

Did you just send me to the entire help file? I've already searched the help file and can't find what I need. Maybe I'm just clueless. Is there an example that can show me what to do? What property to set programmatically in the script?

I need to programmatically change the product name based on the features included. For instance, Retail, Trial, Beta, etc. I have separate releases within a product and would like to set that accordingly.

Would also like to set things like the copyright, signing code, postbuild properties, etc. programmatically rather than having to set it manually for each tab, but that's a different dream.


DebbieL wrote:
You can use the automation interface to make changes programmatically to your project. You can also use the automation interface to build releases in your project. So, you may want to look into using the automation interface for programmatically changing the product name at the product configuration level. Here are some relevant links:
0 Kudos
GrantK
Pilgrim

in the automation interface, refer to property: ProductName
from the following link:
http://helpnet.flexerasoftware.com/installshield21helplib/installshield21helplib.htm#StartTopic=help...
0 Kudos
DataAnalyzer
Flexera beginner

Thanks, but I'm not necessarily interested in writing a separate program to automate InstallShield. I'd like to just set these values programmatically in the IS script.

Is that possible? Thanks.

GrantK wrote:
in the automation interface, refer to property: ProductName
from the following link:
http://helpnet.flexerasoftware.com/installshield21helplib/installshield21helplib.htm#StartTopic=help...
0 Kudos
DLee65
Pilgrim

*EDIT - removed snarky remarks*
The answer is, NO, InstallScript does not have a property that can set it's compile time name. It has to be set at compile time by some type of external method that requires you to program it to set programmatically.
In fact I am not sure what you are trying to accomplish - anything in script would ONLY apply to runtime because code in script is not executed at compile time, it is executed at runtime.

Sorry no simple answers. So Yes, it is possible but not without work.

BTW, I found your reply to Debbie very rude as she pointed you directly to the interfaces required to modify a build at compile time. However, to accomplish this goal you will need to switch from the workflow of opening the IDE and compiling the setup but rather compile from a command line using the automation interface or command line.
0 Kudos
DataAnalyzer
Flexera beginner

No need to be condescending. If I knew the answer, I wouldn't be asking. And are you implying I'm afraid of working? I'm trying to solve a problem, not waste your or anyone else's time.

You're the first response to clarify that this feature request couldn't be done programmatically within InstallShield, so thank you for that.

Per your recommendations and others, if I want to implement this feature, I'll need to get a VB6 or .NET developer to create this for me. That would be difficult to manage and change. I'll just manually create a new Product Configurations for each name I need which is what I was trying to consolidate. It's nice to have different releases under one Product Configuration, but I find it odd that all the releases have to be the same Product Name.

DLee65 wrote:
This is too precious. You want to set the name programmatically but you do not want to utilize the tools that people have pointed to you to program a solution.
The answer is, NO, InstallScript does not have a property that can set it's compile time name. It has to be set at compile time by some type of external method that requires you to program it to set programmatically.

Sorry no simple answers. So Yes, it is possible but not without work.
0 Kudos
DLee65
Pilgrim

DataAnalyzer wrote:
Did you just send me to the entire help file? I've already searched the help file and can't find what I need. Maybe I'm just clueless. Is there an example that can show me what to do? What property to set programmatically in the script?

I need to programmatically change the product name based on the features included. For instance, Retail, Trial, Beta, etc. I have separate releases within a product and would like to set that accordingly.

Would also like to set things like the copyright, signing code, postbuild properties, etc. programmatically rather than having to set it manually for each tab, but that's a different dream.


Why not create separate configurations for Retail, Trial, and Beta and set the name in the configuration settings? Then you can specify which one to build from a command line or just click the correct one from the UI? If what I was trying to accomplish is to have a configuration like:
_Alpha
_Beta
_RC1
_Retail
_Trial
_etc

In this case you should have a finite list of configurations. If the number of configurations is finite then specifying separate configurations is the correct method to accomplish this.
If, however, you are trying to obtain something like
_0.0.1_Alpha, where the version value changes with each build then you will need some type of external process to configure the compile settings dynamically. Automation interface is hands down the best method for implementation here.

EDIT: Just read your previous reply. I can understand if you are not familiar with .NET, but if you are familiar with vbscript or javascript you can implement the automation interface using that by using CreateObject("ISWIAUTO##.ISPROJECT") . There should be plenty of examples here on the forums of how others have used it.

Here is one example: http://helpnet.installshield.com/installshield18helplib/IHelpAutoExReport.htm
0 Kudos
DataAnalyzer
Flexera beginner

Yes, I could and have created a separate configuration for each one. Unfortunately, that's not very efficient.

I was hoping to have a separate release within each configuration because they would share the same configuration settings (and flags) plus each release having their own flag(s). If I could programmatically change the product name based on the flags, I'd be done. Instead, I have to create separate configurations and manually try to keep all their settings in snyc. Sounds like there isn't a way to do this.

DLee65 wrote:
Why not create separate configurations for Retail, Trial, and Beta and set the name in the configuration settings? Then you can specify which one to build from a command line or just click the correct one from the UI? If what I was trying to accomplish is to have a configuration like:
_Alpha
_Beta
_RC1
_Retail
_Trial
_etc

In this case you should have a finite list of configurations. If the number of configurations is finite then specifying separate configurations is the correct method to accomplish this.
If, however, you are trying to obtain something like
_0.0.1_Alpha, where the version value changes with each build then you will need some type of external process to configure the compile settings dynamically. Automation interface is hands down the best method for implementation here.

EDIT: Just read your previous reply. I can understand if you are not familiar with .NET, but if you are familiar with vbscript or javascript you can implement the automation interface using that by using CreateObject("ISWIAUTO##.ISPROJECT") . There should be plenty of examples here on the forums of how others have used it.

Here is one example: http://helpnet.installshield.com/installshield18helplib/IHelpAutoExReport.htm
0 Kudos
DataAnalyzer
Flexera beginner

Since the responses haven't solved this problem, I'd like to rephrase this.

I'd like to have one setup program that contains multiple versions. Based on the information they enter (could be a serial number or options they choose), I can have the script set the right features and install it properly. However, I'd like the name of the product in the Windows Programs list to reflect the selection they made.

How would I change the product name in my script so my setup program that contains multiple versions/products can do this?
0 Kudos