Should have looked here earlier. I had found the same problem.
Here is some code that can be inserted into the QAFDeployBase subroutine in the _QAF WF Builder script library (I've included some existing code at the top of the block to show where I'm placing it):
…
UPDATE: It looks like the "SetOption" calls have no effect in this context, so the best you can do is probably to just detect that soft deletions are enabled for <database name> and present the user with a notice. They could then "continue processing or stop here?".
If destDB.CurrentAccessLevel < 5 Then
Msgbox "You do not have Designer or Manager access to the destination database: " & destDB.filepath,16,"Error"<br/>
Exit Sub<br/>
End If
<br/>
If destDB.GetOption(DBOPT_SOFTDELETE) Then
disableSoftDelete = Messagebox ("The destination database has soft deletions enabled." & Chr(10) & Chr(10) & _<br/>
"You must disable soft deletions before deploying QAF, however doing so will" & Chr(10) & _<br/>
"cause any documents in a soft-deleted state to be removed permanently" & Chr(10) & Chr(10) & _<br/>
"Do you want to DISABLE SOFT DELETIONS NOW?", 4 + 32 + 256, "Soft Deletions Enabled")<br/>
If disableSoftDelete = 6 Then<br/>
'User selected "YES" to disable soft deletions in the destination db<br/>
Call destdb.SetOption(DBOPT_SOFTDELETE, False) 'disable soft deletions<br/>
softdeletehours% = destDB.UndeleteExpireTime<br/>
Else<br/>
Messagebox "Deployment of QAF to the destination database has been cancelled", 64, "Deployment Cancelled"<br/>
Exit Sub<br/>
End If<br/>
End If
Later on - you can decide where - you can re-enable soft deletions with this (but be sure it's within a given destdb loop):
If disableSoftDelete = 6 Then
Call destDB.SetOption(DBOPT_SOFTDELETE, True)<br/>
destDB.UndeleteExpireTime = softdeletehours%<br/>
End If
Note that this is not tested beyond knowing that I can detect the setting, but if there are problems, you can certainly fall back to just skipping that particular db with some sort of notification.