--- a/AppRun
+++ b/AppRun
@@ -1,24 +1,33 @@
 #!/usr/bin/env python
 import os, sys
 import findrox; findrox.version(1, 9, 6)
-from zeroinstall.helpers import get_selections_gui
+from zeroinstall.injector.policy import Policy
 import rox
 from rox import g, processes, saving
 from cStringIO import StringIO
 
-zero2bundle_uri = "http://rox.sourceforge.net/2006/interfaces/Zero2Bundle.xml"
-
 def try_interface(uri):
 	errors = StringIO()
+	launcher = processes.PipeThroughCommand(
+		["0launch", "-d", "--", uri],
+		None, errors)
 	try:
-		sels = get_selections_gui(uri, ["--download-only"])
+		launcher.wait()
+	except processes.ChildError, ex:
+		if '(256)' not in str(ex):
+			rox.alert(str(ex))
 	except:
 		rox.report_exception()
 	else:	
-		return sels
+		return True
 	return False
 
 if len(sys.argv) == 1:
+	# By default, create a bundle for ourselves
+	uri = 'http://rox.sourceforge.net/2006/interfaces/Zero2Bundle.xml'
+	if not try_interface(uri):
+		sys.exit(1)
+elif sys.argv[1] == '--prompt':
 	from chooser import Chooser
 	m = Chooser()
 	while True:
@@ -28,24 +37,25 @@
 			sys.exit(1)
 		m.hide()
 		uri = m.uri.get_text()
-		sels = try_interface(uri)
-		if sels:
+		if try_interface(uri):
 			break
 	m.destroy()
 elif len(sys.argv) == 2:
 	uri = sys.argv[1]
-	sels = try_interface(uri)
-	if not sels:
+	if not try_interface(uri):
 		sys.exit(1)
 else:
 	rox.alert("Multiple arguments to Zero2Bundle (%s)!" % `sys.argv[1:]`)
 	sys.exit(1)
 
-print sels
+policy = Policy(uri)
+policy.freshness == 0
+policy.recalculate()
+assert policy.ready
 
 from bundle import BundleMaker
 
-maker = BundleMaker(sels)
+maker = BundleMaker(policy)
 default_name = os.path.basename(uri)
 if default_name.endswith('.xml'):
 	default_name = default_name[:-4]