Dear SITL,
concerning your problems with updates, I can only suppose that "Probably", it exists something wrong with your project settings or with your script logic. The logic that stays behind the update functionality is extremely simple and unless you made any customization that may have altered the update functionality, this must work as it is.
When the updates are deployed using the "Schedule updates (similar to Windows Update)" mode, the update script creates a "Scheduled Task" on the target system. This task is based on the settings entered with the "update_setup_schedule" dialog and once confirmed the "Notification Settings", the "Task" becomes immediately active.
This TASK can be easily checked by inspecting the "Scheduled Tasks" of the target system (Control Panel -> System -> Administrative Tools -> Task Scheduler).

- webupdate1.png (88.5 KiB) Viewed 16200 times
Please note that by default, the update script uses the project name to assign the task name ("$TITLE$ Updates") and in my case, I used WebUpdate for the project name.
For test purpose, you can also force the task (...the update process) to start immediately. This can be easily done by selecting the "Run" command of the Task dialog. Alternatively, you can manually run the command line defined with the "Task Action".
*****
By default Application RTMs are not included with the Patch Build process. Consequently, this lets me to think that you have modified the default behavior of the main script file.
At any rate, Installaware uses pre-defined COMPILER VARIABLES to include/Exclude part of the script code depending on the selected Build Type.
For example;
[[compiler if Variable BUILDMODE not Equals PATCH]
if Variable NEEDSUPGRADE Equals TRUE
Set Variable PREREQ to TRUE
Set Variable PRELIST to $PRELIST$$NEWLINE$Previous Version Uninstallation
end
[compiler end]
Consequently, you may use the same identical approach to Exclude part of your script code that doesn't need to be included with your patch.
********
Hope this finally helps you.
Regards