RubyPackager 0.2.1.20101110 → 1.0.0.20120301

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -7,39 +7,28 @@ module RubyPackager
7
7
 
8
8
  module Tools
9
9
 
10
- # The map of stored passwords, per login
11
- @@Passwords = {}
12
-
13
- # Get a needed password.
14
- # Ask it from the user if we don't know it
10
+ # Set options that will be used by SSH calls
15
11
  #
16
- # Parameters:
17
- # * *iLogin* (_String_): Login for which we want the password
18
- # Return:
19
- # * _String_: Password
20
- def getPassword(iLogin)
21
- if (@@Passwords[iLogin] == nil)
22
- # Ask for it
23
- puts "Enter password for login #{iLogin}:"
24
- # TODO: Hide the output
25
- @@Passwords[iLogin] = $stdin.gets.strip
26
- end
27
-
28
- return @@Passwords[iLogin]
12
+ # Parameters::
13
+ # * *iSSHHost* (_String_): The SSH host
14
+ # * *iSSHLogin* (_String_): The SSH login
15
+ # * *iOptions* (<em>map<Symbol,Object></em>): Additional options [optional = {}]:
16
+ # * *:ask_for_password* (_Boolean_): Do we ask for the user password to give to SSH ?
17
+ # * *:ask_for_key_passphrase* (_Boolean_): Do we ask for the key passphrase to give to SSH ?
18
+ def set_ssh_options(iSSHHost, iSSHLogin, iOptions = {})
19
+ @SSHHost, @SSHLogin, @SSHOptions = iSSHHost, iSSHLogin, iOptions
29
20
  end
30
21
 
31
22
  # Execute some SSH command on a remote host protected with password
32
23
  #
33
- # Parameters:
34
- # * *iSSHHost* (_String_): The SSH host
35
- # * *iSSHLogin* (_String_): The SSH login
24
+ # Parameters::
36
25
  # * *iCmd* (_String_): The command to execute
37
- def sshWithPassword(iSSHHost, iSSHLogin, iCmd)
26
+ def ssh(iCmd)
38
27
  require 'net/ssh'
39
28
  Net::SSH.start(
40
- iSSHHost,
41
- iSSHLogin,
42
- :password => getPassword(iSSHLogin)
29
+ @SSHHost,
30
+ @SSHLogin,
31
+ get_net_ssh_options
43
32
  ) do |iSSH|
44
33
  puts(iSSH.exec!(iCmd))
45
34
  end
@@ -47,17 +36,15 @@ module RubyPackager
47
36
 
48
37
  # Copy files through SCP.
49
38
  #
50
- # Parameters:
51
- # * *iSCPHost* (_String_): Host
52
- # * *iSCPLogin* (_String_): Login
39
+ # Parameters::
53
40
  # * *iFileSrc* (_String_): Path to local file to copy from
54
41
  # * *iFileDst* (_String_): Path to remote file to copy to
55
- def scpWithPassword(iSCPHost, iSCPLogin, iFileSrc, iFileDst)
42
+ def scp(iFileSrc, iFileDst)
56
43
  require 'net/scp'
57
44
  Net::SCP.start(
58
- iSCPHost,
59
- iSCPLogin,
60
- :password => getPassword(iSCPLogin)
45
+ @SSHHost,
46
+ @SSHLogin,
47
+ get_net_ssh_options
61
48
  ) do |iSCP|
62
49
  iSCP.upload!(iFileSrc, iFileDst) do |iChunk, iName, iSent, iTotal|
63
50
  printf "#{iName}: #{iSent}/#{iTotal}\015"
@@ -67,6 +54,48 @@ module RubyPackager
67
54
  end
68
55
  end
69
56
 
57
+ private
58
+
59
+ # The map of stored passwords, per login
60
+ @@Passwords = {}
61
+
62
+ # Get a needed password.
63
+ # Ask it from the user if we don't know it
64
+ #
65
+ # Parameters::
66
+ # * *iLogin* (_String_): String for which we want the password
67
+ # Return::
68
+ # * _String_: Password
69
+ def get_password(iLogin)
70
+ if (@@Passwords[iLogin] == nil)
71
+ # Ask for it
72
+ require 'highline/import'
73
+ @@Passwords[iLogin] = ask("Enter password for #{iLogin}:") do |ioQuestion|
74
+ ioQuestion.echo = false
75
+ end
76
+ end
77
+
78
+ return @@Passwords[iLogin]
79
+ end
80
+
81
+ # Get the real SSH options that will be given to the Net::SSH library
82
+ # These are based on the way SSH options are set by set_ssh_options
83
+ #
84
+ # Return::
85
+ # * <em>map<Symbol,Object></em>: The Net::SSH options
86
+ def get_net_ssh_options
87
+ rOptions = {}
88
+
89
+ if (@SSHOptions[:ask_for_password])
90
+ rOptions[:password] = get_password("login #{@SSHLogin}")
91
+ end
92
+ if (@SSHOptions[:ask_for_key_passphrase])
93
+ rOptions[:passphrase] = get_password("key passphrase of #{@SSHLogin}")
94
+ end
95
+
96
+ return rOptions
97
+ end
98
+
70
99
  end
71
100
 
72
101
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -16,18 +16,19 @@ module RubyPackager
16
16
 
17
17
  # Check if the tools we will use to generate an executable are present
18
18
  #
19
- # Parameters:
19
+ # Parameters::
20
20
  # * *iRootDir* (_String_): Root directory
21
21
  # * *iIncludeRuby* (_Boolean_): Do we include Ruby in the release ?
22
- # Return:
22
+ # * *iNeedBinaryCompilation* (_Boolean_): Do we need to compile RB files into a binary executable ?
23
+ # Return::
23
24
  # * _Boolean_: Are tools correctly useable ?
24
- def checkExeTools(iRootDir, iIncludeRuby)
25
+ def check_exe_tools(iRootDir, iIncludeRuby, iNeedBinaryCompilation)
25
26
  rSuccess = true
26
27
 
27
28
  if (iIncludeRuby)
28
29
  # We need allinoneruby
29
30
  if (Gem.find_files('allinoneruby').empty?)
30
- logErr "Need to have allinoneruby gem to release including Ruby.\nPlease install allinoneruby gem (gem install allinoneruby)."
31
+ log_err "Need to have allinoneruby gem to release including Ruby.\nPlease install allinoneruby gem (gem install allinoneruby)."
31
32
  rSuccess = false
32
33
  end
33
34
  end
@@ -38,14 +39,14 @@ module RubyPackager
38
39
  # Create the binary.
39
40
  # This is called when the core library has been copied in the release directory.
40
41
  #
41
- # Parameters:
42
+ # Parameters::
42
43
  # * *iRootDir* (_String_): Root directory
43
44
  # * *iReleaseDir* (_String_): Release directory
44
45
  # * *iIncludeRuby* (_Boolean_): Do we include Ruby in the release ?
45
46
  # * *iExecutableInfo* (<em>map<Symbol,Object></em>): The executable information
46
- # Return:
47
+ # Return::
47
48
  # * _Boolean_: Success ?
48
- def createBinary(iRootDir, iReleaseDir, iIncludeRuby, iExecutableInfo)
49
+ def create_binary(iRootDir, iReleaseDir, iIncludeRuby, iExecutableInfo)
49
50
  rSuccess = true
50
51
 
51
52
  lBinSubDir = "Launch/#{RUBY_PLATFORM}/bin"
@@ -55,21 +56,21 @@ module RubyPackager
55
56
  # First create the binary containing all ruby
56
57
  lBinDir = "#{iReleaseDir}/#{lBinSubDir}"
57
58
  FileUtils::mkdir_p(lBinDir)
58
- changeDir(lBinDir) do
59
+ change_dir(lBinDir) do
59
60
  lCmd = "allinoneruby #{lBinName}"
60
61
  rSuccess = system(lCmd)
61
62
  if (!rSuccess)
62
- logErr "Error while executing \"#{lCmd}\""
63
+ log_err "Error while executing \"#{lCmd}\""
63
64
  end
64
65
  end
65
66
  end
66
67
  if (rSuccess)
67
68
  # Then create the real executable
68
69
  # Generate the Shell file that launches everything for Linux
69
- File.open("#{iReleaseDir}/#{iExecutableInfo[:ExeName]}", 'w') do |oFile|
70
+ File.open("#{iReleaseDir}/#{iExecutableInfo[:exe_name]}", 'w') do |oFile|
70
71
  oFile << "\#!/bin/sh
71
72
  \#--
72
- \# Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
73
+ \# Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
73
74
  \# Licensed under the terms specified in LICENSE file. No warranty is provided.
74
75
  \#++
75
76
 
@@ -94,14 +95,14 @@ then
94
95
  \# Set the environment correctly to execute Ruby from the extracted dir
95
96
  export LD_LIBRARY_PATH=`pwd`/tempruby/bin:`pwd`/tempruby/lib:`pwd`/tempruby/lib/lib1:`pwd`/tempruby/lib/lib2:`pwd`/tempruby/lib/lib3:`pwd`/tempruby/lib/lib4:${LD_LIRARY_PATH}
96
97
  export RUBYOPT=
97
- ./tempruby/bin/ruby -w #{iExecutableInfo[:StartupRBFile]}
98
+ ./tempruby/bin/ruby -w #{iExecutableInfo[:startup_rb_file]}
98
99
  else
99
100
  echo 'Ruby found on current platform. Use it directly.'
100
- ruby -w #{iExecutableInfo[:StartupRBFile]}
101
+ ruby -w #{iExecutableInfo[:startup_rb_file]}
101
102
  fi
102
103
  "
103
104
  end
104
- File.chmod(0755, "#{iReleaseDir}/#{iExecutableInfo[:ExeName]}")
105
+ File.chmod(0755, "#{iReleaseDir}/#{iExecutableInfo[:exe_name]}")
105
106
  end
106
107
 
107
108
  return rSuccess
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -16,18 +16,19 @@ module RubyPackager
16
16
 
17
17
  # Check if the tools we will use to generate an executable are present
18
18
  #
19
- # Parameters:
19
+ # Parameters::
20
20
  # * *iRootDir* (_String_): Root directory
21
21
  # * *iIncludeRuby* (_Boolean_): Do we include Ruby in the release ?
22
- # Return:
22
+ # * *iNeedBinaryCompilation* (_Boolean_): Do we need to compile RB files into a binary executable ?
23
+ # Return::
23
24
  # * _Boolean_: Are tools correctly useable ?
24
- def checkExeTools(iRootDir, iIncludeRuby)
25
+ def check_exe_tools(iRootDir, iIncludeRuby, iNeedBinaryCompilation)
25
26
  rSuccess = true
26
27
 
27
28
  if (iIncludeRuby)
28
29
  # We need allinoneruby
29
30
  if (Gem.find_files('allinoneruby').empty?)
30
- logErr "Need to have allinoneruby gem to release including Ruby.\nPlease install allinoneruby gem (gem install allinoneruby)."
31
+ log_err "Need to have allinoneruby gem to release including Ruby.\nPlease install allinoneruby gem (gem install allinoneruby)."
31
32
  rSuccess = false
32
33
  end
33
34
  end
@@ -38,14 +39,14 @@ module RubyPackager
38
39
  # Create the binary.
39
40
  # This is called when the core library has been copied in the release directory.
40
41
  #
41
- # Parameters:
42
+ # Parameters::
42
43
  # * *iRootDir* (_String_): Root directory
43
44
  # * *iReleaseDir* (_String_): Release directory
44
45
  # * *iIncludeRuby* (_Boolean_): Do we include Ruby in the release ?
45
46
  # * *iExecutableInfo* (<em>map<Symbol,Object></em>): The executable information
46
- # Return:
47
+ # Return::
47
48
  # * _Boolean_: Success ?
48
- def createBinary(iRootDir, iReleaseDir, iIncludeRuby, iExecutableInfo)
49
+ def create_binary(iRootDir, iReleaseDir, iIncludeRuby, iExecutableInfo)
49
50
  rSuccess = true
50
51
 
51
52
  lBinSubDir = "Launch/#{RUBY_PLATFORM}/bin"
@@ -55,21 +56,21 @@ module RubyPackager
55
56
  # First create the binary containing all ruby
56
57
  lBinDir = "#{iReleaseDir}/#{lBinSubDir}"
57
58
  FileUtils::mkdir_p(lBinDir)
58
- changeDir(lBinDir) do
59
+ change_dir(lBinDir) do
59
60
  lCmd = "allinoneruby #{lBinName}"
60
61
  rSuccess = system(lCmd)
61
62
  if (!rSuccess)
62
- logErr "Error while executing \"#{lCmd}\""
63
+ log_err "Error while executing \"#{lCmd}\""
63
64
  end
64
65
  end
65
66
  end
66
67
  if (rSuccess)
67
68
  # Then create the real executable
68
69
  # Generate the Shell file that launches everything for Linux
69
- File.open("#{iReleaseDir}/#{iExecutableInfo[:ExeName]}", 'w') do |oFile|
70
+ File.open("#{iReleaseDir}/#{iExecutableInfo[:exe_name]}", 'w') do |oFile|
70
71
  oFile << "\#!/bin/sh
71
72
  \#--
72
- \# Copyright (c) 2009-2010 Muriel Salvan (murielsalvan@users.sourceforge.net)
73
+ \# Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
73
74
  \# Licensed under the terms specified in LICENSE file. No warranty is provided.
74
75
  \#++
75
76
 
@@ -94,14 +95,14 @@ then
94
95
  \# Set the environment correctly to execute Ruby from the extracted dir
95
96
  export LD_LIBRARY_PATH=`pwd`/tempruby/bin:`pwd`/tempruby/lib:`pwd`/tempruby/lib/lib1:`pwd`/tempruby/lib/lib2:`pwd`/tempruby/lib/lib3:`pwd`/tempruby/lib/lib4:${LD_LIRARY_PATH}
96
97
  export RUBYOPT=
97
- ./tempruby/bin/ruby -w #{iExecutableInfo[:StartupRBFile]}
98
+ ./tempruby/bin/ruby -w #{iExecutableInfo[:startup_rb_file]}
98
99
  else
99
100
  echo 'Ruby found on current platform. Use it directly.'
100
- ruby -w #{iExecutableInfo[:StartupRBFile]}
101
+ ruby -w #{iExecutableInfo[:startup_rb_file]}
101
102
  fi
102
103
  "
103
104
  end
104
- File.chmod(0755, "#{iReleaseDir}/#{iExecutableInfo[:ExeName]}")
105
+ File.chmod(0755, "#{iReleaseDir}/#{iExecutableInfo[:exe_name]}")
105
106
  end
106
107
 
107
108
  return rSuccess
@@ -0,0 +1,59 @@
1
+ #--
2
+ # Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ module RubyPackager
7
+
8
+ module Installers
9
+
10
+ class NSIS
11
+
12
+ # Check that we can use this installer
13
+ #
14
+ # Return::
15
+ # * _Boolean_: Can we use this installer ?
16
+ def check_tools
17
+ rSuccess = true
18
+
19
+ # Check that makensis is present
20
+ if (!system('makensis /VERSION'))
21
+ log_err "Need to have MakeNSIS installed in the system PATH to create installer.\nPlease download and install MakeNSIS in the PATH from http://nsis.sourceforge.net/Main_Page"
22
+ rSuccess = false
23
+ end
24
+
25
+ return rSuccess
26
+ end
27
+
28
+ # Create the installer with everything in the release directory.
29
+ #
30
+ # Parameters::
31
+ # * *iRootDir* (_String_): The Root directory
32
+ # * *iReleaseDir* (_String_): The release directory (all files to put in the installer are there)
33
+ # * *iInstallerDir* (_String_): The directory where the installer has to be put
34
+ # * *iVersion* (_String_): Release version
35
+ # * *iReleaseInfo* (_ReleaseInfo_): Release info
36
+ # Return::
37
+ # * _String_: File name to distribute, or nil in case of failure
38
+ def create_installer(iRootDir, iReleaseDir, iInstallerDir, iVersion, iReleaseInfo)
39
+ rFileName = nil
40
+
41
+ if (iReleaseInfo.install_info[:nsis_file_name] == nil)
42
+ log_err 'No NSISFileName specified among the Install description.'
43
+ else
44
+ lNSISOK = system("makensis /DVERSION=#{iVersion} \"/DRELEASEDIR=#{iReleaseDir.gsub(/\//,'\\')}\" \"#{iRootDir.gsub(/\//,'\\')}\\#{iReleaseInfo.install_info[:nsis_file_name].gsub(/\//,'\\')}\"")
45
+ if (lNSISOK)
46
+ lInstallerDir = File.dirname("#{iRootDir}/#{iReleaseInfo.install_info[:nsis_file_name]}")
47
+ rFileName = "#{iReleaseInfo.install_info[:installer_name]}_#{iVersion}_setup.exe"
48
+ FileUtils.mv("#{lInstallerDir}/setup.exe", "#{iInstallerDir}/#{rFileName}")
49
+ end
50
+ end
51
+
52
+ return rFileName
53
+ end
54
+
55
+ end
56
+
57
+ end
58
+
59
+ end
@@ -0,0 +1,171 @@
1
+ #--
2
+ # Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ # This file prepares a win32 distribution on mingw32 architecture
7
+
8
+ # Require needed to generate the temporary ruby file that produces the executable
9
+ require 'tmpdir'
10
+
11
+ module RubyPackager
12
+
13
+ class PlatformReleaser
14
+
15
+ PLATFORM_DIR = File.dirname(__FILE__)
16
+
17
+ # Check if the tools we will use to generate an executable are present
18
+ #
19
+ # Parameters::
20
+ # * *iRootDir* (_String_): Root directory
21
+ # * *iIncludeRuby* (_Boolean_): Do we include Ruby in the release ?
22
+ # * *iNeedBinaryCompilation* (_Boolean_): Do we need to compile RB files into a binary executable ?
23
+ # Return::
24
+ # * _Boolean_: Are tools correctly useable ?
25
+ def check_exe_tools(iRootDir, iIncludeRuby, iNeedBinaryCompilation)
26
+ rSuccess = true
27
+
28
+ if (iIncludeRuby)
29
+ # We need allinoneruby
30
+ if (Gem.find_files('allinoneruby').empty?)
31
+ log_err "Need to have allinoneruby gem to release including Ruby.\nPlease install allinoneruby gem (gem install allinoneruby)."
32
+ rSuccess = false
33
+ end
34
+ end
35
+ if (iNeedBinaryCompilation)
36
+ # Check that edicon is present
37
+ if (!File.exists?("#{PLATFORM_DIR}/edicon/edicon.exe"))
38
+ log_err "Need to have edicon.exe installed in #{PLATFORM_DIR}/edicon to set a Windows executable's icon.\nPlease install edicon, part of Ocra Gem (gem install ocra), and copy from the Gem directory (ocra-1.1.1/share/ocra/edicon.exe) to #{PLATFORM_DIR}/edicon/edicon.exe."
39
+ rSuccess = false
40
+ end
41
+ # Check that exerb is present
42
+ if (!system('exerb.bat --version'))
43
+ log_err "Need to have exerb installed in the system PATH to create a Windows executable.\nPlease download and install exerb from http://exerb.sourceforge.jp/index.en.html"
44
+ rSuccess = false
45
+ end
46
+ end
47
+
48
+ return rSuccess
49
+ end
50
+
51
+ # Create the binary.
52
+ # This is called when the core library has been copied in the release directory.
53
+ #
54
+ # Parameters::
55
+ # * *iRootDir* (_String_): Root directory
56
+ # * *iReleaseDir* (_String_): Release directory
57
+ # * *iIncludeRuby* (_Boolean_): Do we include Ruby in the release ?
58
+ # * *iExecutableInfo* (<em>map<Symbol,Object></em>): The executable information
59
+ # Return::
60
+ # * _Boolean_: Success ?
61
+ def create_binary(iRootDir, iReleaseDir, iIncludeRuby, iExecutableInfo)
62
+ rSuccess = true
63
+
64
+ lBinSubDir = "Launch/#{RUBY_PLATFORM}/bin"
65
+ lRubyBaseBinName = nil
66
+ lRubyLaunchCmd = nil
67
+ if (iExecutableInfo[:terminal_application])
68
+ lRubyBaseBinName = 'ruby'
69
+ lRubyLaunchCmd = 'ruby'
70
+ else
71
+ lRubyBaseBinName = 'rubyw'
72
+ lRubyLaunchCmd = 'start rubyw'
73
+ end
74
+ lBinName = "#{lRubyBaseBinName}-#{RUBY_VERSION}.exe"
75
+ if (iIncludeRuby)
76
+ # First create the binary containing all ruby
77
+ lBinDir = "#{iReleaseDir}/#{lBinSubDir}"
78
+ FileUtils::mkdir_p(lBinDir)
79
+ change_dir(lBinDir) do
80
+ lCmd = nil
81
+ if (iExecutableInfo[:terminal_application])
82
+ lCmd = "allinoneruby.bat #{lBinName}"
83
+ else
84
+ lCmd = "allinoneruby.bat --rubyw #{lBinName}"
85
+ end
86
+ rSuccess = system(lCmd)
87
+ if (!rSuccess)
88
+ log_err "Error while executing \"#{lCmd}\""
89
+ end
90
+ end
91
+ end
92
+ if (rSuccess)
93
+ # Then create the real executable
94
+ # Generate the Ruby file that launches everything for Windows
95
+ lTempFileName = "#{Dir.tmpdir}/EXE_#{RUBY_PLATFORM}_Gen.rb"
96
+ File.open(lTempFileName, 'w') do |oFile|
97
+ oFile << "
98
+ \#--
99
+ \# Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
100
+ \# Licensed under the terms specified in LICENSE file. No warranty is provided.
101
+ \#++
102
+
103
+ \# This file is generated by RubyPackager for Windows (mingw32).
104
+ \# This is a temporary file that should not exist anymore once the release has been done.
105
+
106
+ \# This file has to launch the correct binary. There can be several binaries dependending on the configuration.
107
+ \# This is the file that will be created as the executable to launch.
108
+
109
+ module RubyPackager
110
+
111
+ \# Execute a shell command
112
+ \#
113
+ \# Parameters::
114
+ \# * *iCmd* (_String_): The shell command to execute
115
+ \# Return::
116
+ \# * _Boolean_: Success ?
117
+ def self.shellExecute(iCmd)
118
+ puts \"> \#{iCmd}\"
119
+ rSuccess = system(iCmd)
120
+
121
+ if (!rSuccess)
122
+ puts \"Error while executing '\#{iCmd}'\"
123
+ end
124
+
125
+ return rSuccess
126
+ end
127
+
128
+ end
129
+
130
+ \# Test if Ruby is installed
131
+ lSuccess = false
132
+ lCurrentDir = Dir.getwd
133
+ if (system('#{lRubyBaseBinName} --version'))
134
+ \# Launch directly
135
+ puts \"Ruby found in environment. Using it directly.\"
136
+ lSuccess = RubyPackager::shellExecute(\"#{lRubyLaunchCmd} -w \\\"\#{lCurrentDir}/#{iExecutableInfo[:startup_rb_file]}\\\" \#{ARGV.join(' ')}\")
137
+ end
138
+ if (!lSuccess)
139
+ \# Use allinoneruby
140
+ puts \"Ruby not found in environment. Using shipped Ruby.\"
141
+ lSuccess = RubyPackager::shellExecute(\"start \\\"Title\\\" \\\"\#{lCurrentDir}/#{lBinSubDir}/#{lBinName}\\\" \\\"\#{lCurrentDir}/#{iExecutableInfo[:startup_rb_file]}\\\" \#{ARGV.join(' ')}\")
142
+ if (!lSuccess)
143
+ puts 'Unable to execute the application. Please reinstall it.'
144
+ puts 'Hit enter to quit.'
145
+ $stdin.gets
146
+ end
147
+ end
148
+ "
149
+ end
150
+ change_dir(iReleaseDir) do
151
+ rSuccess = system("exerb.bat -o #{iExecutableInfo[:exe_name]}.exe #{lTempFileName}")
152
+ end
153
+ if (rSuccess)
154
+ File.unlink(lTempFileName)
155
+ # And set its icon
156
+ lEdiconCmd = "#{PLATFORM_DIR}/edicon/edicon.exe #{iReleaseDir}/#{iExecutableInfo[:exe_name]}.exe #{iRootDir}/#{iExecutableInfo[:icon_name]}"
157
+ rSuccess = system(lEdiconCmd)
158
+ if (!rSuccess)
159
+ log_err "Error while executing \"#{lEdiconCmd}\""
160
+ end
161
+ else
162
+ log_err "Error while executing \"exerb.bat -o #{iExecutableInfo[:exe_name]}.exe #{lTempFileName}\""
163
+ end
164
+ end
165
+
166
+ return rSuccess
167
+ end
168
+
169
+ end
170
+
171
+ end