E�ޭ��z�w�~D�nE�M4�/8��A�;�_<ӝ5�к�,��{)����yhq�A���]��4Ӏ�㾵���|�Nt�_B��3����*�r���ƥ�5�P��@@�v��...@�
 
��Ja��7�Mv�^�N����:Ӿ���9�]}�5�*'�����'���_6�QA�0t델�A�N��0���^�מz�>HX�
 �\��\��$~��r�����]��4Ӏ�㾵���|�Nt�_B�s����*�r���ƥ�ͻP}:�n9�uӽ�
��~4ׯ5�]B<�/W(��!y��眢`w�~D�nE�M4�/8��A�;�_<ӝ5�н�|��{)����yhq�u�n�CN�ێA�t�n�1xߍ5��y]����0��+��^rG�y�(�_6�QA�0t델�A�N��0���^�בuߞHX�
 �\��\��$~��r�����]��4Ӏ�㾵���|�Nt�_B�>�����*�r���ƥ�ͻP}:�n9�uӽ�
��~4ׯ5�]x2<�/W(��!y��眢`w�~D�nE�M4�/8��A�;�_<ӝ5�Ѐ���{)����yhq�A���]��4Ӏ�㾵���|�nt�...@�����*�r���ƥ�ͻp}
:�n9�uӽ���~4ׯ5�μ��<�/W(��!y��眢`w�~D�nE�M4�/8��A�;�_<ӝ5�Ё
��{)����yhq�u�n�CN�ێA�t�n�1xߍ5��z����0��+��^rG�y�(�Z蘫������ʺ�Iz{��a��)����w(�:zw�jWb�ˬ�*'~�֊wh��'�֥���0�h�[���ǫ�X���(��~��zw�grin
 :) I was having the same problem with density.  Glad we can find understanding.

I had to reverse the order of the DefineConstants with Condition otherwise, 
when DefineConstants is empty, we end up with duplicates of 
DefineDefaultConstants. Here is my new set of properties

<PropertyGroup>
    <!-- other properties -->    
    <BGBuildVersion Condition=" '$(BGBuildVersion)' == '' 
">5.3.3333</BGBuildVersion>
    
<DefaultDefineConstants>BGProductVersion=$(BGBuildVersion)</DefaultDefineConstants>
    <DefineConstants Condition=" '$(DefineConstants)' != '' 
">$(DefineConstants);$(DefaultDefineConstants)</DefineConstants>
    <DefineConstants Condition=" '$(DefineConstants)' == '' 
">$(DefaultDefineConstants)</DefineConstants>
</PropertyGroup>

This works fine in the IDE.

It still does not work for me via tfsbuild.proj.  All I see on the command line 
to candle is "-dBG_STANDARD".  If I remove DefineConstants from tfsbuild.proj 
then I see "-dDebug -dBGProductVersion=5.3.3333".

Also we have gotten a bit sidetracked here.  I have already figured out how to 
pass BGProductName by using local wxi files.  I kept on with the BGProductName 
because it appears that I have two problems, 1) combining command line 
parameters from tfsbuild.proj and wixproj, 2) passing a version number 
generated in tfsbuild.proj into a wixproj.

The real problem is how to pass the build version into the wixproj.  I want to 
use a Version generated in tfsbuild.proj as the ProductVersion for my 
installation.  But, I am at a loss how to do this if tfsbuild will not let me 
pass "name=value".  Should we work on one problem then the other or go at them 
both at one time?



Kurt Jensen
Senior Software Engineer
Ophir-Spiricon

The True Measure of Laser Performance™

-----Original Message-----
From: Castro, Edwin G. (Hillsboro) [mailto:edwin.cas...@fiserv.com] 
Sent: Thursday, May 20, 2010 11:48 AM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] msbuild command line parameters

Sweet! That write-up was extremely useful! Steps 1-3 gave me the context I 
needed. Thank you so very much! I was probably being dense.

The value passed in from tfsbuild.proj was getting overridden by the definition 
in the *.wixproj which is why you got the results you got in 3). In MSBuild the 
last definition of a property always wins. What you want to do is concatenate 
the current value of DefineConstants (as specified in tfsbuild.proj) with the 
default values you specify in *.wixproj.

Ok, here's what you want to do:

In tfsbuild.proj specify your DefineConstants like you were already doing:

<SolutionToBuild 
Include="$(BuildProjectFolderPath)/../../LBA/Source/AllProject/AllProject.sln">
    <Targets></Targets>
    <Properties>
        DefineConstants=BG_STANDARD;
        OutDir=$(TeamBuildOutDir)BG_STANDARD\
    </Properties>
</SolutionToBuild>
<SolutionToBuild 
Include="$(BuildProjectFolderPath)/../../LBA/Source/AllProject/AllProject.sln">
    <Targets></Targets>
    <Properties>
        DefineConstants=BG_PROFESSIONAL;
        OutDir=$(TeamBuildOutDir)BG_PROFESSIONAL\
    </Properties>
</SolutionToBuild>

In your *.wixproj define DefaultDefineConstants (in the first PropertyGroup). 
It should include your values for WiXProductName and WiXProductVersion. Also 
define DefineConstants (in the first PropertyGroup) twice using a Condition 
attribute to check whether DefineConstants already had a value.

<PropertyGroup>
    <!-- other properties -->
    <DefaultDefineConstants>WiXProductName=BeamGage 
Standard;WiXProductVersion=$(WiXVersion)</DefaultDefineConstants>
    <DefineConstants Condition=" '$(DefineConstants)' == '' 
">$(DefaultDefineConstants)</DefineConstants>
    <DefineConstants Condition=" '$(DefineConstants)' != '' 
">$(DefineConstants);$(DefaultDefineConstants)</DefineConstants>
</PropertyGroup>

When $(DefineConstants) is not set then we set the new value of DefineConstants 
to the value of DefaultDefineConstants.
When $(DefineConstants) is set (value provided by tfsbuild.proj) then we set 
the new value of DefineConstants to include both the old value of 
DefineConstants and the value of DefaultDefineConstants.

At this point we have the correct value of DefineConstants defined for 
Release|x86 so we don't need to define it in the PropertyGroup for Release|x86.
We still need to add Debug for Debug|x86 so we'll define DefineConstants in the 
PropertyGroup for Debug|x86 to include Debug and the current value of 
DefineConstants.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <OutputPath>bin\$(Configuration)\</OutputPath>
    <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
    <DefineConstants>Debug;$(DefineConstants)</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <OutputPath>bin\$(Configuration)\</OutputPath>
    <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>

This all happens statically when the project files are loaded into memory.

The syntax that uses <CreateProperty/> is a task that creates properties 
dynamically at runtime and must be specified inside the body of a Target. In 
this case, we have all the information we need to create the correct values at 
load time so we don't need to wait until runtime to define DefineConstants.

Hopefully that now explains what was going on. Or at least, get you unblocked 
so that you can build again. :)

Edwin G. Castro
Software Developer - Staff
Electronic Banking Services
Fiserv
Office: 503-746-0643
Fax: 503-617-0291
Please consider the environment before printing this e-mail

> -----Original Message-----
> From: Kurt Jensen [mailto:kurt.jen...@ophir-spiricon.com]
> Sent: Thursday, May 20, 2010 10:06 AM
> To: General discussion for Windows Installer XML toolset.
> Subject: Re: [WiX-users] msbuild command line parameters
> 
> Not odd.  Well, maybe I don't understand the oddness.
> 
> 1)
> - I created a new WindowsFormsApplication1.
> - I added a new WixProject1.
> - On the WixProject1, right-click Properties.  On the Build tab, entered
> "Name1=Value1;Name2;Name3=Name3"
> - From the command line, "msbuild /fl WindowsFormsApplication1.sln"
> - msbuild.log correctly shows "-dName1=Value" "-dName2" "-dName3=Value3" on
> the command line to candle
> 
> 2)
> - Copied a default TFSBuild.proj.  Changed the SolutionToBuild to
> WindowsFormsApplication1.sln
> - From the command line, "msbuild /fl TFSBuild.proj"
> - msbuild.log correctly shows "-dName1=Value" "-dName2" "-dName3=Value3" on
> the command line to candle
> 
> 3)
> - Under SolutionToBuild, Properties, added "DefineConstants=BG_STANDARD"
> - From the command line, "msbuild /fl TFSBuild.proj"
> - msbuild.log shows "-dBG_STANDARD" but does NOT include "-dName1=Value1", etc
> - AH HA!!!
> 
> 4)
> - Removed "DefineConstants=BG_STANDARD"
> - Added
>   <Target Name="BeforeBuild">
>     <CreateProperty Value="BGProductName=BeamGage
> Professional;$(DefineConstants)">
>       <Output TaskParameter="Value" PropertyName="DefineConstants" />
>     </CreateProperty>
>   </Target>
> - From the command line, "msbuild /fl TFSBuild.proj"
> - msbuild.log shows "-dName1=Value", etc but does not show "-
> dBGProductName=BeamGage Professional"
> 
> 5)
> - Changed CreateProperty line to <CreateProperty
> Value="BGProductName;$(DefineConstants)">
> - From the command line, "msbuild /fl TFSBuild.proj"
> - msbuild.log shows "-dName1=Value", etc but does not show "-dBGProductName"
> 
> 
> And so, the question returns...  Any idea how to get parameters passed to
> candle when building under TFSBuild.proj?

------------------------------------------------------------------------------

_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.clearswift.com
**********************************************************************


------------------------------------------------------------------------------

_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to