contrib/wix/locale.wxs
author Matt Harbison <matt_harbison@yahoo.com>
Sun, 11 Feb 2018 20:59:35 -0500
changeset 36092 fe5c4b795999
parent 32129 14e8fef9158d
permissions -rw-r--r--
test-merge-tools: stabilize for Windows This masks the Windows argument parsing insanity[1], so it needs a bit of explanation. (The security reference in the footnote is probably useful to keep in mind if we ever whitelist certain in-repo config settings.) 9037c29e9f53 introduced tests that were failing on Windows with an unbalanced double quote[2]. What ends up happening here is util.shellquote() is double quoting the file path, but the shell script is placing this ->": "<- right next to it. So cmd.exe gets launched with 'lb:base": ""c:\...\f~base.xyz"', which got interpreted as 'lb:base: "c:\...\f~base.xyz'. If the test is adjusted to quote like "lb:$labelbase: $base", then MSYS runs interference and strips the '\' characters. I was able to get the expected result by dropping the quotes from '": "', and changing the space to underscore. But since we need to glob away the C: part anyway, just glob away the quote and leave the test unchanged. [1] https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-line-arguments-the-wrong-way/ [2] https://buildbot.mercurial-scm.org/builders/Win7%20x86_64%20hg%20tests/builds/441/steps/run-tests.py%20%28python%202.7.13%29/logs/stdio

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

  <?include defines.wxi ?>

  <?define hglocales =
    da;de;el;fr;it;ja;pt_BR;ro;ru;sv;zh_CN;zh_TW
  ?>

  <Fragment>
    <ComponentGroup Id="localeFolder">
      <?foreach LOC in $(var.hglocales) ?>
        <ComponentRef Id="hg.locale.$(var.LOC)"/>
      <?endforeach?>
    </ComponentGroup>
  </Fragment>

  <Fragment>
    <DirectoryRef Id="INSTALLDIR">
      <Directory Id="localedir" Name="locale" FileSource="$(var.SourceDir)">
        <?foreach LOC in $(var.hglocales) ?>
          <Directory Id="hg.locale.$(var.LOC)" Name="$(var.LOC)">
            <Directory Id="hg.locale.$(var.LOC).LC_MESSAGES" Name="LC_MESSAGES">
              <Component Id="hg.locale.$(var.LOC)" Guid="*" Win64='$(var.IsX64)'>
                <File Id="hg.mo.$(var.LOC)" Name="hg.mo" KeyPath="yes" />
              </Component>
            </Directory>
          </Directory>
        <?endforeach?>
      </Directory>
    </DirectoryRef>
  </Fragment>

</Wix>