Compiler ruby script en fichier exe?
Est-il possible de compiler un script ruby dans une .exe sur Windows? J'ai cherché partout et j'ai essayé le suivant (Il a regardé comme RubyScript2EXE, les Chaussures et la Caisse tout semblait mort ou abandonné.):
Je suis en utilisant Ruby 1.8.7 sur Windows 7 Ultimate (64 bits.) à partir d'un système propre, je fais ceci:
- Installer RubyInstaller 1.8.7-p358 de rubyinstaller.org
- gem install watir
- gem install ocra
- git clone git://github.com/snaury/exerb-mingw.git
- cd exerb-mingw
- ruby setup.rb
J'ai un script assez simple qui ne ce:
require 'rubygems'
require 'watir'
browser = Watir::Browser.new
browser.goto 'http://slashdot.org'
Quand je lance Ocra je ne reçois pas tous les messages d'erreur et rien ne se passe:
ocra --output test.exe test.rb
=== Loading script to check dependencies
Exerb semble être une meilleure solution, car il compile à la rbc, et il en fait de faire quelque chose:
ruby -r exerb/mkexy test.rb
# Window pops up and after I close it it writes out test.exy
C:\Users\jonathan\dev\Citation>exerb test.exy
C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:146:in `add_file_entry': test.
exy: no such file -- C:/Ruby187/lib/ruby/gems/1.8/gems/win32-api-1.4.8-x86-mingw32/lib/win32/ruby18/win32/api.so (RuntimeError)
from C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:86:in `create_archive'
from C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:85:in `each'
from C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:85:in `create_archive'
from C:/Ruby187/bin/exerb.bat:67:in `main'
from C:/Ruby187/bin/exerb.bat:196
Donc il ne peut pas trouver win32/api.. Quand je regarde dans C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb il semble comme des pierres précieuses ne sont pas dans le chemin de recherche:
DIR: C:/Users/jonathan/dev/Citation
DIR: C:/Ruby187/lib/ruby/site_ruby/1.8
DIR: C:/Ruby187/lib/ruby/site_ruby/1.8/i386-msvcrt
DIR: C:/Ruby187/lib/ruby/site_ruby
DIR: C:/Ruby187/lib/ruby/vendor_ruby/1.8
DIR: C:/Ruby187/lib/ruby/vendor_ruby/1.8/i386-msvcrt
DIR: C:/Ruby187/lib/ruby/vendor_ruby
DIR: C:/Ruby187/lib/ruby/1.8
DIR: C:/Ruby187/lib/ruby/1.8/i386-mingw32
DIR: .
Donc après creuser autour, j'ai trouvé, vous pouvez ajouter des chemins de recherche dans le exy fichier comme ceci:
path:
- C:/Ruby187/lib/ruby/gems/
- C:/Ruby187/lib/ruby/gems/1.8
- C:/Ruby187/lib/ruby/gems/1.8/gems
Après cela, il ne le montrent ces chemins dans search_path, mais il me donne toujours la même erreur. Évidemment, il doit y avoir un moyen d'obtenir rubygems chemins pour être inclus dans le exy?
Alors, comment quelqu'un de construire un .exe sur Windows ces jours-ci?
J'ai fait quelques progrès avec Exerb, j'ai découvert que vous pouvez exécuter mkexy avec l'-rrubygems option de ce pull. Et cela fonctionne très bien pour la plupart des rubis projets. Je l'ai essayé pendant quelques scripts ruby qui utilisent un certain nombre de différentes bibliothèques sans problèmes. Par exemple:
mkexy -rrubygems test.rb
exerb test.exy
test.exe === WORKS!
Malheureusement, il ne fonctionne pas pour watir. Quand je lance une .exe construit avec watir je reçois le texte suivant:
s4t-utils/claims.rb:24:in `user_is_bewildered': Error in the default values: :br
owser la valeur doit être l'un des 'safari', 'firefox', ou "ie", et " n'a pas l'air de r
vol. (StandardError)
Avez-vous vu une console engendré par Ocra? Si vous avez compilé un .rb au lieu d'un .rbw vous devriez avoir vu un seul.
En fait je n'ai rien vu, pas de fenêtre, rien. Peut-être qu'il a sauté le message d'erreur mentionné dans la johnallen.nous lien et puis il est mort? Je vais expérimenter davantage avec ocra demain et mise à jour de cette question.
Mise à jour rapide: j'ai essayé ocra pour 1.9.3, pas de chance. Aussi, il semble comme il se passe des choses bizarres avec elle. Comme, par exemple, j'ai changé le code pour charger "google.com" et il est encore ouvert, c'est à dire avec de Slashdot.
J'ai fait quelques progrès avec Exerb, cette page (en Japonais) ([lien]up-cat.net/?page=wxRuby%20%2B%20Exerb%202009[/lien]) mentionne l'utilisation de -rrubygems comme une option pour mkexy. J'ai essayé et ça fonctionne très bien! Il a généré l' .exe fichier de l'amende juste. Cependant, lorsque j'essaie de le lancer, j'obtiens l'erreur:
s4t-utils/claims.rb:24:in
user_is_bewildered': Erreur dans les valeurs par défaut: :br owser la valeur doit être l'un des 'safari', 'firefox', ou "ie", et " n'a pas l'air de r vol. (StandardError)`OriginalL'auteur Jonathan Jeffus | 2012-04-03
Vous devez vous connecter pour publier un commentaire.
https://github.com/rdp/ruby_tutorials_core/wiki/ruby-talk-faq#wiki-ruby_to_exe a une liste d'entre eux à un moment.
OriginalL'auteur
Je crois que j'ai trouvé la réponse! Le message d'erreur manquant win32/api.si c'est parce que mkexy est la création d'une défaillance de exy fichier. Vérification de la ligne 303 on dirait qu'il met en forme de manière incorrecte. J'ai corrigé:
Et maintenant ça fonctionne. Quand je le lance j'obtiens toujours le message au sujet de "l'utilisateur est déconcerté". La solution à ce problème est d'ajouter:
pour le script. Ensuite, il ya encore quelques bibliothèques manquantes que exerb n'est pas de l'ajouter. Je n'ai pas encore appris comment pour les faire apparaître, mais vous pouvez simplement les copier dans le fichier exe du chemin, et cela fonctionne.
Problème disparaît et le script s'exécute! Aussi, vous pouvez utiliser UPX pour il pack.
upx-les meilleures test.exe
Il devient un fichier de 500 ko! Avec UPX + extra ce truc l'ensemble de l'application serait un simple 650kb. Pas de script j'ai pu faire avec gombo a été de moins de 1 mo. Ne pas mentionner le fait que c'est vraiment de buggy et de feuilles .rb fichiers dans des emplacements aléatoires si elle se bloque.
Je pense qu'avec quelques réglages de l' .exy fichier que je peux faire inclure tous les fichiers. Je vais mettre à jour cette question avec la réponse si je le trouve.
OriginalL'auteur
Selon l'Ocra de la documentation, vous pouvez empêcher l'exécution de votre application lors de ocra compilation en cochant la
Ocra
constante:Peut-être cela aidera à obtenir par le biais de la compilation.
OriginalL'auteur
Ruby est tellement léger que je n'ai jamais l'esprit de l'installer sur un autre système. Je peux voir vouloir éviter de traiter les devkits et autres joyeusetés, mais vous pouvez créer une image et la copie qui autour avec quelques modifications mineures de l'environnement du système.
OriginalL'auteur
Je cherchais la même chose et août 2014, c'est le meilleur que j'ai pu trouver:
Ce lien a une belle histoire sur les principaux projets qui ne/ne ou a contribué autrement:
https://www.ruby-toolbox.com/categories/packaging_to_executables
Aussi loin que je peux voir, il y a deux principales, OCRA (fonctionne seulement sur windows) et Releasy (basé sur OCRA mais fonctionne sur mac et linux aussi loin que je peux dire)
https://github.com/larsch/ocra/
https://github.com/Spooner/releasy/
OriginalL'auteur