wixtoolset / issues

WiX Toolset Issues Tracker
http://wixtoolset.org/
129 stars 36 forks source link

Building Wix #8173

Open jchoover opened 5 months ago

jchoover commented 5 months ago

WiX Version

Lasted Code from wixtoolset/wix:main

.NET or MSBuild or Visual Studio Version

8.0.104

HeatWave Version

none

Windows Version

Win 10 22(H2) 19045.3930

Repro Repo

https://github.com/jchoover/wix4/tree/master

Repro Steps

  1. devbuild

Actual Result

wcautil failed with errors (0.0s) C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(456,5): error MSB8020: The build tools for Visual Studio 2017 (Platform Toolset = 'v141') cannot be found. To build using the v141 build tools, please install Visual Studio 2017 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution". dutil failed with errors (0.0s)

Expected Result

Success?

image

Acknowledgements

jchoover commented 5 months ago

Note, I ended up just adding all the v141's to get the compiler happy.

robmen commented 5 months ago

It seems MSVC v141 is called out in the README.md for building the wix repo. What are you suggesting should be fixed?

barnson commented 5 months ago

Getting that error building inside VS? Probably expected -- VS doesn't know how to handle platform/toolset being set in .props/.targets files...

jchoover commented 5 months ago

It seems MSVC v141 is called out in the README.md for building the wix repo. What are you suggesting should be fixed?

The workflows outlined in the readme aren't sufficient. I ended up checking them all to get that portion to build.

Getting that error building inside VS? Probably expected -- VS doesn't know how to handle platform/toolset being set in .props/.targets files...

No Dev Tools CLI build.

chrpai commented 5 months ago

@jchoover you don't mention what version of VS you are using. I literally just tested the instruction on 17.9.6 last week copying and pasting the component names in and it built fine.

jchoover commented 5 months ago

@jchoover you don't mention what version of VS you are using. I literally just tested the instruction on 17.9.6 last week copying and pasting the component names in and it built fine.

image

jchoover commented 5 months ago

I think I see what I missed.. it's the ARM64 build tools not the ARM build tools.

modz2014 commented 4 months ago

I cant seem to get it to buil dat all even following the steps here a well

smaudet commented 3 months ago

Also does not build well for me... fresh VS 2022 install + command line tools (working off of b9b2f1b4c69a1b509d487dc950b30b4ec9b0d040 tagged as wix 4.0.5)

Currently dying in dtf build:

LINK : fatal error LNK1104: cannot open file 'legacy_stdio_wide_specifiers.lib'

After digging quite a bit:

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\link.exe /ERRORREPORT:PROMPT /OUT:"D:\dev\wix\build\dtf\Debug\x86\SfxCA.dll" /NOLOGO /LIBPATH:D:\dev\wix\build\dtf\Debug\x86\ kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib msi.lib cabinet.lib shlwapi.lib advapi32.lib comdlg32.lib user32.lib oleaut32.lib gdi32.lib shell32.lib ole32.lib version.lib /DEF:"EntryPoints.def" /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"D:\dev\wix\build\dtf\Debug\x86\SfxCA.pdb" /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:\dev\wix\build\dtf\Debug\x86\SfxCA.lib" /MACHINE:X86 /SAFESEH /guard:cf /IGNORE:4099 /sourcelink:"D:\dev\wix\build\dtf\obj\SfxCA\Debug\x86\SfxCA.sourcelink.json" /DLL D:\dev\wix\build\dtf\obj\SfxCA\Debug\x86\SfxCA.res

This command seems to be the source of (my?) issues.

Its not clear how this ends up producing the error about legacy_stdio_wide_specifiers but it appears this linker command is the culprit, so far.

EDIT:

This might be a partial fix for the dtf project, add the following (for x86):

  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Link>
      <AdditionalLibraryDirectories>C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.16.27023\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <Link>
      <AdditionalLibraryDirectories>C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.16.27023\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Link>
      <AdditionalLibraryDirectories>C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.16.27023\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <Link>
      <AdditionalLibraryDirectories>C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.16.27023\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>

I think there's (at least) a visual studio bug here - the libraries are not being linked to by Microsoft compiler, these should be automatically inserted into the linker's path but obviously are not.

Perhaps we shouldn't be using VS2022, too many bugs still.

Additional EDIT:

Got the wix sln file to resolve/wix to build....

List of things wrong:

Having debugged this build I somewhat understand the reasoning behind doing it this way (handling multiple versions of the build for multiple targets), however the build files leave unclear which "base" architecture things should be built for, and the indirection of the .proj files doesn't provide much benefit over specifying the build parameters directly in the scripts...