使用nant msi任务创建msi
我正在尝试为我的应用程序创建一个msi。
我使用以下命令传递client和version参数:
C: my client nant -D:client = abc -D:version = 1.0
我收到以下错误消息:
**
[msi] Building Installer Database 'C:irx-clientirxclient.msi'.
[msi] Adding Properties:
[msi] ProductName
[msi] ProductVersion
[msi] Manufacturer
[msi] ProductCode
[msi] UpgradeCode
[msi] ALLUSERS
[msi] TARGETDIR
[msi] Adding Directories:
[msi] client
[msi] bitmaps
[msi] icsrun552
[msi] nls
[msi] reports
[msi] Compressing Files...
[exec] Starting 'cabarc (-r N C:my-clienttargetmyclient.cab *)' in 'C:Documents and Settingsuser123Local SettingsTemptmp12AE.tmp' BUILD FAILED
**
但是,我可以成功手动运行以下命令:
C:my-clienttargetcabarc -r -p n myclient.cab *.*
我已经安装了cabarc.exe,nantcontrib和microsoft platform sdk,并将它们包含在PATH变量中。
请告诉我这里做错了什么。
nant脚本摘要:
将文件复制到 target appname-version
创建包含 target appname-version 下所有文件和文件夹的msi
<?xml version="1.0"?>
<project name="my client" default="msi-package">
<!-- import the extra libraries -->
<loadtasks assembly="${path::combine(environment::get-variable('NANT_HOME'),'contrib/bin/NAnt.Contrib.Tasks.dll')}"/>
<!--********************************************************************
Initialize all the required variables
************************************************************************-->
<property name="source-core" value="./src/core" />
<property name="client" value="client" overwrite="false"/>
<property name="version" value="3.3.9.7.6" overwrite="false"/>
<property name="client-target" value="./target/appname-version" />
<property name="source-bank" value="./src/${client}"/>
<property name="ProductName" value="appname" />
<property name="ProductVersion" value="${version}"/>
<property name="ProductManufacturer" value="manufacturer Inc"/>
<echo message="${client}"/>
<echo message="${version}"/>
<!--********************************************************************
Delete 'target' folder if it exists and create a new empty target folder.
************************************************************************-->
<target name="clean">
<delete dir="./target" />
</target>
<target name="prepare" depends="clean">
<mkdir dir="target" />
<property name="target" value="./target" />
</target>
<!--**************************************************************************************
Copy files from /src/core and /src/client to target/appname-version
****************************************************************************************-->
<target name="copy-core" depends="prepare">
<copy todir="${client-target}">
<fileset basedir="${source-core}">
<include name="**/*.*" />
</fileset>
</copy>
</target>
<target name="copy-bank" depends="copy-core">
<copy todir="${client-target}" overwrite="true">
<fileset basedir="${source-bank}">
<include name="**/*.bmp"/>
<include name="**/*.exe"/>
<include name="**/*.icx"/>
<include name="**/*.img"/>
<include name="**/*.ini"/>
<include name="**/*.txt"/>
<include name="**/nls/*.*"/>
<include name="**/Reports/*.*"/>
</fileset>
</copy>
</target>
<!--**************************************************************************************
msi part should go in this section
*****************************************************************************************-->
<target name="msi-package" depends="copy-bank">
<!--this section calls the cabarc.exe which has been installed and the PATH environment variable has been edited to include the exe-->
<setenv>
<variable name="PATH" path="C:Program FilesNAntbin;%PATH%" />
</setenv>
<msi sourcedir="C:my-clienttarget" output="C:my-clientmyclient.msi" verbose="true" debug="true">
<properties>
<property name="ProductName" value="appname" />
<property name="ProductVersion" value="${version}"/>
<property name="Manufacturer" value="mamufacturer Inc."/>
<property name="ProductCode" value="{}" />
<property name="UpgradeCode" value="{}" />
<property name="ALLUSERS" value="2" />
<property name="TARGETDIR" value="C:appname-version" />
</properties>
<directories>
<directory name="C_CLIENT" foldername="client" root="TARGETDIR"/>
<directory name="C_BITMAP" foldername="bitmaps" root="TARGETDIR"/>
<directory name="C_ICSRUN" foldername="icsrun552" root="TARGETDIR" />
<directory name="C_NLS" foldername="nls" root="TARGETDIR" />
<directory name="C_RPTS" foldername="reports" root="TARGETDIR" />
</directories>
</msi>
</target>
</project>
没有找到相关结果
已邀请:
3 个回复
裸雷胜檀哭
纤洞需匪
修复了这个问题。 您可以在
任务文档页面上检查
元素所需的元素:http://nantcontrib.sourceforge.net/release/0.85/help/tasks/msi.html 另请参阅此处msi任务的一个很好的示例:示例请求:&lt; msi&gt; nant-contrib的任务
草票
确保解决方案文件(.sln)路径正确并且存在.vdproj文件。希望这有助于人们在使用nant脚本创建msi文件时寻求帮助。快乐的编码!