Index: visual_studio/NativeClientVSAddIn/create_package.py |
diff --git a/visual_studio/NativeClientVSAddIn/create_package.py b/visual_studio/NativeClientVSAddIn/create_package.py |
index e5bc0f80afb43db667463bc7c2dfc4c20a09ca92..e7db686c725c9ad7f30a27a04d20a0982e055f10 100644 |
--- a/visual_studio/NativeClientVSAddIn/create_package.py |
+++ b/visual_studio/NativeClientVSAddIn/create_package.py |
@@ -13,30 +13,60 @@ result in out/NativeClientVSAddin.zip |
import os |
import zipfile |
-# Root output directory |
-BUILD_OUTPUT_DIRECTORY = "../../out/NativeClientVSAddIn/" |
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) |
-# Directory containing static installer resources |
-RESOURCE_DIRECTORY = "./InstallerResources" |
+# Root output directory. |
+BUILD_OUTPUT_DIRECTORY = os.path.join( |
+ SCRIPT_DIR, |
+ "../../out/NativeClientVSAddIn/") |
-# Directory that contains the build assemblies |
+# Directory containing static installer resources. |
+RESOURCE_DIRECTORY = os.path.join(SCRIPT_DIR, "InstallerResources/") |
+ |
+# Directory that contains the build assemblies. |
ASSEMBLY_DIRECTORY = os.path.join(BUILD_OUTPUT_DIRECTORY, "Debug") |
-# Base name of the final zip file |
+# Base name of the final zip file. |
OUTPUT_NAME = os.path.join(BUILD_OUTPUT_DIRECTORY, "NativeClientVSAddIn.zip") |
-# List of paths to files to include in the zip file |
+# List of source/destination pairs to include in zip file. |
FILE_LIST = [ |
- os.path.join(RESOURCE_DIRECTORY, 'NativeClientVSAddIn.AddIn'), |
- os.path.join(RESOURCE_DIRECTORY, 'install.py'), |
- os.path.join(ASSEMBLY_DIRECTORY, 'NativeClientVSAddIn.dll')] |
+ (os.path.join(ASSEMBLY_DIRECTORY, "NativeClientVSAddIn.dll"), ''), |
+ (os.path.join(ASSEMBLY_DIRECTORY, "NaCl.Build.CPPTasks.dll"), 'NaCl')] |
+ |
+ |
+def AddFolderToZip(path, zip_file): |
+ """Adds an entire folder and sub folders to an open zipfile object. |
+ |
+ The zip_file must already be open and it is not closed by this function. |
+ |
+ Args: |
+ path: Folder to add. |
+ zipfile: Already open zip file. |
+ |
+ Returns: |
+ Nothing. |
+ """ |
+ # Ensure the path ends in trailing slash. |
+ path = path.rstrip("/\\") + "\\" |
+ for dir_path, dir_names, files in os.walk(path): |
+ for file in files: |
+ read_path = os.path.join(dir_path, file) |
+ zip_based_dir = dir_path[len(path):] |
+ write_path = os.path.join(zip_based_dir, file) |
+ zip_file.write(read_path, write_path, zipfile.ZIP_DEFLATED) |
+ |
def main(): |
- # Zip the package |
+ # Zip the package. |
out_file = zipfile.ZipFile(OUTPUT_NAME, 'w') |
- for file_path in FILE_LIST: |
- out_file.write(file_path, os.path.basename(file_path), zipfile.ZIP_DEFLATED) |
+ for source_dest in FILE_LIST: |
+ file_name = os.path.basename(source_dest[0]) |
+ dest = os.path.join(source_dest[1], file_name) |
+ out_file.write(source_dest[0], dest, zipfile.ZIP_DEFLATED) |
+ AddFolderToZip(RESOURCE_DIRECTORY, out_file) |
out_file.close() |
+ |
if __name__ == '__main__': |
main() |