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

Build incorrectly uses intermediates from last known good build when .wxs is unchanged #4661

Closed
wixbot opened this issue Jan 26, 2015 · 17 comments
Assignees
Milestone

Comments

@wixbot
Copy link

wixbot commented Jan 26, 2015

Repro prerequisites:

Repro steps:

  1. git clone https://github.com/riverar/uxstyle.git
  2. Open UxStyle.sln in Visual Studio
  3. Change target platform to Release/x86 if needed.
  4. Batch Build the following deps (via Build -> Batch Build): UnsignedThemes (Release/Win32, Release/x64) and uxpatch (Win8 Release/Win32, Win8 Release/x64)
  5. Using the project navigation pane on the right, single click the Installer project.
  6. Click Build -> Build Installer.
  7. Verify artifact created [root]\bin\x86\Release\Installer.msi on disk
  8. Change target platform to Release/x64.
  9. Click Build -> Build Installer.
  10. Note "Skipping target "Compile" because all output files are up-to-date with respect to the input files." in output window.
  11. Note x64 artifact ([root]\bin\x64\Release\Installer.msi) is actually x86 artifact from earlier.

This breaks the ability to batch build for multiple platforms and results in build artifacts that have incorrect bitness.

Originally opened by withinrafael

@wixbot
Copy link
Author

wixbot commented Jan 26, 2015

It appears somewhere along the line, a build state check isn't taking the platform target change into account therefore skipping candle.exe (which means no new -dplatform= flag is passed in).

Originally posted by withinrafael

@wixbot
Copy link
Author

wixbot commented Jan 26, 2015

Please share a .wixproj that shows the problem.

1 similar comment
@wixbot
Copy link
Author

wixbot commented Feb 3, 2015

Please share a .wixproj that shows the problem.

@wixbot
Copy link
Author

wixbot commented Feb 17, 2015

AssignedTo set to jchoover
Release changed from v3.x to v3.10

@wixbot
Copy link
Author

wixbot commented Feb 17, 2015

Just saw the updates here. I have production OSS out there that is currently exhibiting this behavior but may be too unwieldy for triage. I will work on a repro case tonight -- seems to only occur when building as part of a multi-project solution.

Originally posted by withinrafael

@wixbot
Copy link
Author

wixbot commented Feb 17, 2015

Will wait on further digging for the test case. Simple tests are unable to repro as long as the OutputPath is unique per build configuration.

Originally posted by jchoover

@wixbot
Copy link
Author

wixbot commented Feb 20, 2015

If the OSS is publicly available, I may be able to take a peek at it this weekend. Otherwise a small demo that can reproduce it would be much easier to diagnose.

Originally posted by jchoover

@wixbot
Copy link
Author

wixbot commented Feb 28, 2015

Updated steps w/ OSS project.

Originally posted by withinrafael

@wixbot
Copy link
Author

wixbot commented Feb 28, 2015

IntermediateOutputPath needs to differentiate based on platform. Currently it only differentiates based on configuration.

Originally posted by barnson

@wixbot
Copy link
Author

wixbot commented Mar 1, 2015

Can confirm changing the IntermediateOutputPath in the .wixproj resolved the issue. Suggest changing default in .wixproj to below:

obj$(Platform)$(Configuration)

Originally posted by withinrafael

@wixbot
Copy link
Author

wixbot commented Mar 3, 2015

AssignedTo changed from jchoover to bobarnson

@wixbot
Copy link
Author

wixbot commented Mar 4, 2015

wixtoolset/wix3#217

Originally posted by barnson

@wixbot
Copy link
Author

wixbot commented Mar 4, 2015

Doesn't resolve the bug in my project. Omitting the IntermediateOutputPath results in a default that is still void of platform. Which sounds like another bug.

Originally posted by withinrafael

@wixbot
Copy link
Author

wixbot commented Mar 4, 2015

Yes there's a bug in wix.targets. This might not be something we can fix in v3.x. Sending back to triage.

Originally posted by barnson
Status changed from Open to Untriaged

@wixbot
Copy link
Author

wixbot commented Mar 4, 2015

The template sets

bin$(Configuration)$(Platform)

which is the opposite of C# (reverses Configuration and Platform).

Wix.targets sets

$(BaseIntermediateOutputPath)$(PlatformName)$(Configuration)

which is the opposite of OutputPath order. (wtf?)

However, PlatformName isn't set until later in wix.targets so when creating IntermediateOutputPath, it's always empty, resulting in in the double-backslash path that never includes a platform.

Originally posted by barnson

@wixbot
Copy link
Author

wixbot commented Mar 10, 2015

Release changed from v3.10 to v4.0

@wixbot wixbot added this to the v4.0 milestone Dec 20, 2015
@barnson
Copy link
Member

barnson commented Jul 20, 2020

Fixed in v4 wix.targets.

@barnson barnson closed this as completed Jul 20, 2020
@rseanhall rseanhall added this to Done in wix.4.0-preview.0 Nov 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Development

No branches or pull requests

2 participants