tags:

views:

29

answers:

0

Exact duplicate of: http://stackoverflow.com/questions/3137936/creating-msi-using-nant-and-wix

Hi, I am trying to create an installer for my project using NAnt. this is how my build script looks like

<?xml version="1.0"?>
<project name="pleats" default="build-release" xmlns="http://nant.sf.net/release/0.85/nant.xsd"&gt;

 <target name="build-release" depends="clean, make-builddir, build, release-properties, copy-to-release, build-installer" />
 <property name="tools.dir" value="${path::get-full-path('tools')}" />  
 <property name="src.dir" value="${path::get-full-path('src')}" />  
 <property name="build.dir" value="D:\Subrat\Projects\WPF\WpfApplicationNAntTest\WpfApplicationNAntTest\bin\Debug" />  
 <target name="clean" description="Delete automated build artifacts">  
  <delete dir="${build.dir}" if="${directory::exists(build.dir)}" failonerror="false"/>  
 </target> 
 <target name="make-builddir" description="Create build dir and build report dir">   
  <mkdir dir="${build.dir}" unless="${directory::exists(build.dir)}" />  
 </target> 
 <target name="release-properties">   
  <property name="release.dir" value="D:\Subrat\Projects\WPF\WpfApplicationNAntTest\WpfApplicationNAntTest\bin\Release"/>  
  <property name="wix.dir" value="D:\Subrat\Projects\WPF\WpfApplicationNAntTest\Lib\wix"/>  
 </target>  
 <target name="copy-to-release">  
  <mkdir dir="${release.dir}" failonerror="false"/>  
  <copy todir="${release.dir}">   
   <fileset basedir="${src.dir}">    
    <include name="*" />  
   </fileset>   
  </copy>  
 </target>
 <target name="build">
  <loadtasks assembly="D:\Subrat\Projects\WPF\WpfApplicationNAntTest\Lib\nantcontrib-0.85\bin\NAnt.Contrib.Tasks.dll"/>
  <msbuild project="D:\Subrat\Projects\WPF\WpfApplicationNAntTest\WpfApplicationNAntTest.sln">
   <property name="configuration" value="debug" />
   <property name="Platform" value="any cpu" /> 
  </msbuild>
 </target>
 <target name="build-installer">  
  <!-- for wix preprocessor so that the location of pleats files are propagated into the wxs -->  
  <setenv name="pleats.dir" value="${release.dir}"/> 
  <delete>   
   <fileset>    
    <include name="${wix.dir}/*.wixobj"/>
  </fileset>   
  </delete>  
  <exec program="${wix.dir}\candle.exe" workingdir=".\wix" commandline="SampleFirst.wxs " /> 
  <exec program="${wix.dir}\light.exe" workingdir=".\wix" commandline="-ext WixUIExtension -cultures:en-us SampleFirst.wixobj -out ${release.dir}\pleats.msi"/> 
 </target> 
</project>

I am using the sample wxs file i got in wix tutorial.

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'&gt;
  <Product Name='Foobar 1.0' Id='C2B662FC-82AA-11DF-93D4-6B70DFD72085' UpgradeCode='CE3E5F1C-82AA-11DF-A42F-7170DFD72085'
    Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='Acme Ltd.'>

    <Package Id='*' Keywords='Installer' Description="Acme's Foobar 1.0 Installer"
      Comments='Foobar is a registered trademark of Acme Ltd.' Manufacturer='Acme Ltd.'
      InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />

    <Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" />
    <Property Id='DiskPrompt' Value="Acme's Foobar 1.0 Installation [1]" />

    <Directory Id='TARGETDIR' Name='SourceDir'>
      <Directory Id='ProgramFilesFolder' Name='PFiles'>
        <Directory Id='Acme' Name='Acme'>
          <Directory Id='INSTALLDIR' Name='Foobar 1.0'>

            <Component Id='MainExecutable' Guid='DD4C895C-82AA-11DF-941D-8370DFD72085'>
              <File Id='FoobarEXE' Name='WpfApplicationNAntTest.exe' DiskId='1' Source='D:\Subrat\Projects\WPF\WpfApplicationNAntTest\WpfApplicationNAntTest\bin\Debug\WpfApplicationNAntTest.exe' KeyPath='yes'>
                <Shortcut Id="startmenuFoobar10" Directory="ProgramMenuDir" Name="Foobar 1.0" WorkingDirectory='INSTALLDIR' Icon="WpfApplicationNAntTest.exe" IconIndex="0" Advertise="yes" />
                <Shortcut Id="desktopFoobar10" Directory="DesktopFolder" Name="Foobar 1.0" WorkingDirectory='INSTALLDIR' Icon="WpfApplicationNAntTest.exe" IconIndex="0" Advertise="yes" />
              </File>
            </Component>

            <!--<Component Id='HelperLibrary' Guid='YOURGUID-6BE3-460D-A14F-75658D16550B'>
              <File Id='HelperDLL' Name='Helper.dll' DiskId='1' Source='Helper.dll' KeyPath='yes' />
            </Component>

            <Component Id='Manual' Guid='YOURGUID-574D-4A9A-A266-5B5EC2C022A4'>
              <File Id='Manual' Name='Manual.pdf' DiskId='1' Source='Manual.pdf' KeyPath='yes'>
                <Shortcut Id="startmenuManual" Directory="ProgramMenuDir" Name="Instruction Manual" Advertise="yes" />
              </File>
            </Component>-->

          </Directory>
        </Directory>
      </Directory>

      <Directory Id="ProgramMenuFolder" Name="Programs">
        <Directory Id="ProgramMenuDir" Name="Foobar 1.0">
          <Component Id="ProgramMenuDir" Guid="E510F3DA-82AA-11DF-8814-8970DFD72085">
            <RemoveFolder Id='ProgramMenuDir' On='uninstall' />
            <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes' />
          </Component>
        </Directory>
      </Directory>

      <Directory Id="DesktopFolder" Name="Desktop" />
    </Directory>

    <Feature Id='Complete' Level='1'>
      <ComponentRef Id='MainExecutable' />
      <!--<ComponentRef Id='HelperLibrary' />
      <ComponentRef Id='Manual' />-->
      <ComponentRef Id='ProgramMenuDir' />
    </Feature>

    <Icon Id="WpfApplicationNAntTest.exe" SourceFile="WpfApplicationNAntTest.exe" />
    <UIRef Id="WixUI_Minimal" />
  </Product>
</Wix>

when i am trying to make an installer i am geting this error -

the system cannot find the file WpfApplicationNAntTest.exe

i dont have much idea about Nant or wix as i am new to this. Please help.