non-interactive cygwin setup

Gary R. Van Sickle g.r.vansickle@worldnet.att.net
Fri Oct 15 03:54:00 GMT 2004


> On Thu, 14 Oct 2004, Gary R. Van Sickle wrote:
> 
> > [snip]
> > > >I thought if a GUI app called printf it generally caused 
> a console 
> > > >to be opened for it.  Maybe that's only with msvcrt.  In 
> any case, 
> > > >the fact is that it is being run from a cmdline and so 
> it certainly 
> > > >can communicate with the console.  The presence of command-line 
> > > >options in argc/argv could be taken as a fairly strong 
> hint that it 
> > > >was being run from a shell rather than an icon.  And 
> there's always 
> > > >"isatty (1)" if you really really want to be sure.
> > >
> > > This is a windows limitation.  GUI apps (apps created with
> > > -mwindows) can't send output to or receive input from the 
> console.  
> > > Of course, a GUI can interpret command line information.  It just 
> > > cannot send output to the console that started it.
> > >
> > > You could use AllocConsole to create a separate console which the 
> > > GUI could then use, however.
> >
> > Here's a maybe-less-icky way to do it.  Have two exes, one 
> "setup.exe" 
> > which is a 100% command-line program that normally just spawns 
> > "winsetup.exe", the current GUI setup, and goes away.  Give it 
> > "--help", and it prints help in the regular command-line way and 
> > exits.  Yeah, two exes, but worse tragedies have happened.
> 
> Well, running the command-line program will pop up a console 
> window if it's not running from a console already.  How's 
> that different from just using AllocConsole in the GUI 
> version?  In fact, isn't this what MSVCRT does under the 
> covers anyway?
> 	Igor

AllocConsole can only pop up a *new* console (right?), which doesn't buy
anybody anything (it's worse than a dialog IYAM).  With the way I suggested
you'd have:

$ setup --help
Cygwin Setup Version blah blah blah
Usage:
   -a      Blah blah bl-blah blah blah.
.....


$ setup --option-one=Hello -XyZ
Doing command-line setup stuff, please watch the dots.....done.

$ setup
<< GUI version winsetup.exe is spawned >>

Double-click on winsetup.exe ==> runs GUI version.

Double-click on setup.exe ==> runs setup.exe which flashes a console (which
actually I think can be prevented), spawns winsetup.exe, and goes away.


So in almost all (maybe even all) cases, you have no unused or new consoles
floating around and you get intuitive behavior.  Yet another of "GRVS's Olde
Tyme Solutions Which Make Everybody Happy(TM)"!

-- 
Gary R. Van Sickle


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list