浏览代码

Fix files installation section in the template

Also adjust some template formatting
Thomas Kluyver 10 年之前
父节点
当前提交
0584615ccb
共有 2 个文件被更改,包括 18 次插入9 次删除
  1. 12 3
      nsist/nsiswriter.py
  2. 6 6
      nsist/pyapp.nsi

+ 12 - 3
nsist/nsiswriter.py

@@ -1,5 +1,5 @@
 import itertools
-import operator
+from operator import itemgetter
 import os
 import ntpath
 import re
@@ -34,13 +34,22 @@ class NSISFileWriter(object):
         variable_end_string="]]",
         comment_start_string="[#",
         comment_end_string="#]",
+
+        # Trim whitespace around block tags, so formatting works as I expect
+        trim_blocks=True,
+        lstrip_blocks=True,
         )
         self.template = env.get_template(template_file)
         self.installerbuilder = installerbuilder
+
+        # Group files by their destination directory
+        grouped_files = [(dest, [x[0] for x in group]) for (dest, group) in
+            itertools.groupby(self.installerbuilder.install_files, itemgetter(1))
+                ]
+
         self.namespace = {
             'ib': installerbuilder,
-            'grouped_files': list(itertools.groupby(self.installerbuilder.install_files,
-                    operator.itemgetter(1))),
+            'grouped_files': grouped_files,
             'icon': os.path.basename(installerbuilder.icon),
             'arch_tag': '.amd64' if (installerbuilder.py_bitness==64) else '',
             'pjoin': ntpath.join,

+ 6 - 6
nsist/pyapp.nsi

@@ -57,8 +57,8 @@ Section "!${PRODUCT_NAME}" sec_app
   ; Install files
   [% for destination, group in grouped_files %]
     SetOutPath "[[destination]]"
-    [% for file, _ in group %]
-      File "[[file]]"
+    [% for file in group %]
+      File "[[ file ]]"
     [% endfor %]
   [% endfor %]
   
@@ -74,15 +74,15 @@ Section "!${PRODUCT_NAME}" sec_app
   SetOutPath "%HOMEDRIVE%\%HOMEPATH%"
   [% if single_shortcut %]
     [% for scname, sc in ib.shortcuts.items() %]
-      CreateShortCut "$SMPROGRAMS\[[scname]].lnk" "[[sc['target'] ]]" \
-        '"$INSTDIR\[[ sc['parameters'] ]]"' "$INSTDIR\[[ sc['icon'] ]]"
+    CreateShortCut "$SMPROGRAMS\[[scname]].lnk" "[[sc['target'] ]]" \
+      '[[ sc['parameters'] ]]' "$INSTDIR\[[ sc['icon'] ]]"
     [% endfor %]
   [% else %]
     [# Multiple shortcuts: create a directory for them #]
     CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
     [% for scname, sc in ib.shortcuts.items() %]
-      CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\[[scname]].lnk" "[[sc['target'] ]]" \
-        '"$INSTDIR\[[ sc['parameters'] ]]"' "$INSTDIR\[[ sc['icon'] ]]"
+    CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\[[scname]].lnk" "[[sc['target'] ]]" \
+      '[[ sc['parameters'] ]]' "$INSTDIR\[[ sc['icon'] ]]"
     [% endfor %]
   [% endif %]
   SetOutPath "$INSTDIR"