Their documentation talks about building a response file for the uninstall similar to the install response file, but you need the entire payload of the package to do it.  Well, there's a much better way, but undocumented.  In the uninstall keys, there is the "uninstallstring" value, well, that does work.  However,  you need to change the one command from -i to -u.  That is not documented, but I figured it out based on experience.  But, it gets a little trickier.  That -u works for the service packs and updates, and you have to remove those FIRST.  THEN you can remove the base install, which will require a -q -u to make it silent.  Oddly, the SP's so far only need the -u and they are silent.  You may need to test this as I am not sure how consistent this is across various versions, but the uninstall strings are basically the same, so I suspect it's consistent.  That way, you can easily remove previous installs before running an upgrade in one script and need only the new payload files.

For Example:

2013 Service Pack 6 removal
C:\Program Files (x86)\SAP BusinessObjects\setup.exe -u product.cr.patch-4.1.6.0-core-32

then run 2013 SP4 base install removal
C:\Program Files (x86)\SAP BusinessObjects\setup.exe -q -u product.crystalreports-4.0-core-32