diff --git a/tcutils/disttools.py b/tcutils/disttools.py
new file mode 100644
index 0000000..adf59ee
--- /dev/null
+++ b/tcutils/disttools.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8
+
+import sys
+import os
+from zipfile import ZipFile, ZIP_DEFLATED
+
+
+if sys.platform == 'win32':
+    build_path = 'build/exe.win32-2.6'
+else:
+    build_path = "build/exe"
+
+
+def _make_zip_file(args, dirname, names):
+    zip, build_dir, dist_version_name = args
+    # print "build dir : %s, %s" % (build_dir, dirname)
+    for file_name in names:
+        full_name = os.path.join(dirname, file_name)
+        if build_dir == dirname:
+            arcname = os.path.join(dist_version_name, file_name)
+        else:
+            d = dirname[len(build_dir) + 1:]
+            temp = os.path.join(dist_version_name, d)
+            arcname = os.path.join(temp, file_name)
+        zip.write(full_name, arcname)
+        print "zip file %s to %s" % (full_name, arcname)
+
+
+def make_dist(name, version, dist_dir='dist'):
+
+    dist_version_name = "%s-%s" % (name, version)
+    dist_name = os.path.join(dist_dir, dist_version_name + '.zip')
+    print "Make zip file ...[%s]" % os.path.relpath(dist_name)
+    zip_file_name = os.path.basename(dist_name)
+    zip_file_name = os.path.join(dist_dir, zip_file_name)
+    if not os.path.exists(dist_dir):
+        os.mkdir(dist_dir)
+    zip = ZipFile(zip_file_name, 'w', ZIP_DEFLATED)
+    build_dir = os.path.realpath(build_path)
+    os.path.walk(build_dir, _make_zip_file, (zip, build_dir, dist_version_name))
+    zip.close()
\ No newline at end of file
