Does anyone else have any ideas?
I've got verbose=true switched on and I've tried setting the path to cabarc and
mergemod in the Path system variable on my machine (as opposed to setting it in
NAnt) but I'm still getting the same error.
My NAnt script resides in C:/code/Project/trunk, which is where I'm running it
from (ie I open a command prompt and then navigate to that folder and run
NAnt). I would assume my working directory is the directory I run NAnt from.
Does anyone have any ideas as to why cabarc is trying to find this file ->
'C:\Documents and Settings\user\Local Settings\Temp\tm
p177B.tmp'?
In case it's of any use, here's a copy of my msi task:
<msi sourcedir="${build.current.dir}" output="${msi.file}" verbose="true">
<properties>
<property name="ProductName" value="${project::get-name()}" />
<property name="ProductVersion" value="${product.version}" />
<property name="Manufacturer" value="${manufacturer}" />
<property name="ProductCode" value="{}" />
<property name="UpgradeCode" value="{}" />
</properties>
<directories>
<directory name="D__Company" foldername="Company"
root="ProgramFilesFolder">
<directory name="D__Product" foldername="Product">
<directory name="D__Resources" foldername="Resources">
<directory name="D__Icons" foldername="Icons"/>
<directory name="D__Xml" foldername="Xml"/>
</directory>
</directory>
</directory>
</directories>
<components>
<!-- TODO: Create components for all files to be included in Product
release -->
<component name="C__Main" directory="D__Product" feature="F__Product"
id="{}" attr="2" >
<key file="Product.exe" />
<fileset basedir="${build.current.dir}">
<include name="Product.exe" />
</fileset>
</component>
<component name="C__DAL" directory="D__Product" feature="F__Product"
id="{}" attr="2">
<key file="DAL.dll"/>
<fileset basedir="${build.current.dir}">
<include name="DAL.dll"/>
</fileset>
</component>
<component name="C__CustomValidation" directory="D__Product"
feature="F__Product" id="{}" attr="2">
<key file="CustomValidation.dll"/>
<fileset basedir="${build.current.dir}">
<include name="CustomValidation.dll"/>
</fileset>
</component>
<component name="C__OracleDataProvider" directory="D__Product"
feature="F__Product" id="{}" attr="2">
<key file="Oracle.DataAccess.dll"/>
<fileset basedir="${build.current.dir}">
<include name="Oracle.DataAccess.dll"/>
</fileset>
</component>
<component name="C__ThirdParty1" directory="D__Product"
feature="F__Product" id="{}" attr="2">
<key file="ThirdParty1.dll"/>
<fileset basedir="${build.current.dir}">
<include name="ThirdParty1.dll"/>
</fileset>
</component>
<component name="C__ThirdParty2" directory="D__Product"
feature="F__Product" id="{}" attr="2">
<key file="ThirdParty2.dll"/>
<fileset basedir="${build.current.dir}">
<include name="ThirdParty2.dll"/>
</fileset>
</component>
<component name="C__ThirdParty3" directory="D__Product"
feature="F__Product" id="{}" attr="2">
<key file="ThirdParty31.dll"/>
<fileset basedir="${build.current.dir}">
<include name="ThirdParty31.dll"/>
<include name="ThirdParty32.dll"/>
</fileset>
</component>
<component name="C__ThirdParty4" directory="D__Product"
feature="F__Product" id="{}" attr="2">
<key file="ThirdParty4.dll"/>
<fileset basedir="${build.current.dir}">
<include name="ThirdParty4.dll"/>
</fileset>
</component>
<component name="C__ReleaseNotes" directory="TARGETDIR"
feature="F__Product" id="{}" attr="2">
<key file="${releasenotes.std.file}"/>
<fileset basedir="${build.current.dir}">
<include name="${releasenotes.std.file}"/>
<include name="${releasenotes.tech.file}"/>
</fileset>
</component>
<component name="C__DBConfiguration" directory="D__Product"
feature="F__Product" id="{}" attr="2">
<key file="DBConfiguration.xml"/>
<fileset basedir="${build.current.dir}">
<include name="DBConfiguration.xml"/>
</fileset>
</component>
<component name="C__XmlConfigFiles" directory="D__Resources"
feature="F__Product" id="{}" attr="2">
<key file="UserOptions.xml"/>
<fileset basedir="${build.current.dir}\${resources.dir}">
<include name="UserOptions.xml"/>
<include name="UserOptions.xml.default"/>
<include name="configuration1.xml"/>
<include name="configuration2.xml"/>
<include name="configuration3.xml"/>
<include name="restore.bat"/>
</fileset>
</component>
<component name="C__MoreXmlConfigFiles" directory="D__Xml"
feature="F__Product" id="{}" attr="2">
<key file="xmlConfig1.xml"/>
<fileset basedir="${build.current.dir}\${resources.dir}\${xml.dir}">
<include name="xmlConfig1.xml"/>
<include name="xmlConfig2.xml"/>
<include name="xmlConfig3.xml"/>
<include name="xmlConfig4.xml"/>
</fileset>
</component>
<component name="C__Icons" directory="D__Icons" feature="F__Product"
id="{}" attr="2">
<key file="icon1.ico"/>
<fileset basedir="${build.current.dir}\${resources.dir}\${icons.dir}">
<include name="icon1.ico"/>
<include name="icon2.ico"/>
</fileset>
</component>
</components>
<!--<launchconditions>
<launchcondition name="CheckFramework"
condition="MsiNetAssemblySupport">
<description>This application requires the Microsoft .NET framework.
Please install the framework first, then re-run this install.</description>
</launchcondition>
</launchconditions>-->
<icons>
<icon name="icon1" value="${resources.icons.dir}\icon1.ico"/>
<icon name="icon2" value="${resources.icons.dir}\icon2.ico"/>
</icons>
<shortcuts>
<!--Desktop shortcuts-->
<shortcut name="SC__DT_Product" directory="DesktopFolder"
filename="Product.exe" component="C__Product"
target="[$C__Product]\Product.exe" icon="icon2" iconindex="0" showcmd="3" >
<description>${project::get-name()} ${product.version}</description>
</shortcut>
<!--Program Menu shortcuts-->
<shortcut name="SC__PM_Product" directory="ProgramMenuFolder"
filename="Product.exe" component="C__Product"
target="[$C__Product]\Product.exe" icon="icon2" iconindex="0" showcmd="3">
<description>${project::get-name()} ${product.version}</description>
</shortcut>
<shortcut name="SC__PM_ReleaseNotes" directory="ProgramMenuFolder"
filename="${releasenotes.std.file}" component="C__ProductReleaseNotes"
target="[$C__ProductReleaseNotes]\${releasenotes.std.file}">
<description>${project::get-name()} ${product.version} Release
Notes</description>
</shortcut>
<shortcut name="SC__PM_ReleaseNotesTech" directory="ProgramMenuFolder"
filename="${releasenotes.tech.file}" component="C__ProductReleaseNotes"
target="[$C__ProductReleaseNotes]\${releasenotes.tech.file}">
<description>${project::get-name()} ${product.version} Technical
Release Notes</description>
</shortcut>
</shortcuts>
<features>
<feature name="F__Product" title="Product" display="1" typical="true"
directory="TARGETDIR">
<description>Product ${product.version}</description>
</feature>
</features>
</msi>
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED]
Sent: 29 February 2008 13:08
To: nant-users@lists.sourceforge.net
Subject: [NAnt-users] msi task - 'cabarc' failed to start
Hi all,
I'm new to NAnt and I'm trying to set up our project for automated builds but
am having no success. I'm currently trying to use the msi task to build the msi
for our project but it keeps failing with the following message:
[msi] Compressing Files...
[exec] Starting 'cabarc (-r N
C:\code\PROJECT~3\trunk\builds\lat
est\Project.cab *)' in 'C:\Documents and Settings\user\Local Settings\Temp\tm
p177B.tmp'
Failure:
BUILD FAILED
C:\code\Project-SVN\trunk\default.build(317,6):
Unable to build Installer database 'Deploy\Project.msi'.
C:\code\Project-SVN\trunk\default.build(317,6):
Error creating cab file.
'cabarc' failed to start.
The system cannot find the file specified
I've added cabarc and mergemodule to the path using the following code:
<!-- Retrieve the path to visual studio from the registry -->
<readregistry property="visualstudio.dir" key="SOFTWARE\ Microsoft
\VisualStudio\8.0\InstallDir"
hive="LocalMachine" />
<echo>Visual Studio path: ${visualstudio.dir}</echo>
<property name="cabarc.dir" value="${string::replace(visualstudio.dir, 'IDE\',
'Tools\Bin\CabArc.exe')}"/>
<property name="mergemod.dir" value="C:\Program Files\Common Files\ Microsoft
Shared\MSI Tools\mergemod.dll"/>
<setenv name="PATH" path ="${cabarc.dir};${mergemod.dir};%PATH%"/>
<echo>Path: ${environment::get-variable('PATH')}</echo>
The echo task shows the paths to cabarc and mergemod have been added to the
Path environment variable so it should be able to find them. A friend suggested
that maybe spaces in the path are causing the problem but I don't know which
path in particular they were referring to. From what I've seen, the fix for
that issue should be in the version of NAnt I'm using (0.85) anyway though.
Does anyone have any other ideas??
FYI - it's a C# Winforms project using .NET 2.0. We want to be able to remove
visual studio from the build machine in the future but right now I'm just
trying to get a build that works. Any example build files would be gratefully
accepted! Most of the good examples I've seen have been for Web projects :(
Thanks,
K.
Get the name you always wanted with the new y7mail email address.
www.yahoo7.com.au/y7mail
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
NAnt-users mailing list
NAnt-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nant-users