diff --git a/Mac/Tools/IDE/PackageManager.py b/Mac/Tools/IDE/PackageManager.py
index a93d683..6b83e1c 100755
--- a/Mac/Tools/IDE/PackageManager.py
+++ b/Mac/Tools/IDE/PackageManager.py
@@ -1,3 +1,37 @@
+# Prelude to allow running this as a main program
+def _init():
+	import macresource
+	import sys, os
+	macresource.need('DITL', 468, "PythonIDE.rsrc")
+	widgetrespathsegs = [sys.exec_prefix, "Mac", "Tools", "IDE", "Widgets.rsrc"]
+	widgetresfile = os.path.join(*widgetrespathsegs)
+	if not os.path.exists(widgetresfile):
+		widgetrespathsegs = [os.pardir, "Tools", "IDE", "Widgets.rsrc"]
+		widgetresfile = os.path.join(*widgetrespathsegs)
+	refno = macresource.need('CURS', 468, widgetresfile)
+	if os.environ.has_key('PYTHONIDEPATH'):
+		# For development set this environment variable
+		ide_path = os.environ['PYTHONIDEPATH']
+	elif refno:
+		# We're not a fullblown application
+		idepathsegs = [sys.exec_prefix, "Mac", "Tools", "IDE"]
+		ide_path = os.path.join(*idepathsegs)
+		if not os.path.exists(ide_path):
+			idepathsegs = [os.pardir, "Tools", "IDE"]
+			for p in sys.path:
+				ide_path = os.path.join(*([p]+idepathsegs))
+				if os.path.exists(ide_path):
+					break
+		
+	else:
+		# We are a fully frozen application
+		ide_path = sys.argv[0]
+	if ide_path not in sys.path:
+		sys.path.insert(0, ide_path)
+		
+if __name__ == '__main__':
+	_init()
+	
 import W
 import Wapplication
 from Carbon import Evt
@@ -69,7 +103,7 @@
 		
 		self.openwindowsmenu = Wapplication.Menu(self.menubar, 'Windows')
 		self.makeopenwindowsmenu()
-		self._menustocheck = [closeitem, saveasitem, 
+		self._menustocheck = [closeitem, 
 				undoitem, cutitem, copyitem, pasteitem, 
 				selallitem,
 				runitem, homepageitem]
