D7160: packaging: create empty hg.exe.local file

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Thu Oct 24 01:56:16 UTC 2019


indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  Now that we stage all files before packaging, we can simply
  touch an empty file instead of using Inno magic to create it.
  This makes things more consistent.
  
  While we're here, we also document why we do this because
  it is important.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D7160

AFFECTED FILES
  contrib/packaging/hgpackaging/inno.py
  contrib/packaging/hgpackaging/py2exe.py
  contrib/packaging/inno/mercurial.iss

CHANGE DETAILS

diff --git a/contrib/packaging/inno/mercurial.iss b/contrib/packaging/inno/mercurial.iss
--- a/contrib/packaging/inno/mercurial.iss
+++ b/contrib/packaging/inno/mercurial.iss
@@ -68,7 +68,6 @@
 [UninstallDelete]
 Type: files; Name: {app}\Mercurial.url
 Type: filesandordirs; Name: {app}\default.d
-Type: files; Name: "{app}\hg.exe.local"
 
 [Icons]
 Name: {group}\Uninstall Mercurial; Filename: {uninstallexe}
diff --git a/contrib/packaging/hgpackaging/py2exe.py b/contrib/packaging/hgpackaging/py2exe.py
--- a/contrib/packaging/hgpackaging/py2exe.py
+++ b/contrib/packaging/hgpackaging/py2exe.py
@@ -211,3 +211,9 @@
     files.
     """
     process_install_rules(STAGING_RULES, source_dir, staging_dir)
+
+    # An empty .exe.local file enables DLL Redirection and forces
+    # Windows to look for DLLs relative to the .exe.
+    # See https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-redirection.
+    with (staging_dir / 'hg.exe.local').open('ab'):
+        pass
diff --git a/contrib/packaging/hgpackaging/inno.py b/contrib/packaging/hgpackaging/inno.py
--- a/contrib/packaging/hgpackaging/inno.py
+++ b/contrib/packaging/hgpackaging/inno.py
@@ -29,7 +29,6 @@
 
 PACKAGE_FILES_METADATA = {
     'ReadMe.html': 'Flags: isreadme',
-    'hg.exe': "AfterInstall: Touch('{app}\\hg.exe.local')",
 }
 
 



To: indygreg, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list