Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(531)

Unified Diff: visual_studio/NativeClientVSAddIn/create_package.py

Issue 10830151: VS Add-in more properties and improvements (Closed) Base URL: https://nativeclient-sdk.googlecode.com/svn/trunk/src
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « visual_studio/NativeClientVSAddIn/UnitTests/TestUtilities.cs ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: visual_studio/NativeClientVSAddIn/create_package.py
diff --git a/visual_studio/NativeClientVSAddIn/create_package.py b/visual_studio/NativeClientVSAddIn/create_package.py
index e7db686c725c9ad7f30a27a04d20a0982e055f10..b974c2edebb3a21b0a3679c5a301adfc9c1eb424 100644
--- a/visual_studio/NativeClientVSAddIn/create_package.py
+++ b/visual_studio/NativeClientVSAddIn/create_package.py
@@ -10,7 +10,12 @@ It zips up all files required for the add-in installation and places the
result in out/NativeClientVSAddin.zip
"""
+import codecs
import os
+import re
+import fileinput
+import win32api
+import shutil
import zipfile
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -18,20 +23,33 @@ SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
# Root output directory.
BUILD_OUTPUT_DIRECTORY = os.path.join(
SCRIPT_DIR,
- "../../out/NativeClientVSAddIn/")
-
-# Directory containing static installer resources.
-RESOURCE_DIRECTORY = os.path.join(SCRIPT_DIR, "InstallerResources/")
+ "../../out/NativeClientVSAddIn")
# Directory that contains the build assemblies.
ASSEMBLY_DIRECTORY = os.path.join(BUILD_OUTPUT_DIRECTORY, "Debug")
+# Directory containing static installer resources.
+RESOURCE_DIRECTORY = os.path.join(SCRIPT_DIR, "InstallerResources")
+
# Base name of the final zip file.
OUTPUT_NAME = os.path.join(BUILD_OUTPUT_DIRECTORY, "NativeClientVSAddIn.zip")
+# AddIn metadata file path. We will modify this with the version #.
+ADDIN_METADATA = os.path.join(RESOURCE_DIRECTORY, "NativeClientVSAddIn.AddIn")
+
+# AddIn dll file path. We will obtain our add-in version from this.
+ADDIN_ASSEMBLY = os.path.join(ASSEMBLY_DIRECTORY, "NativeClientVSAddIn.dll")
+
+# Regex list to exclude from the zip. If a file path matches any of the
+# expressions during a call to AddFolderToZip it is excluded from the zip file.
+EXCLUDES = [
+ '.*\.svn.*', # Exclude .svn directories.
+ # Exclude .AddIn file for now since we need to modify it with version info.
+ re.escape(ADDIN_METADATA)]
+
# List of source/destination pairs to include in zip file.
FILE_LIST = [
- (os.path.join(ASSEMBLY_DIRECTORY, "NativeClientVSAddIn.dll"), ''),
+ (ADDIN_ASSEMBLY, ''),
(os.path.join(ASSEMBLY_DIRECTORY, "NaCl.Build.CPPTasks.dll"), 'NaCl')]
@@ -52,10 +70,43 @@ def AddFolderToZip(path, zip_file):
for dir_path, dir_names, files in os.walk(path):
for file in files:
read_path = os.path.join(dir_path, file)
+
+ # If the file path matches an exclude, don't include it.
+ if any(re.search(expr, read_path) is not None for expr in EXCLUDES):
+ continue
+
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 AddVersionModifiedAddinFile(zip_file):
+ """Modifies the .AddIn file with the build version and adds to the zip.
+
+ The version number is obtained from the NativeClientAddIn.dll assembly which
+ is built during the build process.
+
+ Args:
+ zip_file: Already open zip file.
+ """
+ info = win32api.GetFileVersionInfo(ADDIN_ASSEMBLY, "\\")
+ ms = info['FileVersionMS']
+ ls = info['FileVersionLS']
+ version = "[%i.%i.%i.%i]" % (
+ win32api.HIWORD(ms), win32api.LOWORD(ms),
+ win32api.HIWORD(ls), win32api.LOWORD(ls))
+ print "\nNaCl VS Add-in Build version: %s\n" % (version)
+
+ metadata_filename = os.path.basename(ADDIN_METADATA)
+ modified_file = os.path.join(ASSEMBLY_DIRECTORY, metadata_filename)
+
+ # Copy the metadata file to new location and modify the version info.
+ with codecs.open(ADDIN_METADATA, 'r', encoding='utf-16') as source_file:
+ with codecs.open(modified_file, 'w', encoding='utf-16') as dest_file:
+ for line in source_file:
+ dest_file.write(line.replace("[REPLACE_ADDIN_VERSION]", version))
+
+ zip_file.write(modified_file, metadata_filename, zipfile.ZIP_DEFLATED)
+
def main():
# Zip the package.
@@ -65,6 +116,7 @@ def main():
dest = os.path.join(source_dest[1], file_name)
out_file.write(source_dest[0], dest, zipfile.ZIP_DEFLATED)
AddFolderToZip(RESOURCE_DIRECTORY, out_file)
+ AddVersionModifiedAddinFile(out_file)
out_file.close()
« no previous file with comments | « visual_studio/NativeClientVSAddIn/UnitTests/TestUtilities.cs ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698