如何使用ant编译NSIS脚本?

时间:2012-10-30 06:56:01

标签: ant nsis

我已经为我的java项目创建了NSIS脚本。我已经在我的eclipse.using插件中安装了nsis插件我创建了nsi文件。现在我想编译nsi文件。我试图在eclipse中使用Ant。

<?xml version="1.0" encoding="UTF-8"?>
<project name="test" default="nsis" basedir=".">
    <property name="build.path" value="build"/> 
        <property name="deploy.dir" value="/opt/test"></property>
    <path id="library.classpath">
            <fileset dir="lib">
                <include name="nsisant-1.2.jar"/>
            </fileset>
        </path>
    <target name="nsis" description="compile nsis script">
        <mkdir dir="${build.path}/nsis"/>
        <nsis script="setup.nsi">
            <classpath refid="library.classpath"/>
        </nsis>
    </target>
    </project>

但它会引发跟随错误。

 BUILD FAILED
    build.xml:12: Problem: failed to create task or type nsis
    Cause: The name is undefined.
    Action: Check the spelling.
    Action: Check that any custom tasks/types have been declared.
    Action: Check that any <presetdef>/<macrodef> declarations have taken place.

我不知道为什么会这样?如何使用ant编译nsi文件?或者有没有其他方法可以在不使用ant的情况下进行编译?

2 个答案:

答案 0 :(得分:2)

使用专用的nsis任务似乎是最好的方法,但也许不是最简单的方法。我只是使用这样的语法执行makensis.exe

<exec executable="C:\Program_Files\NSIS\makensis.exe" failonerror="true" >
  <!-- providing some nsis definitions -->
  <arg value="/DPROJECT_NAME=${ant.project.name}"/>
  <!-- passing the script -->
  <arg value="${basedir}\raport.nsi"/>
</exec>

关于你的第二个问题:是的,你可以在没有ant的情况下编译nsis脚本。例如:

C:\Program_Files\NSIS\makensis.exe /DPROJECT_NAME=this-project my-script.nsi

在Linux上你也应该在某个地方makensis

PROJECT_NAME内容是我的自定义。在最简单的情况下,您不提供任何定义,省略该部分。

答案 1 :(得分:1)

您是否使用Nsis Ant Sourceforge project中的NSIS Ant任务?安装后,您可以将其用作

<taskdef name="nsis" classname="net.sf.nsisant.Task">
    <classpath location="nsisant-{version}.jar">
</taskdef>