cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
cardel
Level 2

Control file for ISCmdBld.exe (automatic build)

Hello,
I have 10 projects with similar structure of source files on disc. I would like to make one universal installshield project to make my setup package. And I would like to use ISCmdBld.exe and some control file to change some paths and variables before build.

For example:
projectA
C:\projects\projectA\sql\*.*
C:\projects\projectA\frm\*.*
C:\projects\lib\a*.*

projectB
C:\projects\projectB\sql\*.*
C:\projects\projectB\frm\*.*
C:\projects\lib\b*.*
C:\projects\projectB\img\b1.jpg
C:\projects\projectB\img\b2.jpg

I want to include all sql and frm files from my projectA dir and include only a*.* libraries from lib dir which is shared between all projects.
Similar with project B. I want to include all sql and frm files from my projectB dir and include only b*.* libraries from lib dir.Also I want to add images b1.jpg and b2.jpg to my projectB.

I have 10 similar projects and I don't want to make specific project definition in InstallShield for each one.

I would like to have some configuration file where I would like to specify project name, version etc... and mainly define paths to project files. Also define destination dirs for these files. Than use ISCmdBld.exe to build installation.

Is it possible?

Thank you
Labels (1)
0 Kudos
(2) Replies
GarrettDyer
Level 5

You're already separating out all other pickup files between the projects, so my suggestion is to also take the extra step to separate the lib files too. If you can make that happen, the rest of what I've written below will fall in place naturally, and you'll be able to a single IS project as your install project by creating two different releases. If you can't, it can still be done, but the picture is muddied a bit.

I'm going to take you down the path of creating two Features - one for the application files in the frm, sql, and lib folders - and the other feature for the images that are specific to Product B. Then you'll create 2 Releases - one for Product A and one for Product B - and when you build your packages using IsCmdBld.exe, you'll pass in as arguments to specify what is to be built, and from where it is built.

Start by creating your two pickup area paths by clicking Path Variables beneath Media in the left navigation pane. Click on New and give your path variable a name like PickupFolder, or something like that. The Defined Value should be the path to the files to be packaged (i.e. C:\projects\projectB).

Now create two Features, one that includes files from the sql, frm and lib folders, and the second includes files from the image folder. In the Release Flags field of each Feature, give each a unique name...something like Images and AppFiles, maybe. Now create the Components associated to each, and add your files. When you do so, you should see something similar to "\frm", which lets you know that your Path Variable is getting utilized to find the files. If it doesn't show as such, then stop, because you won't be able to update this precedent path via IsCmdBld.exe when you build the packages later.

Now create your two product packages in the Releases view beneath Media in the left navigation pane. If you've already built the project, you should already have a Configuration, but if not, right-click on Release in the middle navigation pane and choose New Product Configuration and name it ProductA, then create another New Product Configuration and name it ProductB. In the Product Configuration Flags field of ProductA, enter "AppFiles" (to include only that Feature). In this same field of ProductB, enter "AppFiles, Images" to include both Features. From there, create your release by right-clicking on ProductA, choosing New Release, and naming it ProductARelease (or something that makes sense to you). Do the same for ProductB. You'll want to explore the rest of the fields of the Configurations and Releases to ensure the packages are built as you want them.

To build each project, utilize command-line build arguments to specify not only the package to be built, but also to location of the pickup folder(s). The product configuration is controlled by the -a flag, the release is specified with the -c flag, and the "l" (as in little) argument controls the Path Variable. So, here's an example command for ProductB:

ISCmdBld.exe -a ProductB -c ProductBRelease -l PickupFolder="C:\projects\projectB"

Then, when you want to build the Product A, change each flag specific to Product A.

(NOTE: If you use Dynamic Linking to add files to your Components, this gets even easier. You can simply create one Feature and one Release, and you can pass in the name of the Product, Version, path for the Path Variable...and you're done!)
0 Kudos
cardel
Level 2

Ok, thanks for this detailed reply. I will play with features, components and path variables and will try to achieve my goal...
0 Kudos