ocran 1.3.18 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.txt +309 -292
  3. data/LICENSE.txt +22 -22
  4. data/README.md +549 -533
  5. data/exe/ocran +5 -5
  6. data/ext/extconf.rb +15 -0
  7. data/lib/ocran/build_constants.rb +16 -16
  8. data/lib/ocran/build_facade.rb +17 -17
  9. data/lib/ocran/build_helper.rb +110 -105
  10. data/lib/ocran/command_output.rb +22 -22
  11. data/lib/ocran/dir_builder.rb +162 -0
  12. data/lib/ocran/direction.rb +636 -458
  13. data/lib/ocran/file_path_set.rb +69 -69
  14. data/lib/ocran/gem_spec_queryable.rb +172 -172
  15. data/lib/ocran/host_config_helper.rb +57 -44
  16. data/lib/ocran/inno_setup_script_builder.rb +111 -111
  17. data/lib/ocran/launcher_batch_builder.rb +85 -85
  18. data/lib/ocran/library_detector.rb +61 -61
  19. data/lib/ocran/library_detector_posix.rb +55 -0
  20. data/lib/ocran/option.rb +323 -273
  21. data/lib/ocran/refine_pathname.rb +104 -104
  22. data/lib/ocran/runner.rb +115 -105
  23. data/lib/ocran/runtime_environment.rb +46 -46
  24. data/lib/ocran/stub_builder.rb +298 -264
  25. data/lib/ocran/version.rb +5 -5
  26. data/lib/ocran/windows_command_escaping.rb +15 -15
  27. data/lib/ocran.rb +7 -7
  28. data/share/ocran/lzma.exe +0 -0
  29. data/src/Makefile +75 -0
  30. data/src/edicon.c +161 -0
  31. data/src/error.c +100 -0
  32. data/src/error.h +66 -0
  33. data/src/inst_dir.c +334 -0
  34. data/src/inst_dir.h +157 -0
  35. data/src/lzma/7zTypes.h +529 -0
  36. data/src/lzma/Compiler.h +43 -0
  37. data/src/lzma/LzmaDec.c +1363 -0
  38. data/src/lzma/LzmaDec.h +236 -0
  39. data/src/lzma/Precomp.h +10 -0
  40. data/src/script_info.c +246 -0
  41. data/src/script_info.h +7 -0
  42. data/src/stub.c +133 -0
  43. data/src/stub.manifest +29 -0
  44. data/src/stub.rc +3 -0
  45. data/src/system_utils.c +1002 -0
  46. data/src/system_utils.h +209 -0
  47. data/src/system_utils_posix.c +500 -0
  48. data/src/unpack.c +574 -0
  49. data/src/unpack.h +85 -0
  50. data/src/vit-ruby.ico +0 -0
  51. metadata +52 -16
  52. data/share/ocran/edicon.exe +0 -0
  53. data/share/ocran/stub.exe +0 -0
  54. data/share/ocran/stubw.exe +0 -0
data/CHANGELOG.txt CHANGED
@@ -1,292 +1,309 @@
1
- === 1.3.18
2
- - Support shipping IRB as .exe File
3
- - Fix SxS error 14001 when loading native extensions (e.g. openssl.so, date_core.so) at runtime. Each .so file may have a companion *.so-assembly.manifest in archdir defining its private SxS assembly; these manifests are now included alongside the .so files. All files in ruby_builtin_dlls/ (DLLs and manifest) are now included rather than the manifest alone.
4
- - Support for Ruby 4.0.
5
- - Include cacert.pem in the exe file to avoid SSL certificate verification issues.
6
- - Use wide (UTF-16) Win32 APIs throughout system_utils.c (CreateFileW, CreateDirectoryW, DeleteFileW, FindFirstFileW/FindNextFileW, RemoveDirectoryW, GetFileAttributesW, MoveFileExW, GetTempPathW, CreateProcessW) to correctly handle multibyte (UTF-8) file and directory paths in the stub.
7
- - Add Windows Authenticode code signing support. The stub now detects and skips PE security directory entries when searching for the OCRAN signature, so signed executables unpack correctly. Build time clears invalid security directory entries from PE headers to allow subsequent signing.
8
- - Fix incorrect buffer size passed to GetModuleFileNameW in LibraryDetector (passed bytesize instead of character count).
9
- - Fix pointer subtraction underflow in stub unpacker when a tampered offset places head past tail.
10
- - Add bounds checking for icon file entries in edicon to prevent out-of-bounds reads from malformed .ico files.
11
- - Support for Ruby 3.2 and above. Drop ruby 3.0 and 3.1 support.
12
- - Suppress user notifications during stub cleanup and log errors to DEBUG output
13
- - Fixes issue where two MessageBox dialogs appeared in GUI mode when a signature was not found.
14
- - No longer create a marker file when the stub fails to delete the installation directory during cleanup.
15
- - stub: During cleanup, switch to a safer working directory before removing the extraction directory.
16
- - stub: Truncate error messages originating from the stub to a fixed maximum length.
17
- - stub: Changed the name of the extraction directory to follow the mkdtemp style. The name is now generated using secure random numbers.
18
- - stub: Disabled path expansion of template characters for additional options passed to the script.
19
- - stub: Changed the script’s working directory switch to use Ruby’s `-C` option.
20
-
21
- === 1.3.17
22
- - Modified `rake test` to no longer build stubs during test execution. Use `rake build_stub` when stub generation is necessary.
23
- - New `rake build` task as a unified build entry point, delegating to `build_stub`.
24
- - Updated GitHub Actions and internal scripts to use `rake build` instead of `rake build_stub`.
25
- - Add full support for multibyte (UTF-8) names across executables, scripts, and resources. Requires Windows 10 version 1903 or later.
26
- - Added UTF-8 manifest to stub.exe to enable UTF-8 support in ANSI API calls.
27
- - Update Bundler from 2.5.10 to 2.5.23. This is the last Bundler version officially supporting Ruby 3.0.
28
- - Added `bin/setup` and `bin/console` scripts for development (both Bash and Windows .bat versions).
29
- - `bin/setup` now installs dependencies and builds stub executables automatically.
30
- - Improved `spec.files` to explicitly include README, LICENSE, and CHANGELOG.
31
- - Introduced a `Development` section in the README with setup instructions and Windows shell compatibility.
32
- - Updated copyright year in README and LICENSE.
33
-
34
- === 1.3.16
35
- - Support for Ruby 3.0 and above. Drop ruby 2.6 and 2.7 support.
36
- - At startup, OCRAN no longer automatically removes directories that were previously deployed but couldn't be deleted. This change has been made to enhance security by preventing processes other than the startup process from manipulating temporary files created by them.
37
- - The ability for the stub to launch any script during the unpacking of application files has been removed. This feature was not in use.
38
- - The exit code from the Ruby application is now returned when the stub is terminated.
39
- - The packed data no longer contains redundant directory information.
40
- - Fixed errors in the --debug option.
41
- - Upgraded LZMA decoder to version 22.01
42
- - The directory generation for file extraction has been changed to use unique directory names created with high-resolution timestamps. Additionally, a retry limit for directory creation has been introduced, reducing the risk of infinite loops due to name collisions.
43
- - Implemented variable-length buffer handling for path strings in stub, eliminating the risk of buffer overruns dependent on MAX_PATH.
44
- - In order to reduce security risks during the cleanup process before application termination, we have implemented a safe current directory change from the system directory and the root of the C drive to the user's temporary directory and the directory of the app executable.
45
- - The 'stub' executable has been enhanced for security, ensuring it prevents directory traversal attacks by verifying that path elements do not contain relative notations like '.' or '..'.
46
- - Removed OcranBuilder and split functionality into StubBuilder and InnoSetupBuilder to introduce delayed loading and improve resource efficiency.
47
- - InnoSetup installer now operates independently of stub, launching through its own batch file.
48
- - Moved LibraryDetector to a separate file for modularity and implemented delayed loading with standardized Fiddle usage.
49
- - Update Bundler from 2.4.13 to 2.5.10.
50
- - Fixed issue where the gem.build_complete file was not included in the package due to an incorrect change.
51
- - Changed error output from standard output to standard error (stderr).
52
- - ocransa (Ocran-stand-alone) has been discontinued.
53
- - The implementation of bin/ocran.rb has been refactored and split into multiple files. These files have been relocated to the lib directory.
54
-
55
- === 1.3.15
56
- - Support for Ruby 2.6 and above.
57
- - Properly display errors from InnoSetup.
58
- - Fixed errors when creating an installer using InnoSetup. Previously, installer creation was not possible due to errors related to file sharing, which occurred only on Windows.
59
- - Retrieve the path of runtime DLLs even when the path is long. Note that stubs still do not support long paths, so creating executable files with long paths is not yet possible.
60
- - Fixed bugs in tests. All tests can now be executed.
61
- - Improved the speed of manifest file discovery. This manifest file is only required in the RubyInstaller environment.
62
- - Fixed bugs in the regular expressions of GEM_EXTRA_RE. This allows excluding C source files, etc., from the ocran executable package based on command options.
63
- - Added methods to Ocran::Pathname, making it closer to the implementation of Ruby's Pathname.
64
- - Reimplemented certain parts to match the implementation of Ruby 2.6 era, for compatibility with older Ruby versions. Therefore, the ocran command cannot be executed on Ruby versions earlier than 2.6.
65
-
66
- === 1.3.14
67
- - Add option to suppress or override RUBYOPT environment variable #3 by ccorn90
68
-
69
- === 1.3.13
70
- - Fixed the bug why Innosetup did not run because of missing encode method
71
- - Fix an issue where rubyinstaller did not find the msys path by putting in an empty msys-2.0.dll into msys64/usr/bin/msys-2.0.dll
72
- - compatibility with the tiny_tds gem (see above)
73
- - GitHub builds through github action: making sure you can trust the included binaries.
74
- - Added some samples including the glimmer-libui GUI example. GUI that starts fast.
75
-
76
- === 1.3.12
77
- * Forked from Ocra
78
- * Support Ruby up to 3.2
79
- * Update lzma.exe to version 22.01
80
-
81
- === 1.3.11
82
-
83
- * Support Ruby 2.2-2.7
84
- * Add ruby2_keywords.rb to ignored modules
85
- * Update lzma.exe to version 19.00
86
- * Workaround for warning about deprecated Object#=~
87
- * Use Fiddle instead of Win32API
88
- * Fix for invalid argument to relative_path_from
89
-
90
- === 1.3.10
91
-
92
- * Reduce memory usage while building & compressing (avoids out of
93
- memory issue on really big programs).
94
-
95
- * Compile stub.exe with 32-bit compiler again
96
-
97
- === 1.3.9
98
-
99
- * Support Ruby 2.4.1p111 (include manifest)
100
-
101
- === 1.3.8
102
-
103
- * Use GetModuleFileNameW for DLL detection
104
-
105
- === 1.3.7
106
-
107
- * Workaround for handling of file names and directory name with
108
- non-ASCII characters (e.g. "invalid byte sequence in UTF-8")
109
-
110
- === 1.3.6
111
-
112
- * More robust cleanup of temporary files. Deletes using manual
113
- recursive method instead of using the shell. Will mark files for
114
- later deletion both using Windows (requires Administrator
115
- privileges) and a custom method that will remove old temporary files
116
- when the executable is restarted.
117
-
118
- === 1.3.5
119
-
120
- * Fixes for Ruby 2.2.2p95
121
-
122
- === 1.3.4
123
-
124
- * Workarounds for Ruby 2.1.5
125
-
126
- === 1.3.3
127
-
128
- * Rebuild executables with MinGW GCC 4.8.1-4.
129
-
130
- === 1.3.2
131
-
132
- * Refactored Gemfile handling for better compatibility with Ruby
133
- version.
134
-
135
- === 1.3.1
136
-
137
- * Now includes $LOADED_FEATURES even when script is not run to check
138
- dependencies. This fixes compatability with Ruby 1.9.3 where
139
- rubygems is always loaded.
140
-
141
- * Fixed compatability with Ruby 2.0.0: Temp-path alias in binary
142
- changed to be valid UTF-8 character.
143
-
144
- * README.txt updated related to --no-dep-run (karhatsu).
145
-
146
- * Fixes for Bundler handling (DavidMikeSimon).
147
-
148
- === 1.3.0
149
-
150
- * Fixed some additional corner cases with absolute and relative
151
- require & load paths. Extended test suite to cover a lot more
152
- cases.
153
-
154
- * Now provides a meaningful exit status code (1 on error, 0 on
155
- success). (DavidMikeSimon)
156
-
157
- * New option to _not_ run the script to detect dependencies
158
- (--no-dep-run). (DavidMikeSimon)
159
-
160
- * Bundler support using the --gemfile option. (DavidMikeSimon)
161
-
162
- * Debug mode support in the stub (--debug). Also --debug-extract to
163
- keep extracted files from executable. (DavidMikeSimon)
164
-
165
- * New gem behaviour yet again due to changes in Rubygems. See README
166
- file.
167
-
168
- === 1.2.0
169
-
170
- * Ignore console events (Ctrl-C, Ctrl-Break). Ruby process handles
171
- them anyway and exist, allowing the stub to clean up temporary
172
- files.
173
-
174
- * Temporary memory used for decompression is now freed before the ruby
175
- interpreter is launched by the stub.
176
-
177
- * Progress dialog is no longer displayed when removing temporary
178
- files.
179
-
180
- * Now includes most files from any require'd Rubygem (Now works with
181
- mime-types, oledb and other gems that load additional data files
182
- from the Gem installation). Some files are still ignored
183
- (e.g. Readme's). Use "--no-gem-filter" to make Ocra unconditionally
184
- include all files listed in the Gem specification (Thanks to Jorge
185
- L. Cangas for patch & ideas).
186
-
187
- * NameErrors are now rescued when attempting to load autoloadable
188
- constants. Hopefully resolves issues with ActiveRecord [#28488].
189
-
190
- * Now works if the script changes environment or working directory
191
- while running.
192
-
193
- * Fixed a regression in 1.1.4 when resource files are specified;
194
- directory layout would not be maintained, e.g. when running "ocra
195
- bin/script share/data.dat".
196
-
197
- * Added support for passing arguments to script. Specify argument to
198
- your script after a "--" marker. Arguments will be passed both at
199
- compile time and run time. (#27815)
200
-
201
- * Now works if the source files are located beneath Ruby's
202
- exec_prefix. (#28505)
203
-
204
- === 1.1.4
205
-
206
- * The tempdir marker is now pretty-printed as "<tempdir>" in the
207
- output.
208
-
209
- * Fixed various issues with path and filenames being handled case
210
- sensitive.
211
-
212
- * Now uses config settings for Ruby executable names (should now also
213
- work with ruby installations built with --program-suffix).
214
-
215
- * Supported invoking ocra with an absolute path to the script. Will
216
- assume that the script is in the root of the source hierachy.
217
-
218
- === 1.1.3
219
-
220
- * Use Win32API (provided with Ruby) instead of win32-api (gem).
221
-
222
- * No longer sets GEM_HOME (which would override the default gem
223
- path). Instead sets GEM_PATH. Resolves issues with gems not loading
224
- on Ruby 1.9.
225
-
226
- === 1.1.2
227
-
228
- * Warnings can be disabled using --no-warnings.
229
-
230
- * Fixed not .exe being generated when script calls 'exit'.
231
-
232
- * Path to the generated executable is now avilable to the running
233
- script in the OCRA_EXECUTABLE environment variable.
234
-
235
- * Directories on the command line will now be created.
236
-
237
- * Supports path globs, fx. "ocra script.rb assets/**/*.png". (See
238
- documentation for Ruby's Dir class).
239
-
240
- * Fixed issue with spaces in temporary path (TMP environment).
241
-
242
- * Improved path comparison to ignore case (this is Windows after all)
243
- and be a bit more robust.
244
-
245
- * Added support for RubyGems installed in GEM_HOME (or other part
246
- handled by RubyGems). If not installed in the Ruby hierarchy, they
247
- will now be installed in a directory named 'gemhome' under the
248
- temporary directory.
249
-
250
- === 1.1.1
251
-
252
- * Fixed duplicate entries in the RUBYLIB environment variable.
253
-
254
- * Another slight fix for relative load paths.
255
-
256
- * RUBYOPT is now set to the value it had when OCRA was invoked.
257
-
258
- === 1.1.0
259
-
260
- * Added an icon to the executable. Can be replaced from a .ico file
261
- using the --icon <ico> option.
262
-
263
- * Improved handling of load paths added either from the command line
264
- (ruby -I), RUBYLIB environment variable or during the script (by
265
- modifying $: or $LOAD_PATH).
266
-
267
- * Now automatically detects loaded DLLs through Win32::API. Disable
268
- with --no-autodll.
269
-
270
- === 1.0.3 / 2009-05-25
271
-
272
- * Fixed invokation of executables with spaces in path names (#25966).
273
-
274
- * Fixed inverted handling of --windows & --console (#25974)
275
-
276
- * Fixed installation issue with RubyGems (missing "lib")
277
-
278
- === 1.0.2 / 2009-05-10
279
-
280
- * Added stubw.exe to gem (was missing 1.0.1)
281
-
282
- === 1.0.1 / 2009-05-05
283
-
284
- * Added stub with windows runtime for windowed applications
285
- (e.g. wxRuby) and fixed issue where OCRA would use ruby.exe instead
286
- of rubyw.exe for such programs. [#25774]
287
-
288
- === 1.0.0 / 2009-04-05
289
-
290
- * 1 major enhancement
291
-
292
- * Birthday!
1
+ === 1.4.1
2
+ - Fix kernel_require.rb packed at wrong path when rubygems-update is installed (e.g. via asdf on Linux/macOS). kernel_require.rb is now located relative to the actually-loaded rubygems.rb from $LOADED_FEATURES, falling back to rubylibdir for standard Ruby installations.
3
+
4
+ === 1.4.0
5
+ - Add Linux support: build and run self-extracting ELF executables on Linux. The stub compiles and runs natively on Linux using POSIX APIs.
6
+ - Add macOS support: build and run self-extracting Mach-O executables on macOS.
7
+ - Add `--output-dir` option: output all files to a directory with a platform-appropriate launch script (`.sh` on Linux/macOS, `.bat` on Windows) instead of a single executable.
8
+ - Add `--output-zip` option: same as `--output-dir` but packages the result into a zip archive.
9
+ - Add `--macosx-bundle` option: wrap the macOS executable in a `.app` bundle with a generated `Info.plist`, suitable for Finder, the Dock, and Authenticode-style code signing with `codesign` and `xcrun notarytool`. Use `--bundle-id` to set `CFBundleIdentifier` and `--icon` (`.icns`) to set the bundle icon.
10
+ - Use symlinks for shared library aliases on POSIX (e.g. `libruby.so → libruby.so.4.0`) instead of copying files, matching the layout Ruby expects at runtime.
11
+ - Fix crash on cleanup when a symlink target does not exist: `DeleteRecursively` now uses `lstat` instead of `stat` so dangling symlinks are removed correctly.
12
+ - Publish platform-specific gems for Linux, macOS (ARM and Intel), and Windows so `gem install ocran` selects the right pre-built stub automatically.
13
+ - Publish a source gem (`ruby` platform) with `ext/extconf.rb` so users on unlisted platforms can install by compiling the stub from source. Falls back to plain `make` if `ridk exec make` is unavailable on Windows.
14
+ - CI: add GitHub Actions workflow to build and publish per-platform gems on tag push.
15
+ - CI: run the packed Linux executable inside a Debian Docker container to verify cross-distro portability (no Ruby required on target).
16
+ - CI: test against Ruby 3.2, 3.3, 3.4, and 4.0 on Linux, macOS (ARM and Intel), and Windows.
17
+
18
+ === 1.3.18
19
+ - Support shipping IRB as .exe File
20
+ - Fix SxS error 14001 when loading native extensions (e.g. openssl.so, date_core.so) at runtime. Each .so file may have a companion *.so-assembly.manifest in archdir defining its private SxS assembly; these manifests are now included alongside the .so files. All files in ruby_builtin_dlls/ (DLLs and manifest) are now included rather than the manifest alone.
21
+ - Support for Ruby 4.0.
22
+ - Include cacert.pem in the exe file to avoid SSL certificate verification issues.
23
+ - Use wide (UTF-16) Win32 APIs throughout system_utils.c (CreateFileW, CreateDirectoryW, DeleteFileW, FindFirstFileW/FindNextFileW, RemoveDirectoryW, GetFileAttributesW, MoveFileExW, GetTempPathW, CreateProcessW) to correctly handle multibyte (UTF-8) file and directory paths in the stub.
24
+ - Add Windows Authenticode code signing support. The stub now detects and skips PE security directory entries when searching for the OCRAN signature, so signed executables unpack correctly. Build time clears invalid security directory entries from PE headers to allow subsequent signing.
25
+ - Fix incorrect buffer size passed to GetModuleFileNameW in LibraryDetector (passed bytesize instead of character count).
26
+ - Fix pointer subtraction underflow in stub unpacker when a tampered offset places head past tail.
27
+ - Add bounds checking for icon file entries in edicon to prevent out-of-bounds reads from malformed .ico files.
28
+ - Support for Ruby 3.2 and above. Drop ruby 3.0 and 3.1 support.
29
+ - Suppress user notifications during stub cleanup and log errors to DEBUG output
30
+ - Fixes issue where two MessageBox dialogs appeared in GUI mode when a signature was not found.
31
+ - No longer create a marker file when the stub fails to delete the installation directory during cleanup.
32
+ - stub: During cleanup, switch to a safer working directory before removing the extraction directory.
33
+ - stub: Truncate error messages originating from the stub to a fixed maximum length.
34
+ - stub: Changed the name of the extraction directory to follow the mkdtemp style. The name is now generated using secure random numbers.
35
+ - stub: Disabled path expansion of template characters for additional options passed to the script.
36
+ - stub: Changed the script’s working directory switch to use Ruby’s `-C` option.
37
+
38
+ === 1.3.17
39
+ - Modified `rake test` to no longer build stubs during test execution. Use `rake build_stub` when stub generation is necessary.
40
+ - New `rake build` task as a unified build entry point, delegating to `build_stub`.
41
+ - Updated GitHub Actions and internal scripts to use `rake build` instead of `rake build_stub`.
42
+ - Add full support for multibyte (UTF-8) names across executables, scripts, and resources. Requires Windows 10 version 1903 or later.
43
+ - Added UTF-8 manifest to stub.exe to enable UTF-8 support in ANSI API calls.
44
+ - Update Bundler from 2.5.10 to 2.5.23. This is the last Bundler version officially supporting Ruby 3.0.
45
+ - Added `bin/setup` and `bin/console` scripts for development (both Bash and Windows .bat versions).
46
+ - `bin/setup` now installs dependencies and builds stub executables automatically.
47
+ - Improved `spec.files` to explicitly include README, LICENSE, and CHANGELOG.
48
+ - Introduced a `Development` section in the README with setup instructions and Windows shell compatibility.
49
+ - Updated copyright year in README and LICENSE.
50
+
51
+ === 1.3.16
52
+ - Support for Ruby 3.0 and above. Drop ruby 2.6 and 2.7 support.
53
+ - At startup, OCRAN no longer automatically removes directories that were previously deployed but couldn't be deleted. This change has been made to enhance security by preventing processes other than the startup process from manipulating temporary files created by them.
54
+ - The ability for the stub to launch any script during the unpacking of application files has been removed. This feature was not in use.
55
+ - The exit code from the Ruby application is now returned when the stub is terminated.
56
+ - The packed data no longer contains redundant directory information.
57
+ - Fixed errors in the --debug option.
58
+ - Upgraded LZMA decoder to version 22.01
59
+ - The directory generation for file extraction has been changed to use unique directory names created with high-resolution timestamps. Additionally, a retry limit for directory creation has been introduced, reducing the risk of infinite loops due to name collisions.
60
+ - Implemented variable-length buffer handling for path strings in stub, eliminating the risk of buffer overruns dependent on MAX_PATH.
61
+ - In order to reduce security risks during the cleanup process before application termination, we have implemented a safe current directory change from the system directory and the root of the C drive to the user's temporary directory and the directory of the app executable.
62
+ - The 'stub' executable has been enhanced for security, ensuring it prevents directory traversal attacks by verifying that path elements do not contain relative notations like '.' or '..'.
63
+ - Removed OcranBuilder and split functionality into StubBuilder and InnoSetupBuilder to introduce delayed loading and improve resource efficiency.
64
+ - InnoSetup installer now operates independently of stub, launching through its own batch file.
65
+ - Moved LibraryDetector to a separate file for modularity and implemented delayed loading with standardized Fiddle usage.
66
+ - Update Bundler from 2.4.13 to 2.5.10.
67
+ - Fixed issue where the gem.build_complete file was not included in the package due to an incorrect change.
68
+ - Changed error output from standard output to standard error (stderr).
69
+ - ocransa (Ocran-stand-alone) has been discontinued.
70
+ - The implementation of bin/ocran.rb has been refactored and split into multiple files. These files have been relocated to the lib directory.
71
+
72
+ === 1.3.15
73
+ - Support for Ruby 2.6 and above.
74
+ - Properly display errors from InnoSetup.
75
+ - Fixed errors when creating an installer using InnoSetup. Previously, installer creation was not possible due to errors related to file sharing, which occurred only on Windows.
76
+ - Retrieve the path of runtime DLLs even when the path is long. Note that stubs still do not support long paths, so creating executable files with long paths is not yet possible.
77
+ - Fixed bugs in tests. All tests can now be executed.
78
+ - Improved the speed of manifest file discovery. This manifest file is only required in the RubyInstaller environment.
79
+ - Fixed bugs in the regular expressions of GEM_EXTRA_RE. This allows excluding C source files, etc., from the ocran executable package based on command options.
80
+ - Added methods to Ocran::Pathname, making it closer to the implementation of Ruby's Pathname.
81
+ - Reimplemented certain parts to match the implementation of Ruby 2.6 era, for compatibility with older Ruby versions. Therefore, the ocran command cannot be executed on Ruby versions earlier than 2.6.
82
+
83
+ === 1.3.14
84
+ - Add option to suppress or override RUBYOPT environment variable #3 by ccorn90
85
+
86
+ === 1.3.13
87
+ - Fixed the bug why Innosetup did not run because of missing encode method
88
+ - Fix an issue where rubyinstaller did not find the msys path by putting in an empty msys-2.0.dll into msys64/usr/bin/msys-2.0.dll
89
+ - compatibility with the tiny_tds gem (see above)
90
+ - GitHub builds through github action: making sure you can trust the included binaries.
91
+ - Added some samples including the glimmer-libui GUI example. GUI that starts fast.
92
+
93
+ === 1.3.12
94
+ * Forked from Ocra
95
+ * Support Ruby up to 3.2
96
+ * Update lzma.exe to version 22.01
97
+
98
+ === 1.3.11
99
+
100
+ * Support Ruby 2.2-2.7
101
+ * Add ruby2_keywords.rb to ignored modules
102
+ * Update lzma.exe to version 19.00
103
+ * Workaround for warning about deprecated Object#=~
104
+ * Use Fiddle instead of Win32API
105
+ * Fix for invalid argument to relative_path_from
106
+
107
+ === 1.3.10
108
+
109
+ * Reduce memory usage while building & compressing (avoids out of
110
+ memory issue on really big programs).
111
+
112
+ * Compile stub.exe with 32-bit compiler again
113
+
114
+ === 1.3.9
115
+
116
+ * Support Ruby 2.4.1p111 (include manifest)
117
+
118
+ === 1.3.8
119
+
120
+ * Use GetModuleFileNameW for DLL detection
121
+
122
+ === 1.3.7
123
+
124
+ * Workaround for handling of file names and directory name with
125
+ non-ASCII characters (e.g. "invalid byte sequence in UTF-8")
126
+
127
+ === 1.3.6
128
+
129
+ * More robust cleanup of temporary files. Deletes using manual
130
+ recursive method instead of using the shell. Will mark files for
131
+ later deletion both using Windows (requires Administrator
132
+ privileges) and a custom method that will remove old temporary files
133
+ when the executable is restarted.
134
+
135
+ === 1.3.5
136
+
137
+ * Fixes for Ruby 2.2.2p95
138
+
139
+ === 1.3.4
140
+
141
+ * Workarounds for Ruby 2.1.5
142
+
143
+ === 1.3.3
144
+
145
+ * Rebuild executables with MinGW GCC 4.8.1-4.
146
+
147
+ === 1.3.2
148
+
149
+ * Refactored Gemfile handling for better compatibility with Ruby
150
+ version.
151
+
152
+ === 1.3.1
153
+
154
+ * Now includes $LOADED_FEATURES even when script is not run to check
155
+ dependencies. This fixes compatability with Ruby 1.9.3 where
156
+ rubygems is always loaded.
157
+
158
+ * Fixed compatability with Ruby 2.0.0: Temp-path alias in binary
159
+ changed to be valid UTF-8 character.
160
+
161
+ * README.txt updated related to --no-dep-run (karhatsu).
162
+
163
+ * Fixes for Bundler handling (DavidMikeSimon).
164
+
165
+ === 1.3.0
166
+
167
+ * Fixed some additional corner cases with absolute and relative
168
+ require & load paths. Extended test suite to cover a lot more
169
+ cases.
170
+
171
+ * Now provides a meaningful exit status code (1 on error, 0 on
172
+ success). (DavidMikeSimon)
173
+
174
+ * New option to _not_ run the script to detect dependencies
175
+ (--no-dep-run). (DavidMikeSimon)
176
+
177
+ * Bundler support using the --gemfile option. (DavidMikeSimon)
178
+
179
+ * Debug mode support in the stub (--debug). Also --debug-extract to
180
+ keep extracted files from executable. (DavidMikeSimon)
181
+
182
+ * New gem behaviour yet again due to changes in Rubygems. See README
183
+ file.
184
+
185
+ === 1.2.0
186
+
187
+ * Ignore console events (Ctrl-C, Ctrl-Break). Ruby process handles
188
+ them anyway and exist, allowing the stub to clean up temporary
189
+ files.
190
+
191
+ * Temporary memory used for decompression is now freed before the ruby
192
+ interpreter is launched by the stub.
193
+
194
+ * Progress dialog is no longer displayed when removing temporary
195
+ files.
196
+
197
+ * Now includes most files from any require'd Rubygem (Now works with
198
+ mime-types, oledb and other gems that load additional data files
199
+ from the Gem installation). Some files are still ignored
200
+ (e.g. Readme's). Use "--no-gem-filter" to make Ocra unconditionally
201
+ include all files listed in the Gem specification (Thanks to Jorge
202
+ L. Cangas for patch & ideas).
203
+
204
+ * NameErrors are now rescued when attempting to load autoloadable
205
+ constants. Hopefully resolves issues with ActiveRecord [#28488].
206
+
207
+ * Now works if the script changes environment or working directory
208
+ while running.
209
+
210
+ * Fixed a regression in 1.1.4 when resource files are specified;
211
+ directory layout would not be maintained, e.g. when running "ocra
212
+ bin/script share/data.dat".
213
+
214
+ * Added support for passing arguments to script. Specify argument to
215
+ your script after a "--" marker. Arguments will be passed both at
216
+ compile time and run time. (#27815)
217
+
218
+ * Now works if the source files are located beneath Ruby's
219
+ exec_prefix. (#28505)
220
+
221
+ === 1.1.4
222
+
223
+ * The tempdir marker is now pretty-printed as "<tempdir>" in the
224
+ output.
225
+
226
+ * Fixed various issues with path and filenames being handled case
227
+ sensitive.
228
+
229
+ * Now uses config settings for Ruby executable names (should now also
230
+ work with ruby installations built with --program-suffix).
231
+
232
+ * Supported invoking ocra with an absolute path to the script. Will
233
+ assume that the script is in the root of the source hierachy.
234
+
235
+ === 1.1.3
236
+
237
+ * Use Win32API (provided with Ruby) instead of win32-api (gem).
238
+
239
+ * No longer sets GEM_HOME (which would override the default gem
240
+ path). Instead sets GEM_PATH. Resolves issues with gems not loading
241
+ on Ruby 1.9.
242
+
243
+ === 1.1.2
244
+
245
+ * Warnings can be disabled using --no-warnings.
246
+
247
+ * Fixed not .exe being generated when script calls 'exit'.
248
+
249
+ * Path to the generated executable is now avilable to the running
250
+ script in the OCRA_EXECUTABLE environment variable.
251
+
252
+ * Directories on the command line will now be created.
253
+
254
+ * Supports path globs, fx. "ocra script.rb assets/**/*.png". (See
255
+ documentation for Ruby's Dir class).
256
+
257
+ * Fixed issue with spaces in temporary path (TMP environment).
258
+
259
+ * Improved path comparison to ignore case (this is Windows after all)
260
+ and be a bit more robust.
261
+
262
+ * Added support for RubyGems installed in GEM_HOME (or other part
263
+ handled by RubyGems). If not installed in the Ruby hierarchy, they
264
+ will now be installed in a directory named 'gemhome' under the
265
+ temporary directory.
266
+
267
+ === 1.1.1
268
+
269
+ * Fixed duplicate entries in the RUBYLIB environment variable.
270
+
271
+ * Another slight fix for relative load paths.
272
+
273
+ * RUBYOPT is now set to the value it had when OCRA was invoked.
274
+
275
+ === 1.1.0
276
+
277
+ * Added an icon to the executable. Can be replaced from a .ico file
278
+ using the --icon <ico> option.
279
+
280
+ * Improved handling of load paths added either from the command line
281
+ (ruby -I), RUBYLIB environment variable or during the script (by
282
+ modifying $: or $LOAD_PATH).
283
+
284
+ * Now automatically detects loaded DLLs through Win32::API. Disable
285
+ with --no-autodll.
286
+
287
+ === 1.0.3 / 2009-05-25
288
+
289
+ * Fixed invokation of executables with spaces in path names (#25966).
290
+
291
+ * Fixed inverted handling of --windows & --console (#25974)
292
+
293
+ * Fixed installation issue with RubyGems (missing "lib")
294
+
295
+ === 1.0.2 / 2009-05-10
296
+
297
+ * Added stubw.exe to gem (was missing 1.0.1)
298
+
299
+ === 1.0.1 / 2009-05-05
300
+
301
+ * Added stub with windows runtime for windowed applications
302
+ (e.g. wxRuby) and fixed issue where OCRA would use ruby.exe instead
303
+ of rubyw.exe for such programs. [#25774]
304
+
305
+ === 1.0.0 / 2009-04-05
306
+
307
+ * 1 major enhancement
308
+
309
+ * Birthday!