Menu

#1344 Candle fails in MSBuild if WiX not installed

v3.0
closed
msbuild (104)
2012-09-15
2008-09-23
No

The candle task fails with the following error:

C:\Ifx_2.0\ExTools\WiX_v3\v3.0.4513.0\Wix.targets(1188,5): error MSB6001: Invalid command line switch for "candle.exe". Value cannot be null.
C:\Ifx_2.0\ExTools\WiX_v3\v3.0.4513.0\Wix.targets(1188,5): error MSB6001: Parameter name: path1

How to repeat error:
1) Install a Windows OS; XP, Vista and Win2008 tried so far; install Visual Studio.

Important: Do not install WiX

2) From source control build a Wix project's pre-cursor components (from MSBuild or VStudio)

3) From source control copy the Wix binaries, as per the instructions in the Wix help manual "Integrating WiX Projects Into Daily Builds"

4) Run MSBuild project which includes the Wix project.
It will fail with the above error.

5) Now install Wix from its MSI file.

6) Run the same MSBuild project which includes the Wix project. This time it will succeed.

7) Uninstall Wix from OS

8) Run MSBuild Wix project.
It will fail with the above error.

Preliminary investigations suggest it may be the Path.Combine statement in the Candle task inside the WixTasks dll. I cannot see where else the name "path1" could come from.

I have include the log files from a) pre-wix-install MSBuild run and b) the post-wix-install MSBuild run, merged into one file

Rod Paterson

Discussion

  • Rod Paterson

    Rod Paterson - 2008-09-23

    Pre and Post Wix Install MSBuild run logs

     
  • Bob Arnson

    Bob Arnson - 2008-09-23

    As the WiX.chm topic says, if you don't install WiX, you need to modify your .wixproj (or use command-line switches) to point the properties to where you've copied the WiX tools, tasks, and targets.

     
  • Rod Paterson

    Rod Paterson - 2008-09-24

    Hi Bob, here is the MSBuild code for the logged samples. I'm not sure what other properties to point. I've specified the WixToolPath, WixTargetsPath and WixTasksPath properties. Is there something else?

    <project defaulttargets="BuildIfxInstallPackets" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" toolsversion="3.5"></project>

    <!-- WiX related properties-->
    <PropertyGroup>
        <SolutionRoot>C:\Ifx_2.0</SolutionRoot>
        <Ifx_WiX_Root_Dir>$(SolutionRoot)\source\Installation Projects\WiX</Ifx_WiX_Root_Dir>
        <WixToolPath>$(SolutionRoot)\ExTools\WiX_v3\v3.0.4513.0\</WixToolPath>
        <WixTargetsPath>$(WixToolPath)Wix.targets</WixTargetsPath>
        <WixTasksPath>$(WixToolPath)wixtasks.dll</WixTasksPath>
    </PropertyGroup>
    
    <Target Name="BuildIfxInstallPackets">
        <MSBuild Projects="$(Ifx_WiX_Root_Dir)\Ifx Prerequisite v2.0\Ifx Prerequisite v2.0.wixproj"
                 Properties="DefineSolutionProperties=true;PreprocessToStdOut=true;ShowSourceTrace=true;Configuration=Release;Targets=Rebuild;WixToolPath=$(WixToolPath);WixTargetsPath=$(WixTargetsPath);WixTasksPath=$(WixTasksPath)" />
    
    </Target>
    

     
  • Bob Arnson

    Bob Arnson - 2008-09-25

    Try setting WixExtDir to WixToolPath. If that works, let me know and I'll see about setting that default in wix.targets.

     
  • Jason Ginchereau

    WixExtDir was supposed to be optional. I checked in a fix to wix.targets to default WixExtDir to WixToolPath if it's not otherwise defined. And I made the candle task more robust in the absence of this property anyway.

     
  • Rod Paterson

    Rod Paterson - 2008-09-29

    I added the WixExtDir property (see fragment below) and the build process did get through the candle task however it then balked at the "Light" task.
    Something is missing because the task displays the command syntax help screen. See appended log file

    <project defaulttargets="BuildIfxInstallPackets" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" toolsversion="3.5"></project>

    <!-- NAnt and WiX related properties-->
    <PropertyGroup>
        <SolutionRoot>C:\Ifx_2.0</SolutionRoot>
        <Ifx_WiX_Root_Dir>$(SolutionRoot)\source\Installation Projects\WiX</Ifx_WiX_Root_Dir>
        <WixToolPath>$(SolutionRoot)\ExTools\WiX_v3\v3.0.4513.0\</WixToolPath>
        <WixExtDir>$(WixToolPath)</WixExtDir>
        <WixTargetsPath>$(WixToolPath)Wix.targets</WixTargetsPath>
        <WixTasksPath>$(WixToolPath)wixtasks.dll</WixTasksPath>
    </PropertyGroup>
    
    <Target Name="BuildIfxInstallPackets">
        <MSBuild Projects="$(Ifx_WiX_Root_Dir)\Ifx Prerequisite v2.0\Ifx Prerequisite v2.0.wixproj"
    

    Properties="DefineSolutionProperties=true;PreprocessToStdOut=true;ShowSourceTrace=true;Configuration=Release;Targets=Rebui
    ld;WixToolPath=$(WixToolPath);WixTargetsPath=$(WixTargetsPath);WixTasksPath=$(WixTasksPath);WixExtDir=$(WixExtDir)" />


    File Added: wixext_1.log

     
  • Rod Paterson

    Rod Paterson - 2008-09-29

    build log with WixExtDir populated

     
  • Bob Arnson

    Bob Arnson - 2008-10-02

    Can you attach your .wixproj? For some reason, some of the input files aren't being passed to LIt and Light.

     
  • Rod Paterson

    Rod Paterson - 2008-10-03

    Here is the project directory structure. It has been designed to be machine/drive portable. Exectables are published to the top-level "Build" directory, where they are accessed via relative paths from the wix project.

    To keep the zip file size down, you will need to add the Wix binaries to the v3.0.4513.0 directory.

    E:\WIXSAMPLE
    ---Ifx
    +---Build
    | +---Icons
    | ---Release
    +---ExTools
    | ---WiX_v3
    | ---v3.0.4513.0
    +---Setup
    | ---Ifx Prerequisite v2.0
    ---Source
    ---Installation Projects
    ---WiX
    +---Ifx Prerequisite v2.0
    +---Include
    ---Libraries
    ---Ifx UI Core

    1) The build project is \WixSample\Source\Installation Projects\WiX\Test.proj (you will need to edit the <solutionroot></solutionroot> node accordingly).

    2) The file \WixSample\Source\Installation Projects\WiX\ZapObjDir.bat is a nant script to remove any existing object & bin directories before a build run.

    3) The wix project "Ifx Prerequisite v2.0" is held in the \WixSample\Source\Installation Projects\WiX\Ifx Prerequisite v2.0 directory. It includes a single library project "Ifx UI Core" under the Libaries sub-directory.

    4) Preprocessor variables are held in files in the \WixSample\Source\Installation Projects\WiX\Include directory

    5) The msi output file goes to \WixSample\Setup\Ifx Prerequisite v2.0\IRIS Framework Prerequisite v2.0.msi

    6) I have simplified the project but it still give the same effect (i.e. Lit not working and displaying the syntax screen).

    7) The original project is actually 3 separate installation packages being built by a solution file, but again this gives the same effect as before.

    8) If you put the "Ifx UI Core" & "Ifx Prerequisite v2.0" wix projects into a blank VS solution it build correctly.

    Rod Paterson
    File Added: WixSample.zip

     
  • Rod Paterson

    Rod Paterson - 2008-10-03

    Ifx Sample project in situ

     
  • SourceForge Robot

    This Tracker item was closed automatically by the system. It was
    previously set to a Pending status, and the original submitter
    did not respond within 15 days (the time period specified by
    the administrator of this Tracker).

     
  • Rod Paterson

    Rod Paterson - 2008-10-28

    Still not quite there.

    The MSBuild task is not finding the wix.targets file, despite it been passed in the standard "WixTargetsPath" parameter.

    Here is a small snippet of the build log file:

    Task "MSBuild"
    Global Properties:
    Configuration=Release
    WixToolPath=C:\Temp\Beta2_Ifx_2.0\Build_Ifx\BuildType..\Sources\ExTools\WiX_v3\v3.0.4624.0\bin\
    WixTargetsPath=C:\Temp\Beta2_Ifx_2.0\Build_Ifx\BuildType..\Sources\ExTools\WiX_v3\v3.0.4624.0\bin\Wix.targets
    WixTasksPath=C:\Temp\Beta2_Ifx_2.0\Build_Ifx\BuildType..\Sources\ExTools\WiX_v3\v3.0.4624.0\bin\wixtasks.dll
    C:\Temp\Beta2_Ifx_2.0\Build_Ifx\Sources\Source\Installation Projects\WiX\Libraries\Ifx Core\Ifx Core.wixproj(85,11): error MSB4019: The imported project "C:\Program Files\MSBuild\Microsoft\WiX\v3.0\Wix.targets" was not found. Confirm that the path in the <import> declaration is correct, and that the file exists on disk.
    Libraries\Ifx Core\Ifx Core.wixproj : Solution file warning MSB4122: Scanning project dependencies for project "Libraries\Ifx Core\Ifx Core.wixproj" failed. The imported project "C:\Program Files\MSBuild\Microsoft\WiX\v3.0\Wix.targets" was not found. Confirm that the path in the <import> declaration is correct, and that the file exists on disk. C:\Temp\Beta2_Ifx_2.0\Build_Ifx\Sources\Source\Installation Projects\WiX\Libraries\Ifx Core\Ifx Core.wixproj
    C:\Temp\Beta2_Ifx_2.0\Build_Ifx\Sources\Source\Installation Projects\WiX\Ifx Prerequisite v2.0\Ifx Prerequisite v2.0.wixproj(106,11): error MSB4019: The imported project "C:\Program Files\MSBuild\Microsoft\WiX\v3.0\Wix.targets" was not found. Confirm that the path in the <import> declaration is correct, and that the file exists on disk.
    ....
    ==============================================================</import></import></import>

     
  • Bob Arnson

    Bob Arnson - 2008-11-23

    Wix.targets isn't involved at that point (since it's not getting imported). The template .wixproj sets it to the default installation path if there's no value given. The test.proj you uploaded before has a problem with the Properties property:

    ...Targets=Clean;Rebuild;...

    You need to escape the semicolon, I think.

     
  • SourceForge Robot

    This Tracker item was closed automatically by the system. It was
    previously set to a Pending status, and the original submitter
    did not respond within 21 days (the time period specified by
    the administrator of this Tracker).

     
MongoDB Logo MongoDB