Copy link to clipboard
Copied
I developed a script to automate the generation of large FrameMaker books from Ditamap and XML files. The script successfully generates 2 or 3 of these large books before FrameMaker crashes midway through the book generation with the following error message:
The point at which FrameMaker crashes appears to be totally random and the internal error code often changes as well. Some research on these forms led me to believe that it was due to saving the book to a network drive, so I modified the script to save to my C: drive and the crashes got WORSE! My FrameMaker 11 is patched to the latest version and I've got 50 gigs of free space on my drive.
I use the following function to save the ditamap/xml files as FM books:
function saveToFm(fileObject, savePath, ditaValFile) {
var saveParams = GetSaveDefaultParams();
var i = GetPropIndex(saveParams, Constants.FS_FileType);
saveParams.propVal.ival = Constants.FV_SaveFmtBookWithFm;
var i = GetPropIndex(saveParams, Constants.FS_DitavalFile);
saveParams.propVal.sval = "ditaVal dir filepath" + ditaValFile
var saveAsName = savePath;
var returnParamsp = new PropVals();
fileObject.Save(saveAsName, saveParams, returnParamsp);
}
My "ditaVal dir filepath" is a network drive location, but I removed it from this post to protect personal/company info.
One solution I thought of is closing and reopening FrameMaker after every successful book generation, but app.Quit() doesn't work and app.Close() only works if I run the script from FrameMaker, which means that once the app closes it will not reopen.
I created 2 .bat files, one to launch and one to quit FrameMaker, but when I use the quitFM.bat in the script it is then unable to relaunch FrameMaker with the startFM.bat. Both .bat files do exactly what I want when I run them by themselves.
Any ideas how to fix this?
Copy link to clipboard
Copied
FrameMaker may just be leaking out memory on big process like this. You may want to try downloading and installing a trial of the 64-bit version of FrameMaker 2019. You should be able to install it side-by-side with FrameMaker 11.
Copy link to clipboard
Copied
The company I work for has setup their FrameMaker with custom output templates and other features so that all our operator's manuals, those are the large books I'm generating, have the same style and format. I don't think that FM 2019 would play nice with the old template system. The guy who created that convoluted mess is long gone so upgrading to 2019 is a nonstarter.
Is there any way that you know of to have FrameMaker restart after successfully generating a book? If I could use one Extendscript Toolkit script to call another Extendscript Toolkit script, passing the second script some parameters and giving a return valve back to the second script I could do it. But I can't find any way to do that.
Copy link to clipboard
Copied
I can't see any reason why you couldn't open up the existing templates in 2019 and have them still work. I have an inexpensive ConvertDoc script for batch converting FrameMaker documents. I have clients that up-convert FrameMaker documents all the time and they work fine in the later version. As long as your templates are backed up, it is worth a try to move to 2019 and see if it makes a difference. Since you are using DITA, you can experiment with the built-in templates first. If you need help with this, please contact me offlist.
Copy link to clipboard
Copied
It is for sure a memory leak . I watched the process steadily eat up more and more RAM till it hit 420,568K and died. Has the latest version of FM actually fixed this memory leak or does it just have more memory to burn cause it is 64 bit?
Is calling scripts from scripts or restarting FM mid script even possible? If it is I'm much rather go down that road than deal with the headache of convincing the company to buy more software licences.
Copy link to clipboard
Copied
I don't think memory leaks are an issue any more with later versions of FrameMaker. I don't know about restarting FM mid script, but in my opinion, you are going down the wrong road with this. You are trying to push FrameMaker 11 beyond its capabilities. If you are not willing to at least explore FrameMaker 2019, you will probably have to be content with running your script in stages.