Running Project Reports Using the Automation Interface

InstallShield 2026

This VBScript example below accesses objects in a setup project to display a report of the total number of features, components, files, and various types of files. The output is displayed in a message box, but you could also write this information to a text file.

Requirements

The following requirements should be met:

• You must have Windows Scripting Host to run a .vbs file. (It would be very simple to modify this script to run in a Visual Basic program.)
• InstallShield must be installed on the system before you can use the automation interface.
• Before running the script, assign the fully qualified path of an existing setup project (.ism file) to the string variable sProj.

Example Script

Option Explicit

 

' Create automation object

Dim pProj

Set pProj = CreateObject("IswiAutoAutomation Interface Version.ISWiProject")

 

' Open a setup project--make sure it is not already open in the IDE

Dim sProj

sProj = "C:\MySetups\TestProject.ism"

pProj.OpenProject sProj

 

' Start building string that lists features, components, and files

Dim sItems

sItems = "Project Report" & vbNewLine

sItems = sItems & "For project: " & sProj & vbNewLine

sItems = sItems & "Number of features: " & pProj.ISWiFeatures.Count & vbNewLine

sItems = sItems & "Number of components: " & pProj.ISWiComponents.Count & vbNewLine

 

' Declare and initialize counters for files and file types

Dim i, nEXE, nDLL, nOCX

i = 0

nEXE = 0: nDLL = 0: nOCX = 0

 

' Loop through components to get the number of files and individual file names

Dim sFileName

Dim pComp, pFile

For Each pComp In pProj.ISWiComponents

  For Each pFile In pComp.ISWiFiles

    i = i + 1

    sFileName = pFile.DisplayName

    If Instr (1, sFileName, ".exe", vbTextCompare) > 0 Then

      nEXE = nEXE + 1

    ElseIf Instr (1, sFileName, ".dll", vbTextCompare) > 0 Then

      nDLL = nDLL + 1

    ElseIf Instr (1, sFileName, ".ocx", vbTextCompare) > 0 Then

      nOCX = nOCX + 1

    End If

  Next

Next

 

sItems = sItems & "Number of files: " & i & vbNewLine

sItems = sItems & vbTab & "EXEs: " & nEXE & vbNewLine

sItems = sItems & vbTab & "DLLs: " & nDLL & vbNewLine

sItems = sItems & vbTab & "OCXs: " & nOCX & vbNewLine

 

' Display report

Wscript.Echo sItems

 

' Close project

pProj.CloseProject

See Also