[comp.sys.amiga.tech] Amiga Roadblocks to User Friendliness

keithd@gryphon.COM (Keith Doyle) (12/09/88)

At the risk of starting another round of heated controversy over the
"correct" way to package programs, I've run into some new difficulties
in trying to package a program to be as clean and easy-to-use as we
dream of.  Not a demo contest entry, it would seem even more important
that it adhere to such standards, even though the problems I've been
experiencing are not specifically in conflict with the BADGE rules.

1. You apparently cannot do (easily) the equivalent of a an AmigaDOS

      path xxx   REMOVE

So, if you find it useful for a disk to add a command directory to the
current path for some reason, that disk's icon will not go away once
you remove it from the drive.

Why would you want to do such a thing?  I can envision one scenario, where
you have a product that supplies several new CLI commands, and you have
an icon that you can click on (after having booted from any WB disk) that
does a path add, and gives you a NewCLI all ready for you to try out your
new commands.

One potential solution would be to do something like a "path >ram:foo"
and later do a "path reset" followed by the appropriate number of
"path xxx add"s reconstructing the users original environment.  Doable,
but messy.

Further, if a developer would like to construct an auto-install program
that adds these new commands to the users C: directory, we have the
problem that likely as not, the novice is using a completely packed WB
floppy disk that has no room for added commands.  Apparently Commodore has
encountered this problem and resolved it with questions like "would you
like to delete fonts?" or "would you like to delete narrator/translator?"
and various stuff like that.  It would seem to be clear that a "make room
on the WB disk" could be a general utility that many developers could
make use of when installing certain types of new capabilities into a
users native environment.  A lot of novice users have figured out how
to use a few basic CLI commands, but have no conception of how the C:
directory works, and are completely unsure of what they need or don't
need on their boot disk.

And the worst problem.  Those of you who have installed programs under
MSDOS are presumably familiar with various INSTALL.BAT programs that
do auto installs on hard disks, many of which actually modify the
AUTOEXEC.BAT or CONFIG.SYS to add necessary boot-time configurations
for the new package.

A similar scenario on the Amiga might be a click-on icon that installs
a package on a hard disk.  Let's say this package needs an Assign and a
path xxx add added to the startup-sequence, and the package is being
installed in DH1:.

Now lets investigate what the GVP hardcard builds as a boot sequence when
you click on *their* auto-install icon.  I pick the GVP system because that's
what I've got.

DF0:s/startup-sequence looks about like this:

mount dh0:
binddrivers
dh0:c/execute dh0:GVPScripts/HDstartup-continue

Somewhere buried in HDstartup-continue is the mount for DH1:.  Thus,
an ASSIGN foo: DH1:somedirectory  is not doable until sometime after
this mount DH1: command.

How could an auto-install program address this situation?

1. Somehow determine if we have an autoboot rom or not.
2. if autoboot, start with DH0:s/startup-sequence
3. otherwise start with DF0:s/startup-sequence
4. chase startup sequence looking for execute commands, and 
5. nest into subscripts looking for ????

What.  What do we look for?  LoadWB?  EndCLI?  The end of the script?
Then backup up and insert our ASSIGN and PATH commands?  Do we really
want to even be modifying a script like this?  (though I presume there
would be lots of *WARNING* messages letting you know what it is about
to do "Are You Sure"  "Are You Sure You're Sure"  "I Don't Think You're
REALLY Sure, Do You?"

Now, arguments that anyone who has a hard disk should be able to add
ASSIGN commands to his own startup-script are nice, but far from
reality.  I talked to a user a couple of days ago, who had a brand
new Amiga 2000 with HD which was completely installed and setup by his
local dealer.  He was trying to install packages onto his hard disk simply
by dragging the visible icons onto the hard disk.  He couldn't drag the
entire disk icon onto the hard disk (as you would expect ala-MacIntosh)
because you get a "Can't move icon out of window" error or something like
that.  We apparently don't have a "move entire disk into a drawer on the
HD" capability without the CLI.  While some packages perhaps can be
installed simply by draggin the visible icons, certainly not all can.

So, I proceeded to spend about 1-1/2 hours with this guy explaining to
him how to use the CLI for the first time (CLI, what's that?) and
over-the-phone following his startup-sequence maze to a convienient
place to add the useful ASSIGNS, how to use ED etc.  Fortunately he
had a GVP harddisk with which I had some familiarity.  After it was
all over, he said "well that isn't all that hard".  And he's right,
it isn't all that hard, but it would have been if he had tried to 
figure it out for himself.

So what's the answer?

1. make sure commercial applications never need boot time configurations
such as ASSIGN or PATH?  

2. chase startup script chains looking for something typical and adding
in the commands automatically after ultra-warning operator?

3. warn user that the Amiga is inherently unfriendly to novice Hard Disk
users who are unfamiliar with the CLI, so he'd better go out and buy a
good book, or drag his system back into his dealer and let *him* install
it?

4. ???? (god I hope there's a 4. and maybe a 5. and 6.)

Keith Doyle
gryphon!keithd

smaug@eneevax.UUCP (Kurt Lidl) (12/10/88)

In article <9407@gryphon.COM> keithd@gryphon.COM (Keith Doyle) writes:
>[lots of stuff I don't want to comment about]
>
>Further, if a developer would like to construct an auto-install program
>that adds these new commands to the users C: directory, we have the
>problem that likely as not, the novice is using a completely packed WB
				 ^^^^^^
>floppy disk that has no room for added commands.

To say nothing about the "experienced" user.  I have had my Amiga for
just over a year, and am planning a hard disk addition soon.  Right
now, my bootdisk is over 90 percent full (with NO fonts, translator
drivers, etc on it!)
>
>And the worst problem.  Those of you who have installed programs under
>MSDOS are presumably familiar with various INSTALL.BAT programs that
>do auto installs on hard disks, many of which actually modify the
>AUTOEXEC.BAT or CONFIG.SYS to add necessary boot-time configurations
>for the new package.

I am unfortunately EXTREMEMLY familar with the batch files available
under Messy-DOS.  I have YET (in over 5 years of experience) to see
one that will allow me to fully install programs the way I want them
to be installed.  Even worse are the executable programs to install
things, which are basically prompters for their own versions of copy...

This type of programs are TOTALLY useless.  The typical environment where
I am installing software is a large (~4 gigabyte PC-LAN network) PC based
network.  No script for installation has ever worked right the first time.
We follow fairly exacting rules on how we have packages installed, for
ease of backups and ease of use.  I just don't think it can be done
without hand-tuning each installation script.

>A similar scenario on the Amiga might be a click-on icon that installs
>a package on a hard disk.  Let's say this package needs an Assign and a
>path xxx add added to the startup-sequence, and the package is being
>installed in DH1:.

I think that the ultimate solution is to provide a interactive,
bare-CLI execute script for the installation.  Obviously, if the
user has more sophisticated needs, they will have to modify the
script for their own installation.  However, between querying the user
and making a few "rational" defaults, it shouldn't be hard to make
a general enough installation script that even the most naive user
can install the product on a hard-disk and have it WORK THE FIRST TIME!

>[lots of good comments deleted]
>So what's the answer?
>
>1. make sure commercial applications never need boot time configurations
>such as ASSIGN or PATH?  

Make damn sure that ALL the programs needed to install the application
are on that disk, and reference them as such.  IE, don't go looking
for PATH in the C: directory already there, use MyDISK:c/path to add
the path to the device...  Ad nausem with other commands.  Granted
it may be a bit slower, but it will WORK!

>2. chase startup script chains looking for something typical and adding
>in the commands automatically after ultra-warning operator?

Warn user and then add (before any endcli command) an
"execute s:myproduct" command to the last thing in the s:startup-sequence

>3. warn user that the Amiga is inherently unfriendly to novice Hard Disk
>users who are unfamiliar with the CLI, so he'd better go out and buy a
>good book, or drag his system back into his dealer and let *him* install
>it?

Bad solutions, at least in my experience.  Telling Jerry Pournelle
to get the help of a dealer/guru is one thing, but aver Joe User won't
be as lucky to be graced with the presence of Joanne Dow or another
Commodore luminary...  Some dealers are willing to help users install,
and this is a *Good Thing*.  Others barely seem capable of ordering
the correct products for you, much less installing a product.  (I
have a friend with an atrocious (sp) WB1.3 setup -- the first one
that the dealer had installed.  Almost makes me cry...)

>4. ???? (god I hope there's a 4. and maybe a 5. and 6.)

I'm all typed out.  Somebody else can answer these questions...
>Keith Doyle 					gryphon!keithd


-- 
==================================================================
==  Kurt J. Lidl  (smaug@eneevax.umd.edu)	(301)454-3184	==
==  UUCP: [seismo,allegra]!umcp-cs!eneevax!smaug		==
========"It's after 3am, no point in going to sleep now..."=======

dillon@CLOUD9.BERKELEY.EDU (Matt Dillon) (12/10/88)

:Now, arguments that anyone who has a hard disk should be able to add
:ASSIGN commands to his own startup-script are nice, but far from
:reality.  I talked to a user a couple of days ago, who had a brand
:new Amiga 2000 with HD which was completely installed and setup by his
:local dealer.  He was trying to install packages onto his hard disk simply
:by dragging the visible icons onto the hard disk.  He couldn't drag the
:entire disk icon onto the hard disk (as you would expect ala-MacIntosh)
:because you get a "Can't move icon out of window" error or something like
:that.  We apparently don't have a "move entire disk into a drawer on the
:HD" capability without the CLI.  While some packages perhaps can be
:installed simply by draggin the visible icons, certainly not all can.

	Just a few of the workbench bugs which have to be fixed 
(will be 1.4 I hope).

:So, I proceeded to spend about 1-1/2 hours with this guy explaining to
:him how to use the CLI for the first time (CLI, what's that?) and
:over-the-phone following his startup-sequence maze to a convienient
:place to add the useful ASSIGNS, how to use ED etc.  Fortunately he
:had a GVP harddisk with which I had some familiarity.  After it was
:all over, he said "well that isn't all that hard".  And he's right,
:it isn't all that hard, but it would have been if he had tried to 
:figure it out for himself.
:
:So what's the answer?
:
:1. make sure commercial applications never need boot time configurations
:such as ASSIGN or PATH?  

	Many commercial applications must reference modules within 
themselves, dictionaries, help files, control files, etc..., and
the absolute best way to do this is by assuming they exist in a
custom assign'd place.  For example, the company Foo might have a 
dictionary program which assumes the dictionary can be found in
foodict:

	Thus, the user must add 'assign foodict: whereever' in his
startup script.  How the !@#$ else do you do it?  Assume the dictionary
is in S: or C:??  lovely.  Why don't we just assume the dictionary
is in DF0:?  Think this:...  It is nice to think that installation of
software should be as easy as moving an icon, but the reality is quite
different for many applications.

	Without Assign's, most large commercial programs have little
Flexibility.  It should be obvious from past experience, when programs
made ridiculous assumptions like there had to be a floppy in DF0:, or
the support files for the program were in the current directory or
something like that.  Yick.


>2. chase startup script chains looking for something typical and adding
>in the commands automatically after ultra-warning operator?

	Not possible.  For example, my s:startup-sequence on my HD
executes another startup-sequence conditionaly and then starts a shell
which does most of the system init.  It is not possible to write an
automated program that is able to trace that, and just adding the assign
to s:startup-sequence would not work in my (and many other) cases 
because not only has DHB:C not been added to the path yet, but my four
other partitions haven't even been mounted yet!

	Even a 'stupid-user-intallation' program would have trouble
for the same reasons... that there is no way to tell how that user's
startup-sequence is setup, it would depend on who he bought the drive
from.  And before you say it, tracing out the commands a startup-sequence
does is out of the question too for obvious reasons (if you just think a
little).

	A company might include such an installation program anyway,
but would still have to accompany it with manual installation instructions.

>3. warn user that the Amiga is inherently unfriendly to novice Hard Disk
>users who are unfamiliar with the CLI, so he'd better go out and buy a
>good book, or drag his system back into his dealer and let *him* install
>it?
>
>4. ???? (god I hope there's a 4. and maybe a 5. and 6.)
>
>Keith Doyle
>gryphon!keithd

	The reality is that the user must be smart enough to follow
instructions.  Of course, most installation instruction manuals are really
bad and impossible to follow.  The solution is to fix the manual, and the 
fault is that of the company.  But then again, the user had better not
be too stupid or he'll never understand the product.

	Apple had the right idea with their friendly user interface, but
found out all too quickly that it wasn't so friendly due to the 
unavoidable complexity of the applications run on it.

					-Matt

pds@quintus.uucp (Peter Schachte) (12/10/88)

In article <9407@gryphon.COM> keithd@gryphon.COM (Keith Doyle) wonders
how to make installation easier.  In particular, how can an automated
procedure add assignments to your startup-sequence.

Here's an approach that requires Commodore to do something, but
something VERY simple.  Change the standard startup-sequence to include
something like:

EXECUTE S:ASSIGNS

somewhere early on, and move all the standard assigns to S:ASSIGNS.
Then installation scripts can just append to S:ASSIGNS.  Of course,
experienced startup-sequence hackers will move things all around, and
may even delete the EXECUTE S:ASSIGNS line, but they can do the
installations themselves.
-Peter Schachte
pds@quintus.uucp
..!sun!quintus!pds

jesup@cbmvax.UUCP (Randell Jesup) (12/10/88)

In article <8812091849.AA02843@cloud9.berkeley.edu> dillon@CLOUD9.BERKELEY.EDU (Matt Dillon) writes:
>:1. make sure commercial applications never need boot time configurations
>:such as ASSIGN or PATH?  
>
>	Many commercial applications must reference modules within 
>themselves, dictionaries, help files, control files, etc..., and
>the absolute best way to do this is by assuming they exist in a
>custom assign'd place.  For example, the company Foo might have a 
>dictionary program which assumes the dictionary can be found in
>foodict:

	There is a better solution, which I used in Sub Battle Simulator.
Everytime I need to open a file, I call MyOpen(file,mode).  MyOpen first
tries an open relative to the current directory, then it tries with
the diskname (assignname) on the front.  This makes the program run on a
harddisk with no assigns needed, from WB or CLI, even if you're in a different
directory (though for a different directory it needs the assign).

>	Without Assign's, most large commercial programs have little
>Flexibility.  It should be obvious from past experience, when programs
>made ridiculous assumptions like there had to be a floppy in DF0:, or
>the support files for the program were in the current directory or
>something like that.  Yick.

>	Even a 'stupid-user-intallation' program would have trouble
>for the same reasons... that there is no way to tell how that user's
>startup-sequence is setup, it would depend on who he bought the drive
>from.  And before you say it, tracing out the commands a startup-sequence
>does is out of the question too for obvious reasons (if you just think a
>little).

	However, if there were a standard file that contained nothing but
assigns, then installation scripts could add assigns to it safely.

-- 
You've heard of CATS? Well, I'm a member of DOGS: Developers Of Great Software.
Randell Jesup, Commodore Engineering {uunet|rutgers|allegra}!cbmvax!jesup

peter@sugar.uu.net (Peter da Silva) (12/10/88)

In article <9407@gryphon.COM>, keithd@gryphon.COM (Keith Doyle) writes:
> 1. make sure commercial applications never need boot time configurations
> such as ASSIGN or PATH?  

This is a good one. It's easy enough to see if an assign hasn't been made
yet, and to make it. Dissect my "mounted" program to see how to scan
through the mountlist. Looking for assigns is as easy as looking for
volumes.

> 2. chase startup script chains looking for something typical and adding
> in the commands automatically after ultra-warning operator?

Nope.

> 3. warn user that the Amiga is inherently unfriendly to novice Hard Disk
> users who are unfamiliar with the CLI, so he'd better go out and buy a
> good book, or drag his system back into his dealer and let *him* install
> it?

Nope.

> 4. ???? (god I hope there's a 4. and maybe a 5. and 6.)

The expansion drawer is a good place to do some of this stuff. A little
complex, since there's hardly any system when this is run.

I like "1." best. Use "s:" as an /etc/rc type directory, and just create a
file that you can set up your environment with. When the program is run, it
looks for the file. If it doesn't exist, it asks questions and creates it.
This should be entirely safe. The last question can be "Are you booting from
a floppy and copying everything into RAM?"... if the answer is "yes", you
then ask them to insert their boot floppy in df0: and copy the configuration
file to df0:s. Simple. Easy. Always safe.

Many programs do this already.
-- 
		    Peter da Silva  `-_-'  peter@sugar.uu.net
		     Have you hugged  U  your wolf today?

	          Disclaimer: My typos are my own damn busines#!rne

dillon@POSTGRES.BERKELEY.EDU (Matt Dillon) (12/10/88)

:>2. chase startup script chains looking for something typical and adding
:>in the commands automatically after ultra-warning operator?
:
I write:
:	Not possible.  For example, my s:startup-sequence on my HD
:executes another startup-sequence conditionaly and then starts a shell
:which does most of the system init.  It is not possible to write an

	Well, I should amend that.  If there were yet another standard
script file for assigns then it would be extremely easy to write an
install program for it.  So if all the companies got together, or
commodore specified a specific file name (s:startup-assigns ?) that will
be executed and that contained *nothing* except assign commands, then
the user need only stick an 'execute s:startup-assigns' in the 
appropriate place in his startup sequence.

	Commercial software install programs would then always add their
assigns only to this file, and can also check to make sure they aren't
adding it twice (i.e. you install the program several times in
frustration).

				-Matt

mwm@eris.berkeley.edu (Mike (I'll think of something yet) Meyer) (12/10/88)

In article <9407@gryphon.COM> keithd@gryphon.COM (Keith Doyle) writes:
<At the risk of starting another round of heated controversy over the
<"correct" way to package programs, I've run into some new difficulties
<in trying to package a program to be as clean and easy-to-use as we
<dream of.

I think it's worth the risk. It's a problem that needs to be dealt
with.

<So what's the answer?
<
<1. make sure commercial applications never need boot time configurations
<such as ASSIGN or PATH?  

Commercial binaries should never look through _path_ now. They should
use absolute file names for all commands to be run. Using ASSIGN is
way to solve things for data files. For example:

:	There is a better solution, which I used in Sub Battle Simulator.
: Everytime I need to open a file, I call MyOpen(file,mode).  MyOpen first
: tries an open relative to the current directory, then it tries with
: the diskname (assignname) on the front.  This makes the program run on a
: harddisk with no assigns needed, from WB or CLI, even if you're in a different
: directory (though for a different directory it needs the assign).

I use a nearly identical solution. Except it's "Open(find_file(file),mode)".
That way, I can also do "OpenIFF(file_file(file))" and similar things.
The problem is, you have to do an assign if you want the binary to run
from anywhere other than the directory with all the goodies in it. And
it doesn't work for fonts (I understand that CBM is going to fix that
one, though)

There is, of course, a way to do something like the above, without
using ASSIGNs (there must be, as some programs are easy to install on
systems without any form of symbolic names). That's expressed right
here:

: I like "1." best. Use "s:" as an /etc/rc type directory, and just create a
: file that you can set up your environment with. When the program is run, it
: looks for the file. If it doesn't exist, it asks questions and creates it.

That file in s: is called a configuration file. I've got several in my
s: directory now - mrbackup files, vt100.init, and the shell & cli
-startup files (I think those qualify). For programs that don't
support a script language, you can just make it a binary file you read
on on top of a data structure that describes things. I use that
technic now for setting various parameters in programs.  The canonical
"Save Settings" and "Restore Factory Settings" menu entries. It would
be easy to add a "Directory where data files are stored" type of entry
to that, and then make the installation process create the file (with
factory settings if it doesn't exist), and patch in the directory
name. But that's ungainly. The ASSIGN mechanism is very nice, and
their ought to be a way to expliot it for doing installations. 

So, has someone got a better idea?

	<mike

--
All around my hat, I will wear the green willow.		Mike Meyer
And all around my hat, for a twelve-month and a day.	mwm@berkeley.edu
And if anyone should ask me, the reason why I'm wearing it,	ucbvax!mwm
It's all for my true love, who's far far away.		mwm@ucbjade.BITNET

lphillips@lpami.van-bc.UUCP (Larry Phillips) (12/12/88)

> Here's an approach that requires Commodore to do something, but
> something VERY simple.  Change the standard startup-sequence to include
> something like:
>
> EXECUTE S:ASSIGNS

  Not a bad idea at all. As long as we're 'getting Commodore to do
something', why not have the ASSIGN command accept a file with pairs of
arguments indicating all the assigns to be made? That way, one ASSIGN is
executed for all the assigns. Lots quicker.

-larry

--
"Intelligent CPU?  I thought you said Intel CPU!" 
        -Anonymous IBM designer-
+----------------------------------------------------------------+ 
|   //   Larry Phillips                                          |
| \X/    lpami.wimsey.bc.ca!lphillips or van-bc!lpami!lphillips  |
|        COMPUSERVE: 76703,4322                                  |
+----------------------------------------------------------------+

papa@pollux.usc.edu (Marco Papa) (12/12/88)

In article <9407@gryphon.COM| keithd@gryphon.COM (Keith Doyle) writes:
|At the risk of starting another round of heated controversy over the
|"correct" way to package programs, I've run into some new difficulties
|in trying to package a program to be as clean and easy-to-use as we
|dream of.

[very interesting stuff deleted]

|So, I proceeded to spend about 1-1/2 hours with this guy explaining to
|him how to use the CLI for the first time (CLI, what's that?) and
|over-the-phone following his startup-sequence maze to a convienient
|place to add the useful ASSIGNS, how to use ED etc. 

Boy, how much do I relate to that, Keith :-)

|So what's the answer?
|
|1. make sure commercial applications never need boot time configurations
|such as ASSIGN or PATH?

Well, A-Talk III would like to have:

Assign AT3: <hddisk:drawer>
path AT3: add

BUT our installation program puts the executable and related directories
(for scripts and settings) in a fixed place relative to the directory in which
the A-Talk III executable is copied.  When A-Talk III comes up first it looks
for settings/script files in currentdir/Settings and currentdir/Scripts; if it
doesn't find anything then it looks into AT3:Settings and AT3:Scripts.

This works just fine for the Workbench user.

For the CLI user, we ASSUME he knows about PATH and ASSIGN, and remind him
during hd installation to add HIMSELF the appropriate commands to the
Startup-Sequence. We also added to the manual the ED commands needed to
do just that.  So far it has worked nicely.

|2. chase startup script chains looking for something typical and adding
|in the commands automatically after ultra-warning operator?

I have seen it done to my AUTOEXEC.BAT in PC-DOG and I HATED it so much,
I'll never consider doing it on the Amiga.  Beside you need a CLI
"expert system" for doing it "right" :-)

|3. warn user that the Amiga is inherently unfriendly to novice Hard Disk
|users who are unfamiliar with the CLI, so he'd better go out and buy a
|good book, or drag his system back into his dealer and let *him* install
|it?

Well, that's not just a problem for the Amiga.  What we need is something
like Peter Norton's "Inside to the IBM PC". So far most Amiga books for novices
have been just dreadful.

|4. ???? (god I hope there's a 4. and maybe a 5. and 6.)

Really? :-)

-- Marco Papa 'Doc'
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
uucp:...!pollux!papa       BIX:papa       ARPAnet:pollux!papa@oberon.usc.edu
 "There's Alpha, Beta, Gamma and Diga!" -- Leo Schwab [quoting Rick Unland]
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

papa@pollux.usc.edu (Marco Papa) (12/13/88)

In article <5486@cbmvax.UUCP| jesup@cbmvax.UUCP (Randell Jesup) writes:
|In article <8812091849.AA02843@cloud9.berkeley.edu| dillon@CLOUD9.BERKELEY.EDU (Matt Dillon) writes:
||:1. make sure commercial applications never need boot time configurations
||:such as ASSIGN or PATH?  
|
|	There is a better solution, which I used in Sub Battle Simulator.
|Everytime I need to open a file, I call MyOpen(file,mode).  MyOpen first
|tries an open relative to the current directory, then it tries with
               ^^^^^^^^^^^^^^^
|the diskname (assignname) on the front.  This makes the program run on a
|harddisk with no assigns needed, from WB or CLI, even if you're in a different
|directory (though for a different directory it needs the assign).

As I said I concur with this.  I used it in A-Talk III, and it does the job.
The trick is to just write your installation script and use Xicon to execute
it.  Ask one (1) question to the user:

On which disk (or volume) do you want to install package XXX?

Then copy the XXX executable and copy subdirectories/drawers RELATIVE to
the same location on the disk.  Then use MyOpen() as Randell describes above
and the end result is that the "dumb hd user" has to click on 1 icon, and 
answer 1 question to get package XXX properly usable from a hard disk.

Is that easy enough?

-- Marco Papa 'Doc'
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
uucp:...!pollux!papa       BIX:papa       ARPAnet:pollux!papa@oberon.usc.edu
 "There's Alpha, Beta, Gamma and Diga!" -- Leo Schwab [quoting Rick Unland]
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

cg@myrias.UUCP (Chris Gray) (12/13/88)

In article <8812100429.AA08669@postgres.Berkeley.EDU> dillon@POSTGRES.BERKELEY.EDU (Matt Dillon) writes:
>	Well, I should amend that.  If there were yet another standard
>script file for assigns then it would be extremely easy to write an
>install program for it.  So if all the companies got together, or
>commodore specified a specific file name (s:startup-assigns ?) that will
>be executed and that contained *nothing* except assign commands, then
>the user need only stick an 'execute s:startup-assigns' in the 
>appropriate place in his startup sequence.
>				-Matt

YES! Excellent idea!

Unless problems crop up with this method, I would like to see something
like this recommended by CBM as a standard. Perhaps a mention in the next
AmigaMail? The sooner something like this is done the better - the stories
of lost sales because of difficult installation are all too likely to be
true. Since V1.4 is about Workbench, perhaps the standard could be set up
there - perhaps by including a 's:startup-assigns' in the standard WorkBench
startup.

f
i
l
l
e
r

-- 
Chris Gray		Myrias Research, Edmonton	+1 403 428 1616
	{uunet!mnetor,ubc-vision,watmath,vax135}!alberta!myrias!cg

cmcmanis%pepper@Sun.COM (Chuck McManis) (12/13/88)

About program installation ...

My startup sequence has a callout that runs the execute file
called "utility-setup". This consists of entries that look like

; PRODUCT : <name>
;
; <comments>
;
if EXISTS <install_dir>
	echo "Setting up <Application>"
	ASSIGN ASSIGN1: <install_dir>
	...
	Path <executable_dir> Add
Endif

In the case of Lattice C this looks something like :

; PRODUCT : LATTICE C
;
;  Set up for Lattice C 5.0
;
if EXISTS sys:lc
	echo "Setting up Lattice C 5.0"
	Assign LC: sys:lc/c
	Assign INCLUDE: SYS:lc/include
	Assign LIB: SYS:lc/lib
	Assign QUAD: RAM:
	path LC: add
Endif

Now to install something into the startup sequence I do two things,
one remove the old product definition. 	This can be accomplished with
an edit script that searches for the PRODUCT line and deletes lines
from there to the first "Endif" it encounters that starts in column one.
Then diddle around with the product definition stuff and assignments
and create a new temporary file PRODUCT.e and then use the AmigaDOS
Join command to tack this onto the end of my "utility-setup" file. 
Next time I reboot it does the assignments. 

As far as convention goes, I execute this just before I execute the
loadwb. 

Future Directions ...

Of course as anyone will tell you I have a zillion utilities and applications
that are on my system. And yet, everyone of them only requires that there
be "assignments" and path additions in the setup mode. (With the exception
of Manx which uses 'set'). This suggests to me that a utility "Mount" 
command may be the ticket to save a lot of disk grinding on assigns
and such like. Using a format that is something like a cross between
a mountlist and a makefile, possibly like this:

#
# Comment and delimiter of entry are the "#" marks.
#
Product
	Lattice C 5.0
Installed
	sys:lc
Assigns
	LC: 		$(INSTALL)/c
	INLCUDE:	$(INSTALL)/include	
	LIB:		$(INSTALL)/lib
	QUAD:		ram:
Addpath
	LC:
Environment
	EditorFlags	"a,b"	; An example only not needed for Lattice
# <- end of entry mark

This utility would read this entry and "setup" the application for you
with only "two" disk reads, one for the entry and one for the initial
setup utility loading.


--Chuck McManis
uucp: {anywhere}!sun!cmcmanis   BIX: cmcmanis  ARPAnet: cmcmanis@sun.com
These opinions are my own and no one elses, but you knew that didn't you.

mroth@ihlpf.ATT.COM (Roth) (12/13/88)

In article <8812100429.AA08669@postgres.Berkeley.EDU> dillon@POSTGRES.BERKELEY.EDU (Matt Dillon) writes:
>
>:>2. chase startup script chains looking for something typical and adding
>:>in the commands automatically after ultra-warning operator?
>:
>I write:
>:	Not possible.  For example, my s:startup-sequence on my HD
>:executes another startup-sequence conditionaly and then starts a shell
>:which does most of the system init.  It is not possible to write an
>
>	Well, I should amend that.  If there were yet another standard
>script file for assigns then it would be extremely easy to write an
>install program for it.  So if all the companies got together, or
>commodore specified a specific file name (s:startup-assigns ?) that will
>be executed and that contained *nothing* except assign commands, then
>the user need only stick an 'execute s:startup-assigns' in the 
>appropriate place in his startup sequence.
>
>				-Matt


There are problems with the approach of a special 'ASSIGNS' file upon
bootup.  When does the system perform the assigns?  If it is done before
the startup-sequence then assigns will fail to devices which have not
been mounted yet.  If it is done after, then no assigns will be done
if the user sets up a turnkey system (less of a problem).

My harddisk has four partitions.  I do assigns to directories in the
different partitions.  I could have a startup-sequence which queries
which partitions I wish to mount at startup time (Since mounting devices
eats up valuable memory).

These are just problems I have thought of off the top of my head.  There
may well be more.  For the novice user they may not exist at all.  For
the semi-novice user, they could cause much grief.

I think the solution is to have a special 'config' file for packages
which could exist in the S: directory or a new CONFIG: directory.
That way each package can do what is needed when it is fired up, including
things other than just assigns.  This would be much more flexible for both
the package developer and the operating system.

-------------------------------
Mike Roth  -  ihnp4!ihlpf!mroth
-------------------------------

dillon@POSTGRES.BERKELEY.EDU (Matt Dillon) (12/13/88)

I write:
:be executed and that contained *nothing* except assign commands, then
:the user need only stick an 'execute s:startup-assigns' in the 
:appropriate place in his startup sequence.
:
:				-Matt

:There are problems with the approach of a special 'ASSIGNS' file upon
:bootup.  When does the system perform the assigns?  If it is done before
:the startup-sequence then assigns will fail to devices which have not
:been mounted yet.  If it is done after, then no assigns will be done
:if the user sets up a turnkey system (less of a problem).
:
:My harddisk has four partitions.  I do assigns to directories in the
:different partitions.  I could have a startup-sequence which queries
:which partitions I wish to mount at startup time (Since mounting devices
:eats up valuable memory).

	You didn't read the last line!  or maybe I didn't say it clearly.
The system would not explicitly execute s:startup-assigns .. the user would
place 'execute s:startup-assigns' somewhere in his startup sequence.  I.E.
a one time thing, maybe even a zero time thing if HD distributors stick it
in their HD installation packages.

	I have four major partitions on my HD.  Each has a c directory and each
of these contains a file init.sh which contains assigns specifically for
that partition.  I source all four files somewhere in the middle of my
shell's .rootlogin.  I'm not proposing that you put all your custom assigns
in s:startup-assigns, it would just be a place for commercial programs
to install themselves.

	The only other things I can think of that a commercial program
might want to 'install' are some enviroment variables.  So maybe one should
allow SetEnv commands in s:startup-assigns.  Even so, that is iffy because
some people (like me) will assign ENV: to permanent storage (HD) rather than 
a RAM: disk.  In that case the commercial program would simply set the
appropriate variables to their default states.

						-Matt

keithd@gryphon.COM (Keith Doyle) (12/16/88)

In article <836@quintus.UUCP> pds@quintus.UUCP (Peter Schachte) writes:
>Here's an approach that requires Commodore to do something, but
>something VERY simple.  Change the standard startup-sequence to include
>something like:
>
>EXECUTE S:ASSIGNS
>
>somewhere early on, and move all the standard assigns to S:ASSIGNS.
>Then installation scripts can just append to S:ASSIGNS.  Of course,
>experienced startup-sequence hackers will move things all around, and
>may even delete the EXECUTE S:ASSIGNS line, but they can do the
>installations themselves.

Something like this would probably work, but agreed, Commodore should
decide this (or something) is the standard approach and publicize it
to the developers.

We might consider wording the file name a little differently, though
it's not a big deal, assigns are not all that might go into it, certainly 
PATH commands might as well.  We could call it APPLICATIONS or something
indicating it is for application specific boot commands.

A developer could decide to take this approach without Commodore support
by simply checking for the existance of such a file, and if not finding
it, creating one and informing the operator he must add an EXECUTE S:___
to his current startup chain in an appropriate place, as a stopgap
measure.  However, you wouldn't want every developer to decide to do
this and do it slightly differently where they would become incompatible
with each other.  You don't want to end up with a S:AEGIS_STARTUP and a 
S:EA_STARTUP, and a S:BROWNWAUGH_STARTUP etc.. ad nauseum.

Keith Doyle
keithd@gryphon.COM    gryphon!keithd     gryphon!keithd@elroy.jpl.nasa.gov

keithd@gryphon.COM (Keith Doyle) (12/16/88)

Matt apparently has come to some of the same conclusions I have about this
issue, 1. Assigns are great and useful and commercial applications
should be able to use them. and 2. Auto-edit of the current startup
chain is about impossible.

However, I don't like Matt's idea of simply saying "the user must be 
able to follow instructions" when those instructions require he learn the
CLI, ED, and how to follow a startup chain himself so he can determine
where he should add the ASSIGN and PATH commands for a commercial
application that requires them.

Keith Doyle
keithd@gryphon.COM    gryphon!keithd     gryphon!keithd@elroy.jpl.nasa.gov

charles@hpcvca.HP.COM (Charles Brown) (12/20/88)

> You don't want to end up with a S:AEGIS_STARTUP and a 
> S:EA_STARTUP, and a S:BROWNWAUGH_STARTUP etc.. ad nauseum.
>	Keith Doyle

Actually I do want to end up with that.  It makes installation
of the tool simple.  Almost as important, it makes clean removal of
the tool just as simple.
--
	Charles "Modularity!  That's the ticket!" Brown

keithd@gryphon.COM (Keith Doyle) (12/23/88)

In article <1410010@hpcvca.HP.COM> charles@hpcvca.HP.COM (Charles Brown) writes:
>> You don't want to end up with a S:AEGIS_STARTUP and a 
>> S:EA_STARTUP, and a S:BROWNWAUGH_STARTUP etc.. ad nauseum.
>>	Keith Doyle
>Actually I do want to end up with that.  It makes installation
>of the tool simple.  Almost as important, it makes clean removal of
>the tool just as simple.

Except that clean removal is cleaner if all the applications keep their
specific commands in a common applications execute file, as they can
have no fear of removing commands that were inserted by them, assuming
we can all agree on a format.

Your approach requires a person's startup-sequence chain to somewhere
be modified *specifically for each manufacturer* in addition to adding
the execute files for each:

if exists s:ea_startup
execute s:ea_startup
endif
if exists s:aegis_startup
execute s:aegis_startup
endif
if exists s:newtek_startup
execute s:newtek_startup
endif
etc.
etc.
etc.


Wouldn't it be better to have:

   execute s:appspecifics

in your startup chain, and then appspecifics would look something like:

;# Aegis Videoscape 3D specifics
assign vid3d: dh2:viddir
path dh2:viddir add
;# NewTek Digi-View specifics
assign dview: dh2:dviewdir
path dh2:dviewdir add
;# Byte by Byte Animate 4D specifics
assign a4d: dh3:animate
path dh3:animate
etc.
etc.

And then make sure each program as an install/remove icon that will
automatically insert and delete their appropriate sections?  

With a system like this, a new companies HD install program can just add
their stuff to the s:appspecifics file without any operator intervention.
Your approach requires either the install program signal the operator
he must add the "if exists" junk above, or that some sort of execute
script is done to recognize files with a certain naming convention in
s: as being app specific executes, (making sure it ignores *.bak, *.info,
and a few other things) as well as doing considerably more disk thrashing
on the way up.  Not to mention difficult to explain to the novice where
and why he needs to type it in himself the first time because the existing
systems don't already contain this smart code in their startup-chains

Granted, applications need re-install (move to somewhere else) and
remove options as well as install, all of which operate on the
s:appspecifics file.

Keith Doyle
keithd@gryphon.COM    gryphon!keithd     gryphon!keithd@elroy.jpl.nasa.gov

dfisk@hawk.ulowell.edu (David Fisk) (12/23/88)

As a hard disk user, I've been following this discussion about ways to
do software installations with Assign batch files. Personally I don't
like having to have a lot of assigns that have to be made for all of
my programs to work. What I would like to see is for programs to look
for a configuration file in a certain directory (either current or a
regular assign such as s:) and use that instead of Assigns. This is
currently done by one shareware program I have seen, Access!, which makes
things very neat and tidy. An installation program/script would copy
the program files from the distribution media, to a user specified
directory and then either run the program and have it prompt the user
for configuration info, or create the config file itself. I think that
this is a lot nicer than having someones script/program editing my
startup-sequence.

Any Comments?

Dave...
---------------------------------------------------------------------------
| dfisk@hawk.ulowell.edu (David Fisk) |                                   |
| University of Lowell	      	      |  still looking for a good quote...|
| Computer Science Dept. Student      |                                   |
---------------------------------------------------------------------------


---------------------------------------------------------------------------
| dfisk@hawk.ulowell.edu (David Fisk) |                                   |
| University of Lowell	      	      |  still looking for a good quote...|
| Computer Science Dept. Student      |                                   |

peter@sugar.uu.net (Peter da Silva) (12/23/88)

In article <9910@gryphon.COM>, keithd@gryphon.COM (Keith Doyle) writes:
> Your approach requires a person's startup-sequence chain to somewhere
> be modified *specifically for each manufacturer* in addition to adding
> the execute files for each:

> if exists s:ea_startup
> execute s:ea_startup
> endif
..

You don't need to be so baroque. Try this:

list >ram:manufacturers_startup s:#?_startup lformat "execute %s%s"
execute ram:manufacturers_startup

Or just have each program, when it's run for the first time each session,
run a quick little CLI session:

if(access("ram:my-startup-sequence") == FAIL) {
	copyfile("s:my-startup-sequence", "ram:my-startup-sequence");
	Execute(
"Newcli \"CON:0/0/640/200/Installing Me\" from ram:my-startup-sequence",
		NilFH, NilFH);
}

Or even have it use s:my-init-file directly, like Browser, DTerm, WKeys,
and even the new Amiga Shell do.
-- 
Peter "Have you hugged your wolf today" da Silva  `-_-'  peter@sugar.uu.net

keithd@gryphon.COM (Keith Doyle) (12/24/88)

In article <10866@swan.ulowell.edu> dfisk@hawk.ulowell.edu (David Fisk) writes:
>As a hard disk user, I've been following this discussion about ways to
>do software installations with Assign batch files. Personally I don't
>like having to have a lot of assigns that have to be made for all of
>my programs to work. What I would like to see is for programs to look
>for a configuration file in a certain directory (either current or a
>regular assign such as s:) and use that instead of Assigns. This is
>currently done by one shareware program I have seen, Access!, which makes
>things very neat and tidy. An installation program/script would copy
>the program files from the distribution media, to a user specified
>directory and then either run the program and have it prompt the user
>for configuration info, or create the config file itself. I think that
>this is a lot nicer than having someones script/program editing my
>startup-sequence.
>
>Any Comments?

Yes.  You can't use the current directory for anything because programs
run under the Execute() call don't know what their current directory is.
You MUST have a full pathname to such files.  Let's pose a scenario:

1. program A runs.
2. program A wants to cause program B to run.

Program A must be able to find program B, and if program A was run from
an Execute(), it can't reference it without a complete path name if A was
run from an icon.  Program A could concievably read file S:PROGA_CONFIG and 
find the supposed current path of program B, but it takes extra disk activity 
at run time over the assign approach.  Program A could read all of 
PROGA_CONFIG upon initial invocation so that the information is around all 
the time so that reading of this file is not done every time program B is 
invoked.

Now. Program B wants to use data files that are in the same directory
as program B.  Program B also has to read a config file to find out what
it's current directory is if it perhaps can't assume that an assign is
available.  We are using the config file as a workaround for the lack
of an assign, a facility which we DO have, so why not use it?

Program A wants to accept a filename typed in by the user.  Program A
must then parse the file name to determine if it is a complete or partial
path, if not complete, must prepend the config file's current directory
information as the operator is then presumed to be specifying the file
as relative to program A's directory.  But what if program was run via
PATH ADD from another directory, and the current directory there is
not the same as is in the config file?  This one's a mess.  If the user
knew that program A's directory was FOO:, assigned at startup, he could
specify FOO:filename when he knows he want's it in program A's directory
and "filename" by itself when he is in the directory he wants and the program
has not been Execute()'d from another icon-invoked program.

Ultimately, the best way to fix all these problems is to fix Execute() to
correctly inherit the path of the parent process even when the parent was 
invoked from an icon.  In that instance, 99 percent of the reasons one
needs startup assigns go away.  Startup PATH ADDs may still be necessary
however, and there's no amount of config-file reading an application will
be able to do to cure it if the PATH ADD is required to get to the application
in the first place.

Keith Doyle
keithd@gryphon.COM    gryphon!keithd     gryphon!keithd@elroy.jpl.nasa.gov

charles@hpcvca.HP.COM (Charles Brown) (12/24/88)

> Except that clean removal is cleaner if all the applications keep their
> specific commands in a common applications execute file, as they can
> have no fear of removing commands that were inserted by them, assuming
> we can all agree on a format.

Sounds good.  (see below)

> Wouldn't it be better to have:
>	execute s:appspecifics
> in your startup chain, and then appspecifics would look something like:
>	;# Aegis Videoscape 3D specifics
>	assign vid3d: dh2:viddir
>	path dh2:viddir add
>	;# NewTek Digi-View specifics
>	assign dview: dh2:dviewdir
>	path dh2:dviewdir add
> etc.

Except that I don't believe manufacturers would make it as clean as
you show here.  Why should they bother putting in the header line?
	;# NewTek Digi-View specifics
Financially it only helps them to make it easy to install the program.
It does not help them at all to make it easy for me to remove their
program from my system.

If we combine both proposals we make the s:appspecifics file look like:
	execute s:ea_startup
	execute s:aegis_startup
	execute s:newtek_startup
I like this best of all.  I figure that the less editing the install
does to my global files, in this case s:appspecifics, the less chance
my system will get destroyed and the better chance I have of restoring
it if it is damaged.

> And then make sure each program as an install/remove icon that will
> automatically insert and delete their appropriate sections?  

Icon???  I don't DO icons!

> Granted, applications need re-install (move to somewhere else) and
> remove options as well as install, all of which operate on the
> s:appspecifics file.
> --Keith Doyle

Now this sounds VERY dangerous with your proposal.  What are the
chances that the string search for ea specific lines will accidentally
find some aegis lines as well?  When we combine both proposals this
becomes a simple matter of editing s:ea_startup, which I am much more
likely to trust the application to do.  After installation, the
s:appspecifics file does not need to be touched at all.
--
	Charles Brown		charles%hpcvca@hplabs.hp.com
	Not representing my employer.

peter@sugar.uu.net (Peter da Silva) (12/24/88)

In article <9946@gryphon.COM>, keithd@gryphon.COM (Keith Doyle) writes:
> Now. Program B wants to use data files that are in the same directory
> as program B.  Program B also has to read a config file to find out what
> it's current directory is if it perhaps can't assume that an assign is
> available.  We are using the config file as a workaround for the lack
> of an assign, a facility which we DO have, so why not use it?

But this isn't the same thing as startup assigns, which hang around all the
time. There's nothing wrong with having PROGB (or PROGA, for that matter)
looking for an assign (set pr_WindowPtr to -1, then tru to Lock() the assigned
name) and only going to S:PROGB.CONFIG if it needs to. Also, there's nothing
very large in S:. If the disk activity bothers you copy it to RAM:.

> Ultimately, the best way to fix all these problems is to fix Execute() to
> correctly inherit the path of the parent process even when the parent was 
> invoked from an icon.

This is the bottom line. Execute() has serious brain damage, and I hope it's
fixed in 1.4. However, there is a workaround. Have PROGB called in a workbench
environment (CreateProc, then pass a startup message). PROGB can get its
current directory from WBStartup->sm_ArgList[0].wa_Lock. The code to do this
in the general case is available from the binary groups. It's completely clean,
there's no fudges and kludges needed to do it, and you get absolute verific-
ation that the program completed (your startup message is returned). If you
like I will repost my example program.

> In that instance, 99 percent of the reasons one
> needs startup assigns go away.  Startup PATH ADDs may still be necessary
> however, and there's no amount of config-file reading an application will
> be able to do to cure it if the PATH ADD is required to get to the application
> in the first place.

PATHs are irelevant to the Workbench, and presumably CLI users will be
sophisticated enough to know how to do these themselves.
-- 
Peter "Have you hugged your wolf today" da Silva  `-_-'  peter@sugar.uu.net

csc21824@unsvax.UUCP (Jay) (12/25/88)

> Your approach requires a person's startup-sequence chain to somewhere
> be modified *specifically for each manufacturer* in addition to adding
> the execute files for each:
> 
> if exists s:ea_startup
> execute s:ea_startup
> endif
> if exists s:aegis_startup
> execute s:aegis_startup
> endif
> if exists s:newtek_startup
> execute s:newtek_startup
> endif
> etc.

Nope, just keep them all in the same directory, then do this

list >ram:startfiles S:configscripts LFORMAT="Execute %S%S"
execute ram:startfiles

and all those scripts get executed.  This assumes WB1.3, but I think that
will be a safe assumption in the future.
---------------------------------------------------------------------

	This space for Rent		     Eric J. Schwertfeger
					     CIS  [72657,1166]
					or   csc21824%unsvax.uns.edu
Disclaimer:These are just the mad ramblings of a man forced to use
	   vi once too often, and as such, should be ignored.

elg@killer.DALLAS.TX.US (Eric Green) (12/25/88)

in article <9910@gryphon.COM>, keithd@gryphon.COM (Keith Doyle) says:
> In article <1410010@hpcvca.HP.COM> charles@hpcvca.HP.COM (Charles Brown) writes:
>>> You don't want to end up with a S:AEGIS_STARTUP and a 
>>> S:EA_STARTUP, and a S:BROWNWAUGH_STARTUP etc.. ad nauseum.
> Except that clean removal is cleaner if all the applications keep their
> specific commands in a common applications execute file, as they can
> have no fear of removing commands that were inserted by them, assuming
> we can all agree on a format.
> 
> Your approach requires a person's startup-sequence chain to somewhere
> be modified *specifically for each manufacturer* in addition to adding
> the execute files for each:
> 
> if exists s:ea_startup
> execute s:ea_startup
> endif

Foo. Bogus. Simply have a file:

s:bbs_devices

which contains the lines:

upload_dir=DH1:uploads
bulletin_dir=DH0:bulletins
etc.

And at startup have your program grok that file i.e. DON'T use the
"assign" convention.

Then have a subroutine OpenPath in your program which:

MyFile *OpenPath(pathname,filename,mode)
  char *pathname,filename;
  int mode;
{
  ... strmov(buffer,pathname); .. strcat(buffer,filename);
  ...  Open (...);
}

and voila. 

You can have an "install" program for your novice user which tells the
user what each one of these devices does, asks where he/she wants it
to be located, if it doesn't exist ask him if he wants to create it,
etc.... all very friendly, very self-explanatory, doesn't require the
user to even KNOW what a CLI is. 

--
Eric Lee Green    ..!{ames,decwrl,mit-eddie,osu-cis}!killer!elg
          Snail Mail P.O. Box 92191 Lafayette, LA 70509              
Netter A: In Hell they run VMS.
Netter B: No.  In Hell, they run MS-DOS.  And you only get 256k.

keithd@gryphon.COM (Keith Doyle) (12/27/88)

In article <1410011@hpcvca.HP.COM> charles@hpcvca.HP.COM (Charles Brown) writes:
>Except that I don't believe manufacturers would make it as clean as
>you show here.  Why should they bother putting in the header line?

So they can find it again if you run re-install to move the application
elsewhere.

>If we combine both proposals we make the s:appspecifics file look like:
>	execute s:ea_startup
>	execute s:aegis_startup
>	execute s:newtek_startup
>I like this best of all.  

Except for the thrashing the system goes through doing all those extra
executes.  This is also my complaint with the script programs that
execute everything that ends in _startup.

>I figure that the less editing the install
>does to my global files, in this case s:appspecifics, the less chance
>my system will get destroyed and the better chance I have of restoring
>it if it is damaged.

Perhaps.  Then again, the install program could add what it needs in
the S:appspecifics file, and a copy of it in a newtek_startup file
that never gets executed but is there so you can figure out what it
did if the file gets muched by some other program.  There you get
both better boot-time performance, and keep track of what was done
to the file by who if it is ever damaged.

>Icon???  I don't DO icons!

Well, that's the whole point.  If all the users could figure out how
to edit their startup-sequence, this conversation would be moot.
I've run into quite a few hard-disk users who don't fit that category
though.

>Now this sounds VERY dangerous with your proposal.  What are the
>chances that the string search for ea specific lines will accidentally
>find some aegis lines as well?  

That's why you use the manufacturers name in a comment preceding
the actual commands, silly.  Assuming we could all ever agree on a
common format, this technique would work fine.

>When we combine both proposals this
>becomes a simple matter of editing s:ea_startup, which I am much more
>likely to trust the application to do.  After installation, the
>s:appspecifics file does not need to be touched at all.

True, at the cost of a longer boot sequence.

I'd be willing to buy off on either scheme, provided it was established
as a standard and published as such by C=.  In fact, some example
boilerplate install/re-install/remove code with standardized icons would
be useful as well, C= needs to establish similar procedures for installing
their own software.  My guess is whoever implements such a scheme
first and submits it to C= for consideration as a standard will likely
decide for us de-facto.

However, there may be other sticky issues.  Certainly there would be
some "hands off" commands perhaps, using STACK could mess up another
program that needed a larger stack, unless you did some shell fiddling
that would only make the stack larger, never smaller.  And while
STACK is basically only used when CLI-invoking programs, it is still
true that not all beginning CLI dabblers yet have the expertise to edit 
the startup-sequence to add appropriate stack commands.  Concievably
there may be some application that contains it's own device drivers
or handlers, and requires insertion of "mount" commands, etc., and 
who knows what else.

All I'd like to see is a standard mechanism whereby every manufacturer 
doesn't end up inventing his own scheme such that it continues to be a 
total confusing mess for the novice every time he needs to install 
something new on his hard disk, as it is to varying degrees now.

Keith Doyle
keithd@gryphon.COM    gryphon!keithd     gryphon!keithd@elroy.jpl.nasa.gov

keithd@gryphon.COM (Keith Doyle) (12/27/88)

In article <3151@sugar.uu.net> peter@sugar.uu.net (Peter da Silva) writes:
.This is the bottom line. Execute() has serious brain damage, and I hope it's
.fixed in 1.4. However, there is a workaround. Have PROGB called in a workbench
>environment (CreateProc, then pass a startup message). PROGB can get its
.current directory from WBStartup->sm_ArgList[0].wa_Lock. The code to do this
.in the general case is available from the binary groups. It's completely clean,
.there's no fudges and kludges needed to do it, and you get absolute verific-
.ation that the program completed (your startup message is returned). If you
.like I will repost my example program.

This looks like it could be a partial solution.  Programs run by IconX
probably lose it, as IconX won't pass them startup messages.

>PATHs are irelevant to the Workbench, and presumably CLI users will be
>sophisticated enough to know how to do these themselves.

Don't count on it.

Keith Doyle
keithd@gryphon.COM    gryphon!keithd     gryphon!keithd@elroy.jpl.nasa.gov

keithd@gryphon.COM (Keith Doyle) (12/27/88)

In article <6546@killer.DALLAS.TX.US> elg@killer.DALLAS.TX.US (Eric Green) writes:
>Foo. Bogus. Simply have a file:
>
>s:bbs_devices
>
>which contains the lines:
>
>upload_dir=DH1:uploads
>bulletin_dir=DH0:bulletins
>etc.
>
>And at startup have your program grok that file i.e. DON'T use the
>"assign" convention.

Except that your example must first check "filename" to see if it
is a full pathname, instead of a relative pathname, and only prepend
the current directory if it is a relative pathname.  Agreed, this
technique will work, though assigns may also be useful in the process, 
and startup script mods are still needed for PATH ADD commands and any 
other application related boot requirements, even if you eliminate any
need for ASSIGNs.

I got it!  Let's just put everything in one big giant C: directory
then we won't have any of these problems :-)

Keith Doyle
keithd@gryphon.COM    gryphon!keithd     gryphon!keithd@elroy.jpl.nasa.gov

peter@sugar.uu.net (Peter da Silva) (12/27/88)

In article <10023@gryphon.COM>, keithd@gryphon.COM (Keith Doyle) writes:
> Agreed, this
> technique will work, though assigns may also be useful in the process, 
> and startup script mods are still needed for PATH ADD commands

Any program that depends on PATH ADD is already hosed for workbench users.

> and any 
> other application related boot requirements, even if you eliminate any
> need for ASSIGNs.

About all I can think of here is loading device drivers and the like. I'd
rather solve this by adding "Assign()" and "Mount()" to dos.library. I'm
still amazed and disturbed that they're not in there already.
-- 
Peter "Have you hugged your wolf today" da Silva  `-_-'  peter@sugar.uu.net

peter@sugar.uu.net (Peter da Silva) (12/27/88)

[ I said, make your programs workbench programs ]

In article <10022@gryphon.COM>, keithd@gryphon.COM (Keith Doyle) writes:
> This looks like it could be a partial solution.  Programs run by IconX
> probably lose it, as IconX won't pass them startup messages.

If the program is a workbench program in the first place, what's iconx doing
in the loop at all?
-- 
Peter "Have you hugged your wolf today" da Silva  `-_-'  peter@sugar.uu.net

fgd3@jc3b21.UUCP (Fabbian G. Dufoe) (12/28/88)

From article <10023@gryphon.COM>, by keithd@gryphon.COM (Keith Doyle):
> I got it!  Let's just put everything in one big giant C: directory
> then we won't have any of these problems :-)

     What a great idea!  Only instead of calling it C: we could call it
/bin. :)

--Fabbian Dufoe
  350 Ling-A-Mor Terrace South
  St. Petersburg, Florida  33705
  813-823-2350

UUCP: ...codas!usfvax2!jc3b21!fgd3 
      ...uunet!pdn!jc3b21!fgd3

keithd@gryphon.COM (Keith Doyle) (12/30/88)

In article <3160@sugar.uu.net> peter@sugar.uu.net (Peter da Silva) writes:
>If the program is a workbench program in the first place, what's iconx doing
>in the loop at all?

Many programs should work in either mode.  Running a program from the CLI 
can also allow command line parameters that can be useful in a BATCH mode.
I can imagine IconX running a batch script that moves all the images in 
a given directory through PixMate (assuming it had a CLI batch command
version, which it may in the future) massaging the images and perhaps
passing them to an ANIM compressor afterwards.  In addition, a program
may want to allow other programs to Execute() it to perform specific
functions, again using command line arguments.  If a program wants to
operate in both the CLI batch and the workbench click-me environments,
it might need to be able to figure out:

  1) where it is being run from (so it can access user data files kept in
     the "current" directory), and
  2) what directory it is kept in (so it can access program-related files).

I've yet to see a method where both 1 & 2 can be achieved whether or
not the program is run from the CLI, WorkBench, IconX, Execute() or 
LoadSeg/CreateProc.

#2 can be solved with a boot-Assign.  #1 can be solved from CLI, WorkBench
and perhaps LoadSeg/CreateProc, but not from IconX or Execute() in all cases.

Keith Doyle
keithd@gryphon.COM    gryphon!keithd     gryphon!keithd@elroy.jpl.nasa.gov

peter@sugar.uu.net (Peter da Silva) (12/31/88)

In article <10131@gryphon.COM>, keithd@gryphon.COM (Keith Doyle) writes:
>   1) where it is being run from (so it can access user data files kept in
>      the "current" directory), and
>   2) what directory it is kept in (so it can access program-related files).

> I've yet to see a method where both 1 & 2 can be achieved whether or
> not the program is run from the CLI, WorkBench, IconX, Execute() or 
> LoadSeg/CreateProc.

Easy. Use a PROJECT icon. WBArgs[0] is the program's directory and name,
WBArgs[1..n] contain the same info for the data files. Same thing for programs
run as Browser tools in Workbench mode.
-- 
Peter "Have you hugged your wolf today" da Silva  `-_-'  Hackercorp.
...texbell!sugar!peter, or peter@sugar.uu.net      'U`