You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/06/17 07:03:00 UTC

[1/3] git commit: [flex-asjs] [refs/heads/develop] - approval script

Repository: flex-asjs
Updated Branches:
  refs/heads/develop b5f560aea -> dc8435675


approval script


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/963a5cc7
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/963a5cc7
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/963a5cc7

Branch: refs/heads/develop
Commit: 963a5cc7d562e772b0ed166f2b40daf6ba94b663
Parents: b5f560a
Author: Alex Harui <ah...@apache.org>
Authored: Mon Jun 16 15:41:32 2014 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Jun 16 15:42:03 2014 -0700

----------------------------------------------------------------------
 ApproveFlexJS.xml | 405 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 405 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/963a5cc7/ApproveFlexJS.xml
----------------------------------------------------------------------
diff --git a/ApproveFlexJS.xml b/ApproveFlexJS.xml
new file mode 100644
index 0000000..2532198
--- /dev/null
+++ b/ApproveFlexJS.xml
@@ -0,0 +1,405 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+<project name="ApproveApacheFlexJS" default="main" basedir=".">
+
+
+    <!-- Required for OSX 10.6 / Snow Leopard Performance. -->
+    <!-- Java 7 on Mac requires OSX 10.7.3 or higher and is 64-bit only -->
+    <!-- local.d32 is set/used in build.properties so this needs to be done first. -->
+    <condition property="local.d32" value="-d32">
+        <and>
+            <os family="windows"/>
+            <equals arg1="${sun.arch.data.model}" arg2="64"/>
+            <equals arg1="${os.arch}" arg2="x86_64"/>
+            <equals arg1="${ant.java.version}" arg2="1.6"/>
+        </and>
+    </condition>
+
+    <condition property="isMac" value="mac">
+        <os family="mac" />
+    </condition>
+    <condition property="isWindows" value="windows">
+        <os family="windows" />
+    </condition>
+    <condition property="isLinux" value="linux">
+		<and>
+			<os family="unix" />
+			<not>
+				<isset property="isMac" />
+			</not>
+		</and>
+    </condition>
+    <condition property="package.suffix" value="zip">
+        <os family="windows" />
+    </condition>
+	<property name="package.suffix" value="tar.gz" />
+	
+	<property name="rat.report" value="${basedir}/rat-report.txt"/>
+	<property name="apache.rat.jar" value="apache-rat-0.8.jar" />
+	<property name="apache.rat.tasks.jar" value="apache-rat-tasks-0.8.jar" />
+	<property name="apache.rat.url" value="http://people.apache.org/~aharui/rat" />
+	   
+    <property file="${basedir}/approvefalcon.properties"/>
+    
+	<property name="mac.text.display" value="cat" />
+	<property name="win.text.display" value="type" />
+	<property name="linux.text.display" value="cat" />
+    <property environment="env"/>
+
+    <property name="build.target" value="main" />
+    
+	<condition property="do.copy.downloads" >
+		<isset property="download.cache.dir" /> 
+	</condition>
+	
+    <fail message="The ANT_HOME environment variable is not set."
+        unless="env.ANT_HOME"/>
+		
+	<available file="${env.FLEX_HOME}" 
+		type="dir" 
+		property="FLEX_HOME" value="${env.FLEX_HOME}" />
+
+    <fail message="The FLEX_HOME property is not set in environment or command-line."
+        unless="FLEX_HOME"/>
+				
+	<available file="${env.AIR_HOME}" 
+		type="dir" 
+		property="AIR_HOME" value="${env.AIR_HOME}" />
+
+    <fail message="The AIR_HOME property is not set in environment or command-line."
+        unless="AIR_HOME"/>
+		
+    <available file="${env.PLAYERGLOBAL_HOME}"
+        type="dir"
+        property="PLAYERGLOBAL_HOME" value="${env.PLAYERGLOBAL_HOME}" />
+    
+    <fail message="The PLAYERGLOBAL_HOME property is not set in environment or command-line."
+        unless="PLAYERGLOBAL_HOME"/>
+    
+    <available file="${env.FLASHPLAYER_DEBUGGER}"
+        type="dir"
+        property="FLASHPLAYER_DEBUGGER" value="${env.FLASHPLAYER_DEBUGGER}" />
+    
+    <available file="${env.FLASHPLAYER_DEBUGGER}"
+        type="file"
+        property="FLASHPLAYER_DEBUGGER" value="${env.FLASHPLAYER_DEBUGGER}" />
+    
+    <fail message="The FLASHPLAYER_DEBUGGER property is not set in environment or command-line."
+        unless="FLASHPLAYER_DEBUGGER"/>
+    
+    <available file="${env.FALCON_HOME}"
+        type="dir"
+        property="FALCON_HOME" value="${env.FALCON_HOME}" />
+    
+    <fail message="The FALCON_HOME property is not set in environment or command-line."
+        unless="FALCON_HOME"/>
+    
+    <available file="${env.FALCONJX_HOME}"
+        type="dir"
+        property="FALCONJX_HOME" value="${env.FALCONJX_HOME}" />
+    
+    <fail message="The FALCONJX_HOME property is not set in environment or command-line."
+        unless="FALCONJX_HOME"/>
+    
+    <available file="${env.FLEXUNIT_HOME}"
+        type="dir"
+        property="FLEXUNIT_HOME" value="${env.FLEXUNIT_HOME}" />
+    
+    <fail message="The FLEXUNIT_HOME property is not set in environment or command-line."
+        unless="FLEXUNIT_HOME"/>
+    
+    <available file="${env.ANT_HOME}/lib/${apache.rat.jar}"
+        type="file"
+        property="apache.rat.found"/>
+    <available file="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}"
+        type="file"
+        property="apache.rat.tasks.found"/>
+		
+    <fail message="The release version is not set.  Specify -Drelease.version=&lt;release version (e.g. 3.1, 3.2, etc)&gt;"
+    unless="release.version"/>
+
+    <fail message="The release candidate number is not set.  Specify -Drc=&lt;rc number (e.g. 1, 2, 3, etc)&gt;"
+    unless="rc"/>
+        
+	<property name="package.url.path" value="https://dist.apache.org/repos/dist/dev/flex/flexjs/${release.version}/rc${rc}" />
+	<property name="package.url.name" value="apache-flex-flexjs-${release.version}-src" />
+	
+    <condition property="zip.package">
+        <equals arg1="zip" arg2="${package.suffix}" />
+    </condition>
+    
+	<target name="display-text-mac" if="isMac">
+		<echo>========================= Begin ${file} ==============================</echo>
+		<exec executable="${mac.text.display}" >
+			<arg value="${file}" /> 
+		</exec>
+		<echo>========================= End ${file} ==============================</echo>
+	</target>
+	<target name="display-text-win" if="isWindows">
+		<pathconvert targetos="windows" property="winfile">
+			<path path="${file}" />
+		</pathconvert>
+		<echo>========================= Begin ${winfile} ==============================</echo>
+		<exec executable="cmd.exe" >
+			<arg value="/c" />
+			<arg value="${win.text.display}" />
+			<arg value="${winfile}" /> 
+		</exec>		
+		<echo>========================= End ${winfile} ==============================</echo>
+	</target>
+	<target name="display-text-linux" if="isLinux">
+		<echo>========================= Begin ${file} ==============================</echo>
+		<exec executable="${linux.text.display}" >
+			<arg value="${file}" /> 
+		</exec>
+		<echo>========================= End ${file} ==============================</echo>
+	</target>
+	
+	<target name="install-rat" depends="install-rat.jar,install-rat.tasks.jar" />
+	<target name="install-rat.jar" unless="apache.rat.found">
+		<get src="${apache.rat.url}/${apache.rat.jar}" dest="${env.ANT_HOME}/lib/${apache.rat.jar}" />
+	</target>
+	<target name="install-rat.tasks.jar" unless="apache.rat.tasks.found">
+		<get src="${apache.rat.url}/${apache.rat.tasks.jar}" dest="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}" />
+	</target>
+	
+    <target name="rat-taskdef" description="Rat taskdef">
+        <typedef resource="org/apache/rat/anttasks/antlib.xml"
+        uri="antlib:org.apache.rat.anttasks"
+        classpathref="anttask.classpath"/>
+    </target>
+
+    <target name="main" depends="install-rat,download,check-sigs,uncompress,rat-check,check-notices,build,approve" description="Perform required release approval steps">
+    </target>
+    
+    <target name="main-no-download" depends="install-rat,check-sigs,uncompress,rat-check,check-notices,build,approve" description="Perform required release approval steps">
+    </target>
+	
+    <target name="test" >
+		<echo>${rat.report}.bin.txt</echo>
+		<replaceregexp file="${rat.report}.bin.txt" match="..AL.*" replace="" byline="true"/>
+    </target>
+	
+	<target name="display-text" >
+		<antcall target="display-text-mac" />
+		<antcall target="display-text-win" />
+		<antcall target="display-text-linux" />
+	</target>
+
+	<target name="display-text-test" >
+		<antcall target="display-text" >
+			<param name="file" value="${basedir}/rat-report.txt" />
+		</antcall>
+	</target>
+	
+    <target name="download" description="download the release package">
+        <get src="${package.url.path}/${package.url.name}.${package.suffix}"
+            dest="${basedir}/${package.url.name}.${package.suffix}" />
+        <get src="${package.url.path}/${package.url.name}.${package.suffix}.md5"
+            dest="${basedir}/${package.url.name}.${package.suffix}.md5" />
+        <get src="${package.url.path}/${package.url.name}.${package.suffix}.asc"
+            dest="${basedir}/${package.url.name}.${package.suffix}.asc" />
+    </target>
+    
+    <target name="check-sigs" description="check md5 and gpg sigs">
+		<replace file="${basedir}/${package.url.name}.${package.suffix}.md5"
+			token=" " />
+		<checksum file="${basedir}/${package.url.name}.${package.suffix}" algorithm="md5" verifyproperty="md5.ok" />
+        <condition property="MD5Invalid">
+			<not>
+				<equals arg1="${md5.ok}" arg2="true" />
+			</not>
+        </condition>
+        <fail message="MD5 checksum did not match" if="MD5Invalid" />
+		<exec executable="gpg" failonerror="true">
+			<arg value="--verify" />
+			<arg value="${basedir}/${package.url.name}.${package.suffix}.asc" />
+			<arg value="${basedir}/${package.url.name}.${package.suffix}" />
+		</exec>
+    </target>
+
+    <target name="uncompress" depends="pre-clean, untar-file, unzip-file" />
+
+    <target name="pre-clean" description="remove old uncompressed package" >
+		<delete dir="${basedir}/${package.url.name}" failonerror="false" />
+	</target>
+	
+    <target name="untar-file" unless="zip.package" description="Untars zipFile">
+        <untar src="${basedir}/${package.url.name}.${package.suffix}"
+                dest="${basedir}" compression="gzip"/>
+    </target>
+
+    <target name="unzip-file" if="zip.package" description="Unzips zipFile">
+        <unzip src="${basedir}/${package.url.name}.${package.suffix}"
+                dest="${basedir}/${package.url.name}"/>
+    </target>
+
+    <target name="rat-check" >
+
+        <echo message="Checking files at ${basedir}/${package.url.name}, report is ${rat.report}"/>
+
+        <rat:report xmlns:rat="antlib:org.apache.rat.anttasks"
+            reportFile="${rat.report}">
+            <fileset dir="${basedir}/${package.url.name}">
+                <!-- exclude media (png, gif, jpg, mp3, flv) -->
+                <exclude name="**/*.png"/>
+                <exclude name="**/*.gif"/>
+                <exclude name="**/*.jpg"/>
+                <exclude name="**/*.mp3"/>
+                <exclude name="**/*.flv"/>
+                <exclude name="frameworks/js/jshint.properties"/>
+            </fileset>
+        </rat:report>
+		<antcall target="display-text" >
+            <param name="file" value="${rat.report}" />
+        </antcall>
+        <input
+			message="Check that there are no unknown or unapproved licenses or archives. Is it ok?"
+            validargs="y,n"
+        defaultvalue="y"
+        addproperty="rat.license.ok"/>
+		<echo>filtering out AL files to make it easier to see binary files</echo>
+		<copy file="${rat.report}" tofile="${rat.report}.bin.txt" />
+		<replaceregexp file="${rat.report}.bin.txt" match="..AL.*" replace="" byline="true"/>
+		<antcall target="display-text" >
+            <param name="file" value="${rat.report}.bin.txt" />
+        </antcall>
+        <input
+			message="Check that there are no unexpected binaries.  Is it ok?"
+            validargs="y,n"
+        defaultvalue="n"
+        addproperty="rat.binaries.ok"/>
+    </target>
+
+    <target name="check-notices" description="open each notice file for review, grep for a few things" >
+        <fail message="README not in package">
+			<condition>
+	            <not>
+    	            <available file="${basedir}/${package.url.name}/README" />
+        	    </not>
+			</condition>
+        </fail>
+        <fail message="RELEASE_NOTES not in package">
+			<condition>
+				<not>
+					<available file="${basedir}/${package.url.name}/RELEASE_NOTES" />
+				</not>
+			</condition>
+        </fail>
+        <fail message="NOTICE not in package">
+			<condition>
+				<not>
+					<available file="${basedir}/${package.url.name}/NOTICE" />
+				</not>
+			</condition>
+        </fail>
+        <fail message="LICENSE not in package">
+			<condition>
+				<not>
+					<available file="${basedir}/${package.url.name}/LICENSE" />
+				</not>
+			</condition>
+        </fail>
+		<antcall target="display-text" >
+            <param name="file" value="${basedir}/${package.url.name}/README" />
+        </antcall>
+		<input
+			message="Check the README for version numbers, spelling, grammar, accuracy.  Is it ok?"
+            validargs="y,n"
+        defaultvalue="y"
+        addproperty="readme.ok"/>
+		<antcall target="display-text" >
+            <param name="file" value="${basedir}/${package.url.name}/RELEASE_NOTES" />
+        </antcall>
+		<input
+			message="Check the RELEASE_NOTES for copyright years, spelling, grammar, accuracy. Is it ok?"
+            validargs="y,n"
+        defaultvalue="y"
+        addproperty="releasenotes.ok"/>
+		
+        
+		<antcall target="display-text" >
+            <param name="file" value="${basedir}/${package.url.name}/NOTICE" />
+        </antcall>
+		<input
+			message="Check the NOTICE for required notices from third-parties. Is it ok?"
+            validargs="y,n"
+        defaultvalue="y"
+        addproperty="notice.ok"/>
+
+		<antcall target="display-text" >
+            <param name="file" value="${basedir}/${package.url.name}/LICENSE" />
+        </antcall>
+		<input
+			message="Check the LICENSE for the Apache License and third-party licenses. Is it ok?"
+            validargs="y,n"
+        defaultvalue="y"
+        addproperty="license.ok"/>
+    </target>
+
+    <target name="build" depends="copy.downloads">
+		<input
+			message="The final step is to run the build and any tests the build script runs.  This can take several minutes.  Press y to start the build."
+            validargs="y"
+        defaultvalue="y" />
+        <ant dir="${basedir}/${package.url.name}" target="main" />
+    </target>
+
+    <target name="copy.downloads" if="${do.copy.downloads}" description="instead of actually downloading all of the dependencies, you can save lots of time by just copying from some other folder in some other SDK.">
+		<echo>Copying downloads</echo>
+        <copy todir="${basedir}/${package.url.name}/in" >
+			<fileset dir="${download.cache.dir}" />
+		</copy>
+    </target>
+    	
+	<target name="approve" >
+		<condition property="vote" value="+1">
+			<and>
+				<equals arg1="${rat.license.ok}" arg2="y" />
+				<equals arg1="${rat.binaries.ok}" arg2="y" />
+				<equals arg1="${readme.ok}" arg2="y" />
+				<equals arg1="${releasenotes.ok}" arg2="y" />
+				<equals arg1="${notice.ok}" arg2="y" />
+				<equals arg1="${license.ok}" arg2="y" />
+			</and>
+		</condition>
+		<property name="vote" value="-1" />
+		<echo>
+${vote}
+Package ${package.url.path}/${package.url.name}.${package.suffix}
+Java ${ant.java.version}
+OS: ${os.name} ${os.arch} ${os.version}
+Source kit signatures match: y
+Source kit builds: y
+README is ok: ${readme.ok}
+RELEASE_NOTES is ok: ${releasenotes.ok}
+NOTICE is ok: ${notice.ok}
+LICENSE is ok: ${license.ok}
+No unapproved licenses or archives: ${rat.license.ok}
+No unapproved binaries: ${rat.binaries.ok}
+		</echo>
+		<fail>
+			<condition>
+	            <equals arg1="-1" arg2="${vote}"/>
+			</condition>
+		</fail>
+	</target>
+</project>


[3/3] git commit: [flex-asjs] [refs/heads/develop] - add caching info to log

Posted by ah...@apache.org.
add caching info to log


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/dc843567
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/dc843567
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/dc843567

Branch: refs/heads/develop
Commit: dc843567519b556e12675e5feead44bb35fda6f9
Parents: 0c4ffa4
Author: Alex Harui <ah...@apache.org>
Authored: Mon Jun 16 22:02:36 2014 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Jun 16 22:02:36 2014 -0700

----------------------------------------------------------------------
 installer.properties/en_US.properties |  1 +
 installer.xml                         | 10 ++++++----
 2 files changed, 7 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dc843567/installer.properties/en_US.properties
----------------------------------------------------------------------
diff --git a/installer.properties/en_US.properties b/installer.properties/en_US.properties
index 5de18e1..df50962 100644
--- a/installer.properties/en_US.properties
+++ b/installer.properties/en_US.properties
@@ -81,5 +81,6 @@ INFO_INSTALLING_LAUNCH_CONFIG_FILES=Installing Adobe Flash Builder launch config
 INFO_DOWNLOADING_FILE_FROM=Downloading {0} from: {1}
 INFO_DOWNLOADED=Download complete 
 INFO_VALIDATING_FILE=Validating download:
+INFO_USING_CACHED_FILE=Using file from cache:
  
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dc843567/installer.xml
----------------------------------------------------------------------
diff --git a/installer.xml b/installer.xml
index 1cc8c85..421f087 100644
--- a/installer.xml
+++ b/installer.xml
@@ -136,7 +136,8 @@
 		
     <target name="get-data">
 		<tstamp />
-		<property name="xml.properties" value="http://flex.apache.org/installer/sdk-installer-config-4.0.xml?ts=${DSTAMP}" />
+		<property name="ts" value="${DSTAMP}${TSTAMP}" />
+		<property name="xml.properties" value="http://flex.apache.org/installer/sdk-installer-config-4.0.xml?ts=${ts}" />
         <get src="${xml.properties}" dest="${basedir}/sdk-installer-config-4.0.xml" />
         <xmlproperty file="${basedir}/sdk-installer-config-4.0.xml" semanticAttributes="true" collapseAttributes="true"/>
         <property name="air.sdk.url.server.ref" value="air.sdk.server.${platform}.${air.sdk.version}" />
@@ -1062,13 +1063,14 @@ tofile="${FLEXJS_HOME}/frameworks/themes/Halo/Halo.swc" />
         <get src="${srcDomain}/${srcFolder}/${srcFile}" dest="${dest}"/>
 	</target>
 	<target name="get-with-no-params" depends="check-params" if="not-local-no-params" >
-        <get src="${srcDomain}/${srcFolder}/${srcFile}?ts=${DSTAMP}" dest="${dest}"/>
+        <get src="${srcDomain}/${srcFolder}/${srcFile}?ts=${ts}" dest="${dest}"/>
 	</target>
 	<target name="get-with-params" depends="check-params" if="has-params" >
-        <get src="${srcDomain}/${srcFolder}/${srcFile}&amp;ts=${DSTAMP}" dest="${dest}"/>
+        <get src="${srcDomain}/${srcFolder}/${srcFile}&amp;ts=${ts}" dest="${dest}"/>
 	</target>
 	
     <target name="copy-if-cached" if="found-in-cache">
+		<echo>${INFO_USING_CACHED_FILE} ${downloadCacheFolder}/${srcFolder}/${srcFile}</echo>
 		<copy file="${downloadCacheFolder}/${srcFolder}/${srcFile}" tofile="${dest}" overwrite="true" />
 	</target> 
 	
@@ -1095,7 +1097,7 @@ tofile="${FLEXJS_HOME}/frameworks/themes/Halo/Halo.swc" />
     <target name="check-sum-from-file" if="srcMD5Domain" 
         description="Verifies MD5 checksum, and fails if checksum doesn't match">
         
-        <get src="${srcMD5Domain}/${srcFolder}/${srcFile}.md5?ts=${DSTAMP}" dest="${dest}.md5"/>
+        <get src="${srcMD5Domain}/${srcFolder}/${srcFile}.md5?ts=${ts}" dest="${dest}.md5"/>
         <echo>${INFO_VALIDATING_FILE} ${dest}</echo>
         <checksum file="${dest}" algorithm="MD5" verifyproperty="we.failed" />
         <fail message="${failmessage}">


[2/3] git commit: [flex-asjs] [refs/heads/develop] - got it working on Windows

Posted by ah...@apache.org.
got it working on Windows


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/0c4ffa4d
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/0c4ffa4d
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/0c4ffa4d

Branch: refs/heads/develop
Commit: 0c4ffa4dac4dab818c9107a8c589bfe5254bcedb
Parents: 963a5cc
Author: Alex Harui <ah...@apache.org>
Authored: Mon Jun 16 22:02:20 2014 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Jun 16 22:02:20 2014 -0700

----------------------------------------------------------------------
 ApproveFlexJS.xml | 12 ++++++++++++
 1 file changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0c4ffa4d/ApproveFlexJS.xml
----------------------------------------------------------------------
diff --git a/ApproveFlexJS.xml b/ApproveFlexJS.xml
index 2532198..d9682f6 100644
--- a/ApproveFlexJS.xml
+++ b/ApproveFlexJS.xml
@@ -65,7 +65,19 @@
     <property environment="env"/>
 
     <property name="build.target" value="main" />
+	
+	<available file="${env.APPDATA}/npm/jshint.cmd" 
+		type="file" 
+		property="jshint" value="${env.APPDATA}/npm/jshint.cmd" />
+	<property name="jshint" value="jshint" />
     
+	<available file="${env.ProgramFiles}/Mozilla Firefox/firefox.exe" 
+		type="file" 
+		property="browser" value="${env.ProgramFiles}/Mozilla Firefox/firefox.exe" />
+	<available file="${env.ProgramFiles(x86)}/Mozilla Firefox/firefox.exe" 
+		type="file" 
+		property="browser" value="${env.ProgramFiles}/Mozilla Firefox/firefox.exe" />
+
 	<condition property="do.copy.downloads" >
 		<isset property="download.cache.dir" /> 
 	</condition>