REBOL stand-alone applications?
[1/3] from: newsletters::scanzoni::com at: 3-Aug-2000 8:21
I would like to be able to put together an client side standalone
application that uses REBOL - but
I do not want to require the user to download the REBOL and see the scripts
that make up the application.
Is it possible to create a REBOL app that completely encapsulates the REBOL
engine and hides the script(s)....
And if so, how?
- Scanzoni
[2/3] from: kracik:mbox:dkm:cz at: 4-Aug-2000 17:46
This is a multi-part message in MIME format.
--------------AA884A8894E2DC0069875E81
Content-Type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: 7bit
Hi,
There's a possibility to append your script after the REBOL executable,
at least Windows loader does not complain. But you must then run REBOL
with a long command line from a shortcut, not just rebol.exe.
First, make a directory, copy REBOL.exe, hide-script.r and the script
you want to hide (I use a random example dancelady.r) to that
directory. Then run hide-script.r - it will create a modified REBOL
executable and print a command line - copy it and paste into some
shortcut.
You can then delete dancelady.r file from disk - modified REBOL will
still run it.
Scripts and example shortcut (renamed, because Netscape Messenger
tries to follow it) are attached.
Hope this helps,
--
Michal Kracik
[newsletters--scanzoni--com] wrote:
> I would like to be able to put together an client side standalone
> application that uses REBOL - but
<<quoted lines omitted: 4>>
> And if so, how?
> - Scanzoni
--------------AA884A8894E2DC0069875E81
Content-Type: text/plain; charset=iso-8859-2;
name="dancelady.r"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline;
filename="dancelady.r"
REBOL [
TITLE: "The Dance Lady"
AUTHOR: "Ralph Roberts, =A92000"
DATE: "13-Jan-2000"
PURPOSE: "console animation demo"
FILE: %dancelady.r]
print newline
print "^(1B)[10CPresenting the exotic"
print "^(1B)[10C MS. ASCII REBOLI"
print newline
print "^(1B)[12C .###. "
print "^(1B)[12C _#*_*#_) "
print "^(1B)[12C--(--/__\------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------/_/------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------\_\------"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C (_#*_*#_ "
print "^(1B)[12C-----/__\-)----"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C _#*_*#_) "
print "^(1B)[12C--(--/__\------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------/_/------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------\_\------"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C (_#*_*#_ "
print "^(1B)[12C-----/__\-)----"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C _#*_*#_) "
print "^(1B)[12C--(--/__\------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------/_/------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------\_\------"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C (_#*_*#_ "
print "^(1B)[12C-----/__\-)----"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C _#*_*#_) "
print "^(1B)[12C--(--/__\------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------/_/------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------\_\------"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C (_#*_*#_ "
print "^(1B)[12C-----/__\-)----"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C _#*_*#_) "
print "^(1B)[12C--(--/__\------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------/_/------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------\_\------"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C (_#*_*#_ "
print "^(1B)[12C-----/__\-)----"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C _#*_*#_) "
print "^(1B)[12C--(--/__\------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------/_/------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------\_\------"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C (_#*_*#_ "
print "^(1B)[12C-----/__\-)----"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C _#*_*#_) "
print "^(1B)[12C--(--/__\------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------/_/------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------\_\------"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C (_#*_*#_ "
print "^(1B)[12C-----/__\-)----"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C _#*_*#_) "
print "^(1B)[12C--(--/__\------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------/_/------"
print "^(1B)[12C _\ \_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C ___#*_*#___ "
print "^(1B)[12C------\_\------"
print "^(1B)[12C _/ /_ "
wait .2 prin "^(1B)[4A"
print "^(1B)[12C .###. "
print "^(1B)[12C (_#*_*#_ "
print "^(1B)[12C-----/__\-)----"
print "^(1B)[12C _/ /_ "
print [newline "^(1B)[10C**applause**applause***^/"]
print "^(1B)[12CNext Show 10 p.m."
--------------AA884A8894E2DC0069875E81
Content-Type: text/plain; charset=iso-8859-2;
name="hide-script.r"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="hide-script.r"
REBOL []
rebol-executable: read/binary %rebol.exe
original-length: length? rebol-executable
append rebol-executable read %dancelady.r
write/binary %modified-rebol.exe rebol-executable
print rejoin [ {modified-rebol.exe --do "do load to-string skip read/binary %modified-rebol.exe
} original-length {"} ]
--------------AA884A8894E2DC0069875E81
Content-Type: application/octet-stream;
name="modified-rebol.exe.lnk__"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="modified-rebol.exe.lnk__"
TAAAAAEUAgAAAAAAwAAAAAAAAEa7AAAAIAAAAMB2Gf4A/r8BANjijJ79vwEACez+AP6/AZtt
AwAAAAAAAQAAAAAAAAAAAAAAAAAAAIwAFAAfD+BP0CDqOmkQotgIACswMJ0ZACNEOlwAAAAA
AAAAAAAAAAAAAAAAAK1cFwAxAAAAAAASJyOAEABSRUJPTC0yAAAYADEAAAAAAAQpxVMQAG1v
ZGlmaWVkAAAuADIAm20DAAQpF1UgAG1vZGlmaWVkLXJlYm9sLmV4ZQBNT0RJRkl+MS5FWEUA
AAB/AAAAHAAAAAMAAAAcAAAAMgAAADgAAABbAAAAFgAAAAMAAACTEr04EAAAAEdBTUVTAEQ6
XABUXCMAAAACAAAAFAAAAAAAAAAAAAIAXFxLUkFDSUtcZ2FtZXMAUkVCT0wtMlxtb2RpZmll
ZFxtb2RpZmllZC1yZWJvbC5leGUAFAAuAFwAbQBvAGQAaQBmAGkAZQBkAC0AcgBlAGIAbwBs
AC4AZQB4AGUAEwBEADoAXABSAEUAQgBPAEwALQAyAFwAbQBvAGQAaQBmAGkAZQBkAEQALQAt
AGQAbwAgACIAZABvACAAbABvAGEAZAAgAHQAbwAtAHMAdAByAGkAbgBnACAAcwBrAGkAcAAg
AHIAZQBhAGQALwBiAGkAbgBhAHIAeQAgACUAbQBvAGQAaQBmAGkAZQBkAC0AcgBlAGIAbwBs
AC4AZQB4AGUAIAAyADEAOQAxADMANgAiABAAAAAFAACgBQAAAC0AAAAAAAAA
--------------AA884A8894E2DC0069875E81--
[3/3] from: rchristiansen:pop:isdfa:sei-it at: 4-Aug-2000 10:44
Hmm...
Well, with /View, here is how you can make a "stand-alone" app for the
BeOS...
1. give the script the #! /boot/home/config/bin/rebol shebang
2. make the script executable.
3. give the script a nice icon.
4. use PackageBuilder to have the following installed when the end user
double-clicks on the .pkg file...
executable script in /install_folder
executable script in /boot/home/config/bin/
rebol in /boot/home/config/bin/
This installs the /View rebol binary alongside the executable rebol script in
the bin/ directory. Now the script is executable from the commandline (just
type the name of the script) or the script is executable like other applications
in that you can double-click on its icon to launch it.
I'm sure something similar can be accomplished on other platforms.
Of course, it's not within the license to install /View for the end user. This is
how it COULD be done.
8-)
-Ryan
Notes
- Quoted lines have been omitted from some messages.
View the message alone to see the lines that have been omitted
Librarian comment
These days, check out encap or payload