--- a
+++ b/trunk/cforge/cforge/Package/CFORGE/Scripts/create-package.py
@@ -0,0 +1,160 @@
+import sys, os
+import zipfile
+import cds_script
+import uuid
+import ui
+
+ManifestSkeleton="""<?xml version="1.0" encoding="ISO-8859-1"?>
+<Package>
+  <Strings>
+    <String Id="GeneralName">
+      <Neutral>%s</Neutral>
+    </String>
+    <String Id="GeneralVendor">
+      <Neutral>%s</Neutral>
+    </String>
+    <String Id="GeneralCopyright">
+      <Neutral>%s</Neutral>
+    </String>
+    <String Id="GeneralDescription">
+      <Neutral>%s</Neutral>
+    </String>    
+    <String Id="license">
+      <Neutral>%s</Neutral>
+    </String>        
+    <String Id="TargetDir">
+      <Neutral>Target directory</Neutral>
+    </String>
+    <String Id="TargetDirDescription">
+      <Neutral>The target directory where the projects are saved.</Neutral>
+    </String>
+  </Strings>
+  <General>
+    <Id>{%s}</Id>
+    <Version>1.0.0.0</Version>
+    <Name>$GeneralName</Name>
+    <Vendor>$GeneralVendor</Vendor>
+    <Copyright>$GeneralCopyright</Copyright>
+    <Description>$GeneralDescription</Description>    
+    <LicenseAgreement>$license</LicenseAgreement>        
+    <RequiredInstallerVersion>3.5.10.0</RequiredInstallerVersion>
+  </General>
+  <TargetDirectoryDefinitions>  
+    <TargetDirectoryDefinition>
+      <Id>1</Id>
+      <Name>$TargetDir</Name>
+      <Description>$TargetDirDescription</Description>
+      <PromptUser>True</PromptUser>
+      <DefaultValue>%%USERPROFILE%%\CODESYS Projects\</DefaultValue>
+    </TargetDirectoryDefinition>
+  </TargetDirectoryDefinitions>
+  <Components>                
+    <Component>
+      <General>
+    <Id>1</Id>
+    <Name>Default</Name>
+    <Description>Default Package</Description>
+    <Selectable>false</Selectable>
+    <SelectedByDefault>true</SelectedByDefault>
+      </General>
+      <Dependencies>            
+      </Dependencies>
+      <Items>
+%s
+      </Items>            
+    </Component>     
+  </Components>
+</Package>
+"""
+
+ManifestItemLibrary = """
+        <Library>
+          <Path>%s</Path>
+        </Library>
+"""
+
+ManifestItemDevDesc = """
+        <DeviceDescription>
+          <Path>%s</Path>
+        </DeviceDescription>
+"""
+
+ManifestItemProject = """
+        <File>
+          <Path>%s</Path>
+          <IgnoreArchiveFolder>True</IgnoreArchiveFolder>
+          <TargetFolder>$1</TargetFolder>
+          <Overwrite>
+            <Option>Yes</Option>
+          </Overwrite>
+        </File>
+"""
+
+# This is a cforge command (script file)
+# this will be run as ironpython script.
+# the filename of this script is automatically the corresponding cforge command 
+# with some magic functions you can easily integrate it nicely into cforge tool
+
+# cforge_usage: 
+# here you can return an array of all possible arguments and options that can 
+# be passed to this command script
+def cforge_usage():
+    help = [ 
+        ["<path to local repository>", "---"]
+    ]
+
+    return help
+
+
+if len(sys.argv) <= 1:
+    print("Oh, there are no arguments. Perhaps you forgot something?")
+    sys.exit()
+
+folder = sys.argv[1]
+scriptpath = os.path.abspath(os.path.dirname(sys.argv[0]))
+
+
+
+def zipdir(path, ziph):
+    # ziph is zipfile handle
+    for root, dirs, files in os.walk(path):
+        for file in files:
+            filename=os.path.join(root, file)
+            archname=filename[len(path)+1:]
+            print("Adding file: %s -> %s" % (filename, archname))
+            ziph.write(filename, arcname=archname)
+
+
+# Discover package content
+packageItems = ""
+license = ""
+for root, dirs, files in os.walk(folder):
+    for file in files:
+        filename=os.path.join(root, file)
+        archname=filename[len(folder)+1:]
+        if file.endswith(".project"):
+            packageItems += ManifestItemProject % (archname)
+        if file.endswith(".devdesc"):
+            packageItems += ManifestItemDevDesc % (archname)
+        if file.endswith(".library"):
+            packageItems += ManifestItemLibrary % (archname)
+        if file == "license.txt":
+            license = archname;
+
+if license == "":
+    file = open(os.path.join(folder, "license.txt"), "w")
+    if file:
+        file.write("Add license text...")
+        file.close();
+    license = "license.txt"
+
+config = ui.Dialog("Create Package", PkgName=True, PkgVendor=True, PkgCopyright=True, PkgDescription=True)
+
+if config != None:
+    guid = uuid.uuid1();
+    packageManifest = ManifestSkeleton % (config["PkgName"], config["PkgVendor"], config["PkgCopyright"], config["PkgDescription"], "LICENSE.TXT", guid, packageItems)
+    file = open(os.path.join(folder, "package.manifest"), "w")
+    if file:
+        file.write(packageManifest)
+        file.close();
+    print packageManifest
\ No newline at end of file