Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Windows] The WiX-based installer is always 32-bit, even for 64-bit builds #4795

Closed
FaultyRAM opened this issue Jul 25, 2018 · 6 comments
Closed

Comments

@FaultyRAM
Copy link

32-bit MSIs have different semantics from 64-bit ones, mainly to do with "redirection". On 64-bit Windows you have Program Files (x86) for 32-bit programs, and Program Files for 64-bit programs; if you try installing to either one, msiexec detects this and redirects to the "correct" folder. Since we have a 32-bit installer that bundles 64-bit binaries, Pandoc ends up being installed to the wrong folder. There's no way to override this behaviour short of modifying the registry, but as a workaround you can pass a shortened path to the .msi, as these aren't subject to redirection:

.\pandoc-2.2.2.1-windows-x86_64.msi /passive ALLUSERS=1 APPLICATIONFOLDER="C:\Progra~1\Pandoc"
@jgm
Copy link
Owner

jgm commented Jul 25, 2018 via email

@jgm
Copy link
Owner

jgm commented Aug 25, 2018

We need some more information here, or I'll have to close this issue.
Can anyone shed more light on this?

@K4zuki
Copy link

K4zuki commented Aug 29, 2018

I am not expert of MSI stuff but I reproduced 64-bit installer tries to install to Program Files (x86)

  • using pandoc-2.2.3.2-windows-x86_64.msi
  • Windows10 Enterprise 64bit

from here I clicked "Advanced" and:

this page may be a hint?: https://stackoverflow.com/questions/50012385/how-do-i-make-a-64-bit-msi

jgm added a commit that referenced this issue Aug 29, 2018
@jgm
Copy link
Owner

jgm commented Aug 29, 2018

Thanks: I tried a minimal change: using -arch with candle in the build process.
If this doesn't work, there are a few other tricks from that link we can try (like using $(var.Platform)$ instead of $(sys.BUILDARCH), and setting the Win64 flag for components and registry. But let's see first if this small change makes a difference.

Unfortunately I can't easily test, so I'd appreciate if someone else could.
https://ci.appveyor.com/project/jgm/pandoc
Assuming the builds complete successfully, the installers will be under 'artifacts' for each of the builds (32 and 64 bit).

@jgm
Copy link
Owner

jgm commented Sep 7, 2018

@FaultyRAM (or anyone else): I've made various changes to the way the packages are built, and it would be great if someone could test to see if this issue remains.

64-bit msi can be found here: https://ci.appveyor.com/project/jgm/pandoc/build/1.0.2784/job/cxhar61y1jf3ytkh/artifacts

@FaultyRAM
Copy link
Author

Tested it just now on my 64-bit Windows machine. It defaults to C:\Program Files\Pandoc and successfully installs Pandoc there, so I'd say this one is fixed. Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants