NSIS使用ant編譯

說明

目前的項目需要提交至Jenkins,因此需要做兩個操作

  1. 編譯java項目成爲一個可安裝的exe文件
  2. 編譯Ant腳本實現Jenkins編譯
    這裏主要記錄使用ant腳本編譯的事情

下載需要的軟件

我這次需要的軟件主要有以下幾個:

  1. Apache Ant
  2. NSIS
  3. NSIS插件nsisant
    軟件可以在官網上自行下載。

開始

1. 安裝配置環境

安裝NSIS和Apache Ant,並配置對應的環境變量(過程不再贅述)

2. 編譯Ant腳本

Test-installer-build.xml

<project name="Test-installer-build" default="build.main" basedir=".">
	<description>
	       **************************************
	</description>
	<!-- ***************** Properties ***************** -->
	<property file="installer.properties"/>

	<!-- *************** main ************************-->
	<target name="build.main">
		<antcall target="build.init" />
		<antcall target="build.clear" />
		<antcall target="build.mkdir" />
		<antcall target="build.installer" />
		<antcall target="installer.staging" />
		<antcall target="installer.zip" />
	</target>
	

	<!-- ***************** Initialize build Timestamp ***************** -->
	<target name="build.init">
		<tstamp>
			<format property="build.time" pattern="hh:mm:ss"/>
			<format property="build.date" pattern="yyyyMMddHHmmss"/>
			<format property="build.datetime" pattern="MMMM-d-yyyy HHmm"/>
		</tstamp>
	</target>
	
	<!-- ***************** Initialize build Timestamp ***************** -->
	<target name="build.clear" depends="build.init">
		<delete dir="${build.deployment.dir}" includeemptydirs="true"/>
	</target>
	
	<!-- ***************** Initialize build Timestamp ***************** -->
	<target name="build.mkdir" depends="build.init, build.clear">
		<mkdir dir="${build.deployment.dir}"> </mkdir>
	</target>
	
	<target name="build.installer" depends="build.init">
		<taskdef name="nsis" classname="com.danielreese.nsisant.Task">
			<classpath location="${Test.installer.dir}/nsis/nsisant-1.3.jar" /> 
		</taskdef>
		<nsis script="${Test.installer.dir}/Test.nsi" />
	</target>
	
	<!-- Create the Installer Staging -->
	<target name="installer.staging" depends="build.init">
		<mkdir dir="${installer.staging.dir}/${build.datetime}"/>
		<copy todir="${installer.staging.dir}/${build.datetime}">
			<fileset dir="${Test.dir}/deploy">
				<include name="Setup.exe"/>
			</fileset>	
		</copy>
	</target>
	
	<!-- ZIP up the Installer -->
	<target name="installer.zip" depends="installer.staging">
		<zip destfile="${installer.staging.dir}/${installer.name}_${installer.version}_${build.datetime}.zip"
	       	 basedir="${installer.staging.dir}/${build.datetime}"/>
	</target>
</project>

installer.properties

## {basedir} start from the folder where xml is located ##
root.dir=${basedir}/../../../../
test.dir=${root.dir}/Test
test.installer.dir=${test.dir}/deploy
installer.staging.dir=${build.deployment.dir}/Test-Installer
installer.name=Test
installer.version=Test-2.4.1
build.deployment.dir = ${root.dir}/build
關鍵配置說明
<target name="build.installer" depends="build.init">
		<taskdef name="nsis" classname="com.danielreese.nsisant.Task">
			<classpath location="${Test.installer.dir}/nsis/nsisant-1.3.jar" /> 
		</taskdef>
		<nsis script="${Test.installer.dir}/Test.nsi" />
</target>

在這裏,nsisant-1.3.jar可以放置在任何路徑下,只要配置的時候location可以找到即可。
Test.nsi同理。
建議配置的時候放在一起,方便後續人員維護。

3.配置其他文件

3.1 拷貝NSIS

安裝NSIS後,將NSIS的安裝文件copy至java工程中。
原始安裝的目錄
copy到工程中的目錄
建議全部copy(只有7M左右),使用ant編譯的時候需要使用/bin/makensis.exe,同時需要makensis.exe本身的一些配置文件。另外,本地驗證Test.nsi是否存在錯誤可以直接使用NSIS.exe。

3.2 配置文件路徑

需要將已經編譯好的文件Test-installer-build.xml和installer.properties放置在/bin下面。
在這裏插入圖片描述
也可以自行修改配置,將這兩個文件放置在別的路徑下(需要修改並重新編譯nsisant-1.3.jar,感興趣的同學可以嘗試一下。)

3.3 本地編譯

建議在上環境之前先本地編譯,如果有錯誤可以及時修改
編譯命令如下(需要根據自己的情況適當修改):

##{Ant_Home}/bin/ant.bat -file {ant_script} {ant_main}
..\..\..\..\Platform\tools\apache-ant-1.6.2\bin\ant.bat -file Test-installer-build.xml build.main

4. 配置環境

本地測試成功,就可以上環境了。這一步大家根據自身的配置在環境上配置就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章