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
- :
- Automation Interface: Build method isn't building project
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
‎Nov 16, 2010
06:43 PM
Automation Interface: Build method isn't building project
I am unable to get the Build method to run the build for my IS2011 InstallScript project. I can modify Path Variables and Properties in the project prior to running the build without issue, but the Build itself doesn't seem to function. Furthermore, it reports no Errors or Warnings...I can't tell that anything is happening at all.
I'm certain that I've gotten the correct object reference because I'm able to report back the object's Name property (see the output of the "Release name = " print statement). Any help you can lend as to why this project won't build is much appreciated!
That produces this output:
I'm certain that I've gotten the correct object reference because I'm able to report back the object's Name property (see the output of the "Release name = " print statement). Any help you can lend as to why this project won't build is much appreciated!
sub BuildProject {
my $function = "BuildProject";
my ($sProjectDir, $sProjectName) = @_;
print "\nProjectDir: $sProjectDir\n";
print "Project Name: $sProjectName\n";
my $sISProjectName = "$sProjectDir\\$sProjectName.ism";
print "\nStarting the InstallShield build for $sISProjectName.\n";
my $isProject = Win32::OLE->new("IswiAuto17.ISWiProject");
if (not defined ($isProject)) {
die "\n$function: Failed to set isProject";
}
# open a project as read-write
my $ret = $isProject->OpenProject($sISProjectName, 1);
if ($ret != 0) {
die qq(\n$function: Could not open InstallShield project!\n);
}
my $objRelease;
$objRelease = $isProject->ISWiProductConfigs("Media")->ISWiReleases("New Media");
if (not defined ($objRelease)) {
die "\n$function: Failed to set objRelease";
}
# build it
print "\nRelease name = " . $objRelease->Name . "\n";
$objRelease->Build();
# report warnings and errors
print "Warnings: ", $objRelease->BuildWarningCount, "\n",
"Errors: ", $objRelease->BuildErrorCount, "\n";
if ($objRelease->BuildErrorCount > 0) {
print qq(\n$function: Installshield failed to build the project.);
} else {
print "\n$function: The build of the $sProjectName project is complete.\n";
}
# close the project:
$isProject->CloseProject();
}
That produces this output:
ProjectDir: C:\BUILD\Core
Project Name: Core
Starting the InstallShield 2011 build for C:\BUILD\Core\Core.ism.
Release name = New Media
Warnings: 0
Errors: 0
BuildProject: The build of the Core project is complete.
(5) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 17, 2010
10:59 AM
If you open the project as a writable file by passing 0 to the second parameter of the OpenProject function, does it make any difference?
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 17, 2010
11:23 AM
Similar to what hidenori said... I've had trouble building in the past if the files were in source control...and hence read-only.
Therefore our build script will always check out some of the following files:
Project.ism
Project\Script Files\*.*
Project\Release\Interm\*.*
Maybe give that a try?
Therefore our build script will always check out some of the following files:
Project.ism
Project\Script Files\*.*
Project\Release\Interm\*.*
Maybe give that a try?
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 17, 2010
11:57 AM
I changed that flag to 0 and still don't get a package. The ISM is modified with the changes to Path Variables and Properties (code that runs prior to this BuildProject function), but I don't have a Media folder in my project folder.
lam: Those "gets" out of source control occur earlier in the automation, as well as a folder-level change of all of the file attributes to read-write.
One thing I forgot to mention: this is the output I get whether the project builds cleanly or not. So, if I intentionally add code that will cause the build to fail, I get no indication that it didn't work. When I remove that code and run the build, I get the same output from the automation.
lam: Those "gets" out of source control occur earlier in the automation, as well as a folder-level change of all of the file attributes to read-write.
One thing I forgot to mention: this is the output I get whether the project builds cleanly or not. So, if I intentionally add code that will cause the build to fail, I get no indication that it didn't work. When I remove that code and run the build, I get the same output from the automation.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 17, 2010
12:32 PM
Try consuming the event from the ISWiRelease object and see if you are getting any status message from the build. Here is a sample VB code:
Public WithEvents pISWiRelease17 As ISWiAuto17.ISWiRelease
Private Sub Command1_Click()
Dim pISWiProject17 As ISWiAuto17.ISWiProject
Set pISWiProject17 = CreateObject("ISWiAuto17.ISWiProject")
pISWiProject17.OpenProject "C:\InstallShield 2011 Projects\My Project Name-1.ism", False
Set pISWiRelease17 = pISWiProject17.ISWiProductConfigs("Product Configuration 1").ISWiReleases("Release 1")
pISWiRelease17.Build
pISWiProject17.CloseProject
Set pISWiProject17 = Nothing
End Sub
Private Sub pISWiRelease17_StatusMessage(ByVal sMessage As String, pbCancel As Boolean)
End Sub
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 17, 2010
03:32 PM
hidenori wrote:
Try consuming the event from the ISWiRelease object and see if you are getting any status message from the build.
I didn't go this far, but I used your VB code to write a build routine for vbscript and it works as expected. So that tells me the COM object is alive and well. (EDIT: If you want to walk me through how to construct the VB executable, I'm all ears...I have no experience with it.)
Additional info:
I tested my Perl build using a 2010 project, and it built correctly (reporting 2 warnings).
I then added code to make it fail and it correctly reported 1 failure and 2 warnings.
I then upgraded the project to 2011 and the build didn't work (and didn't report build errors and warnings).
This just doesn't make sense.
