Re: DOS/Windows installer 3.x
- Posted by Robert Craig <rds at RapidEuphoria.com> Oct 19, 2006
- 553 views
Juergen Luethje wrote: > Suggestions for improvement of the DOS/Windows installer: > > a) It should make a copy of "autoexec.bat" before changing that file. > > b) It should assign _short_ path names to the environment variables in > "autoexec.bat". > I know, on an English Windows version Euphoria will be installed by > default to the directory "C:\Programs\Euphoria". Since no part of > this path has more than 8 characters, there will be no problem. > But people might chose a diffwerent location, or for instance in > German it is "Programme" instead of "Programs". > > So the installer should write to a German "autoexec.bat" e.g. > SET EUDIR=C:\Progra~1\Euphoria > instead of > SET EUDIR=C:\Programme\Euphoria > This is important, because plain DOS can only process short names. > > The following Windows function converts an existing long path name to > a short name: > > <snip> > > Maybe a program that uses a function like this can help. > > Rob, if you want, you can also send me the setup script > (I assume you are using INNO setup), and I'll see what I can do. Thanks. My impression was that long PATH names worked with DOS unless they had a blank in them, in which case there was a glitch in some special situation. Maybe someone can test it. Here's the INNO script that I currently use. Alberto Gonzalez wrote it originally, but I've changed it a lot since then. Note that on my machine there's an extra directory, euphoria\htx. It contains the true source of the docs, as well as some helper Euphoria programs for the install. I should release that eventually. It gets deleted after the doc and htm files are generated. Generating doc and html from htx during the install saves a bit of space in the installation file. I'm not sure if its worth it. ---------------------------------- ; -- Inno Setup script to install Euphoria by Rapid Deployment Software ; -- ; -------------------------------------------------------------------------------- ; -- Euphoria can be found as http://www.rapideuphoria.com ; -- The Inno Setup compiler can be found at http://www.innosetup.com and is free ; -- ; -------------------------------------------------------------------------------- ; -- Created by Alberto Gonzalez (of Nomadic Soul Concepts - NomSCon) ; -- EMail: al at nomscon.com ; -- [Setup] AppName=Euphoria AppVersion=3.0 AppVerName=Euphoria v3.0 AppPublisher=Rapid Deployment Software AppPublisherURL=http://www.rapideuphoria.com AppSupportURL=http://www.rapideuphoria.com AppUpdatesURL=http://www.rapideuphoria.com DefaultDirName=C:\EUPHORIA DefaultGroupName=Euphoria AllowNoIcons=yes ;AlwaysCreateUninstallIcon=yes ;LicenseFile=license.txt ; uncomment the following line if you want your installation to run on NT 3.51 too. ;MinVersion=4,3.51 DisableStartupPrompt=yes DisableReadyPage=yes OutputDir=..\Setup OutputBaseFilename=e30setup Compression=lzma SolidCompression=yes ChangesAssociations=yes InfoBeforeFile=c:\euphoria\htx\before.txt InfoAfterFile=c:\euphoria\htx\after.txt Uninstallable=no [Types] Name: "full"; Description: "Full installation" Name: "custom"; Description: "Custom installation"; Flags: iscustom ;[Components] ;Name: "main"; Description: "Core files (Interpreter and Translator)"; Types: full; Flags: fixed ;Name: "docs"; Description: "Documentation and Tutorial"; Types: full; Flags: fixed ;Name: "demos"; Description: "Demonstration programs"; Types: full; Flags: fixed ;Name; "source"; Description: "Source code"; Types: full; Flags: fixed ;[Tasks] ;Name: "associate"; Description: "&Associate file extensions"; [Dirs] Name: "{app}\backup"; Flags: deleteafterinstall Name: "{app}\HTML"; Name: "{app}\DOC"; [Files] ; Save all Euphoria subdirectories to backup subdirectory (can't use recursesubdirs here) ; bin Source: "{app}\bin\*.*"; DestDir: "{app}\backup\bin"; Flags: confirmoverwrite external skipifsourcedoesntexist ; include Source: "{app}\include\*.*"; DestDir: "{app}\backup\include"; Flags: confirmoverwrite external skipifsourcedoesntexist ; doc Source: "{app}\doc\*.*"; DestDir: "{app}\backup\doc"; Flags: confirmoverwrite external skipifsourcedoesntexist ; htm Source: "{app}\html\*.*"; DestDir: "{app}\backup\html"; Flags: confirmoverwrite external skipifsourcedoesntexist ; tutorial Source: "{app}\tutorial\*.*"; DestDir: "{app}\backup\tutorial"; Flags: confirmoverwrite external skipifsourcedoesntexist ; demo Source: "{app}\demo\*.*"; DestDir: "{app}\backup\demo"; Flags: confirmoverwrite external skipifsourcedoesntexist ; demo\dos32 Source: "{app}\demo\dos32\*.*"; DestDir: "{app}\backup\demo\dos32"; Flags: confirmoverwrite external skipifsourcedoesntexist ; demo\win32 Source: "{app}\demo\win32\*.*"; DestDir: "{app}\backup\demo\win32"; Flags: external skipifsourcedoesntexist ; demo\langwar Source: "{app}\demo\langwar\*.*"; DestDir: "{app}\backup\demo\langwar"; Flags: external skipifsourcedoesntexist ; demo\bench Source: "{app}\demo\bench\*.*"; DestDir: "{app}\backup\demo\bench"; Flags: external skipifsourcedoesntexist ; source Source: "{app}\source\*.*"; DestDir: "{app}\backup\source"; Flags: external skipifsourcedoesntexist ; top level Source: "{app}\readme.doc"; DestDir: "{app}\backup"; Flags: external skipifsourcedoesntexist Source: "{app}\readme.htm"; DestDir: "{app}\backup"; Flags: external skipifsourcedoesntexist Source: "{app}\License.txt"; DestDir: "{app}\backup"; Flags: external skipifsourcedoesntexist ; Temporary Programs used to update AUTOEXEC.BAT in Windows 95, 98 and ME, ; create the docs, and exwc.exe (see [Run] section below) Source: c:\euphoria\bin\exw.exe; DestDir: {tmp}; CopyMode:alwaysoverwrite; Flags: deleteafterinstall; Source: c:\euphoria\bin\makecon.exw; DestDir: {tmp}; CopyMode: alwaysoverwrite; Flags: deleteafterinstall; Source: c:\euphoria\htx\setupae2.exw; DestDir: {tmp}; CopyMode: alwaysoverwrite; Flags: deleteafterinstall; MinVersion: 4.0,0 Source: c:\euphoria\htx\doc2.exw; DestDir: {tmp}; CopyMode: alwaysoverwrite; Flags: deleteafterinstall; Source: c:\euphoria\htx\combine2.exw; DestDir: {tmp}; CopyMode: alwaysoverwrite; Flags: deleteafterinstall; ; Files to Install ;Root Source: C:\EUPHORIA\FILE_ID.DIZ; DestDir: {app}; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\License.txt; DestDir: {app}; CopyMode: alwaysoverwrite; ;BIN Source: C:\EUPHORIA\BIN\EX.EXE; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\EXW.EXE; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\BACKEND.EXE; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\BACKENDW.EXE; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\SYNCOLOR.E; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\BIN.DOC; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\KEYWORDS.E; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\ED.EX; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\LINES.EX; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\ASCII.EX; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: "C:\EUPHORIA\BIN\KEY.EX"; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\GURU.EX; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\WHERE.EX; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\SEARCH.EX; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\EPRINT.EX; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\LINES.BAT; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\GURU.BAT; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\EPRINT.BAT; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\ED.BAT; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; MinVersion: 0,4.0 Source: C:\EUPHORIA\BIN\OLDED.BAT; DestDir: {app}\BIN\; DestName: ed.bat; CopyMode: alwaysoverwrite; MinVersion: 4.0,0 Source: C:\EUPHORIA\BIN\CDGURU.BAT; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\SEARCH.BAT; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\ASCII.BAT; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\WHERE.BAT; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: "C:\EUPHORIA\BIN\KEY.BAT"; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\MAKE31.EXW; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\MAKECON.EXW; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\EUINC.ICO; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\EC.EXE; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\ECW.EXE; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\LE23P.EXE; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\CWC.EXE; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\CWSTUB.EXE; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\LIBALLEG.A; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\BIND.BAT; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\BINDW.BAT; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\SHROUD.BAT; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\EC.A; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\EC.LIB; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\ECFASTFP.LIB; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\ECW.LIB; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\ECWB.LIB; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\ECWL.LIB; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\BIN\EUPHORIA.ICO; DestDir: {app}\BIN\; CopyMode: alwaysoverwrite; ;DEMO Source: C:\EUPHORIA\DEMO\*.*; DestDir: {app}\DEMO\; CopyMode: alwaysoverwrite; Flags: recursesubdirs; ;HTX Source: C:\EUPHORIA\HTX\*.HTX; DestDir: {tmp}; CopyMode: alwaysoverwrite; ;INCLUDE Source: C:\EUPHORIA\INCLUDE\*.E; DestDir: {app}\INCLUDE\; CopyMode: alwaysoverwrite; Source: C:\EUPHORIA\INCLUDE\EUPHORIA.H; DestDir: {app}\INCLUDE\; CopyMode: alwaysoverwrite; ;SOURCE Source: C:\EUPHORIA\source\*.*; DestDir: {app}\SOURCE\; CopyMode: alwaysoverwrite; ;TUTORIAL Source: C:\EUPHORIA\TUTORIAL\*.*; DestDir: {app}\TUTORIAL\; CopyMode: alwaysoverwrite; [INI] ; shortcut file to launch Rapid Euphoria website Filename: {app}\RapidEuphoria.url; Section: InternetShortcut; Key: URL; String: http://www.rapideuphoria.com [Icons] ; Icons (shortcuts) to display in the Start menu Name: {group}\Euphoria Manual; Filename: {app}\html\refman.htm Name: {group}\Euphoria on the Web; Filename: {app}\RapidEuphoria.url Name: {group}\Euphoria (Win); Filename: {app}\BIN\EXW.EXE Name: {group}\Euphoria (Dos); Filename: {app}\BIN\EX.EXE Name: {group}\Euphoria Editor; Filename: {app}\BIN\ED.bat [UninstallDelete] Type: files; Name: {app}\RapidEuphoria.url [Registry] ;set EUDIR environment variable and add to PATH on NT/2000/XP machines ROOT: HKCU; Subkey: "Environment"; ValueType: string; ValueName: "EUDIR"; ValueData: "{app}"; Flags: uninsdeletevalue; MinVersion: 0, 3.51 ROOT: HKCU; Subkey: "Environment"; ValueType: string; ValueName: "PATH"; ValueData: "{app}\BIN;{reg:HKCU\Environment,PATH}"; MinVersion: 0, 3.51 ;associate .exw files to be called by EXW.exe Root: HKCR; Subkey: ".exw"; ValueType: string; ValueName: ""; ValueData: "EUWinApp"; Flags: uninsdeletevalue createvalueifdoesntexist Root: HKCR; Subkey: "EUWinApp"; ValueType: string; ValueName: ""; ValueData: "Euphoria Windows App"; Flags: uninsdeletekey createvalueifdoesntexist Root: HKCR; Subkey: "EUWinApp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\BIN\EXW.EXE,0"; Flags: uninsdeletekey createvalueifdoesntexist Root: HKCR; Subkey: "EUWinApp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\BIN\EXW.EXE"" ""%1"""; Flags: uninsdeletekey createvalueifdoesntexist ;associate .ex files to be called by EX.exe Root: HKCR; Subkey: ".ex"; ValueType: string; ValueName: ""; ValueData: "EUDOSApp"; Flags: uninsdeletevalue createvalueifdoesntexist Root: HKCR; Subkey: "EUDOSApp"; ValueType: string; ValueName: ""; ValueData: "Euphoria DOS App"; Flags: uninsdeletekey createvalueifdoesntexist Root: HKCR; Subkey: "EUDOSApp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\BIN\EXW.EXE,0"; Flags: uninsdeletekey createvalueifdoesntexist Root: HKCR; Subkey: "EUDOSApp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\BIN\EX.EXE"" ""%1"""; Flags: uninsdeletekey createvalueifdoesntexist ;associate .e, .ew files to be called by ED.bat Root: HKCR; Subkey: ".e"; ValueType: string; ValueName: ""; ValueData: "EUCodeFile"; Flags: uninsdeletevalue createvalueifdoesntexist Root: HKCR; Subkey: ".ew"; ValueType: string; ValueName: ""; ValueData: "EUCodeFile"; Flags: uninsdeletevalue createvalueifdoesntexist Root: HKCR; Subkey: "EUCodeFile"; ValueType: string; ValueName: ""; ValueData: "Euphoria Code File"; Flags: uninsdeletekey createvalueifdoesntexist Root: HKCR; Subkey: "EUCodeFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\BIN\EuInc.ico,0"; Flags: uninsdeletekey createvalueifdoesntexist Root: HKCR; Subkey: "EUCodeFile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\BIN\ED.BAT"" ""%1"""; Flags: uninsdeletekey createvalueifdoesntexist [Messages] FinishedLabel=Setup has finished installing [name] on your computer.%n%nYou can now run Euphoria .ex and .exw programs by double-clicking them, or (after reboot) by typing:%n ex filename.ex%nor%n exw filename.exw%non a command-line. [Run] ;Generate DOCS, and update EUDIR and PATH in AUTOEXEC.bat for Win 95,98 and ME Filename: "{tmp}\exw.exe"; Description: "Generate Documentation Files as HTML"; Parameters: "{tmp}\doc2.exw HTML {app}"; StatusMsg: "Generating HTML documentation files ..."; Filename: "{tmp}\exw.exe"; Description: "Generate Documentation Files as plain text"; Parameters: "{tmp}\doc2.exw TEXT {app}"; StatusMsg: "Generating plain text documentation files ..."; Filename: "{tmp}\exw.exe"; Description: "Combine Documentation Files"; Parameters: "{tmp}\combine2.exw {app}"; StatusMsg: "Combining documentation files ..."; Filename: "{tmp}\exw.exe"; Description: "Create exwc.exe"; Parameters: "{tmp}\makecon.exw ""{app}"""; StatusMsg: "Making exwc.exe ..."; Filename: "{tmp}\exw.exe"; Description: "Update AUTOEXEC.bat"; Parameters: "{tmp}\setupae2.exw {app}"; StatusMsg: "Updating AUTOEXEC.BAT ..."; MinVersion: 4.0,0 ---------------------------------- Regards, Rob Craig Rapid Deployment Software http://www.RapidEuphoria.com