Re: msi task - 'cabarc' failed to start

View: New views
3 Messages — Rating Filter:   Alert me  

Re: msi task - 'cabarc' failed to start

by rkjmailcentre-mailinglists :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.
 

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: nant-users-bounces@... [mailto:nant-users-bounces@...] On Behalf Of rkjmailcentre-mailinglists@...
Sent: 29 February 2008 13:08
To: nant-users@...
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.
-------------------------------------------------------------------------
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@...
https://lists.sourceforge.net/lists/listinfo/nant-users

Re: msi task - 'cabarc' failed to start

by gertdriesen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.
Try running the build in debug mode (NAnt.exe -debug), and send me the resulting output.
 
Gert


From: nant-users-bounces@... [mailto:nant-users-bounces@...] On Behalf Of rkjmailcentre-mailinglists@...
Sent: dinsdag 18 maart 2008 9:50
To: nant-users@...
Subject: Re: [NAnt-users] msi task - 'cabarc' failed to start

 

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: nant-users-bounces@... [mailto:nant-users-bounces@...] On Behalf Of rkjmailcentre-mailinglists@...
Sent: 29 February 2008 13:08
To: nant-users@...
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.
-------------------------------------------------------------------------
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@...
https://lists.sourceforge.net/lists/listinfo/nant-users

Re: msi task - 'cabarc' failed to start

by gps1977 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

hi,
there is some probs with microsoft support tools, just few days back I was also facing the same problem but now I am not getting this error.

Resolution:

First of u need to create a setup project (any sample project) using .NET IDE and install that project in your system. then it will activate your 'cabarc' file to run in your system.
What I am thinking here initially NantContrib is not able to activate this file thats why its not starting. so first u have to activate this then u run the msi build script.....


best of luck. I think it will wor. :)

rkjmailcentre-mailinglists wrote:
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: nant-users-bounces@lists.sourceforge.net [mailto:nant-users-bounces@lists.sourceforge.net] On Behalf Of rkjmailcentre-mailinglists@yahoo.com.au
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