Kinook Software Forum

Kinook Software Forum (https://www.kinook.com/Forum/index.php)
-   [VBP] Third Party Tools (https://www.kinook.com/Forum/forumdisplay.php?f=3)
-   -   How to get exit code from CABARC.EXE? (https://www.kinook.com/Forum/showthread.php?t=188)

a_t_jackson 09-09-2003 06:30 AM

How to get exit code from CABARC.EXE?
 
I'm using CABARC.EXE to package an ActiveX control into a CAB file. I've created a "Run Program" action in Vis Build and have been able to get it working properly with this syntax:

%DOSCMD% cabarc -s 6144 n MyApp.cab MyApp.inf MyApp.ocx

However, I also want to handle cases where something goes wrong. For example, if the file "MyApp.inf" doesn't exist the console window will actually show:

FCIAddFile() failed: code 1 [Failure opening file to be stored in cabinet]

but Vis Build doesn't pick up the error and reports that the action completed successfully. I've got "Success exit Codes = 0". Any ideas?

kinook 09-09-2003 07:21 AM

Unfortunately, cabarc.exe doesn't return a non-zero exitcode in most error situations. You would need to parse the program output for error strings and fail the build if any are found. Here is one way it could be done (you can copy and paste the text below into VisBuildPro; it assumes VBScript is set as your default script language; the script code is accessed within VBP by clicking the Script Editor button within the step properties dialog and switching to the Step tab):



cabarc -s 6144 n %TEMP%\MyApp.cab c:\nonexist.ini
call cabarc
1


a_t_jackson 09-10-2003 04:23 AM

Thanks for your help. I've finally got it to work by realising that the XML tags weren't requried and just including this section of your code in the STEP tab:

Function vbld_StepDone()
' look for the string ' failed' in the cabarc output and fail the build if found
If InStr(Application.Macros(vbldMacroSystem)("LASTSTEP_OUTPUT"), " failed") <> 0 Then _
Err.Raise 1, Step.Name, "cabarc utility failed"
End Function

One more problem...calling Err.Raise just seems to stop the Build without triggering my Failiure steps. Any ideas?

kinook 09-11-2003 11:21 AM

You can copy and paste XML step text into the step grid (not the step properties dialog) and it will create a new step with all the properties initialized.

There is currently a bug in that failure steps are not built when a failure occurs within a step's script event. As a workaround, you could instead place the script code a Run Script step following the cabarc step:


VBScript

1
test failure


All times are GMT -5. The time now is 09:11 AM.


Copyright © 1999-2023 Kinook Software, Inc.