So here is something that I came up with for you. You use Automator to save a workflow that only contains the AskforFinderItems action set to files and folders, Desktop, and multiple selection. That is the only use of Automator needed. We will run that Automator workflow from within an AppleScript application that understands interactive (double-click), and drag & drop user functionality.
The sole purpose of the interactive part of the application is to use the above workflow to get user selected files and/or folders. No need for any other Automator actions, or the on run argv clauses.
The structure looks like the following:
property workflow : POSIX path of ((path to home folder) as text) & "AskforFinderItems.workflow"
on run-- Interactive section, only when user double-clicks
-- Automator will return a list of POSIX path objects with unwanted clutter
-- When AWK is done, only clean, quoted POSIX path filenames are returned.
set fileObjects to {}
set retObjs to paragraphs of (do shell script "/usr/bin/Automator " & workflow & " | awk '!/\\(|\\)/ {gsub(/\\x5c|,|\"/, \"\", $1);print $1;next}'")
-- roll our very own alias list
repeat with i from 1 to (count of retObjs)
copy (item i of retObjs as POSIX file as alias) & return to end of fileObjects
end repeat
-- log fileObjects
openfileObjects-- fileObjects is now open, so on open handler now takes over as we leave interactive
return
end run
on openfileObjects-- drag & drop section, or items passed from interactive section
-- one instance of your current run AppleScript code goes here. No need for Automator
-- at this point, or on run argv.
end open