diff options
author | Thomas E. Dickey <dickey@invisible-island.net> | 2010-04-29 22:00:22 -0400 |
---|---|---|
committer | Thomas E. Dickey <dickey@invisible-island.net> | 2010-04-29 22:00:22 -0400 |
commit | dc748b1c47baadafae2c90f0e188927b11b7e029 (patch) | |
tree | c728869dc6504570b9bffb7459ccbdd1bf264a9f /PACKAGE/lynx.iss | |
parent | d4093cadbda3787dfb165954f8f6521790cfac86 (diff) | |
download | lynx-snapshots-dc748b1c47baadafae2c90f0e188927b11b7e029.tar.gz |
snapshot of project "lynx", label v2_8_8dev_6c
Diffstat (limited to 'PACKAGE/lynx.iss')
-rw-r--r-- | PACKAGE/lynx.iss | 389 |
1 files changed, 0 insertions, 389 deletions
diff --git a/PACKAGE/lynx.iss b/PACKAGE/lynx.iss deleted file mode 100644 index 9a7da935..00000000 --- a/PACKAGE/lynx.iss +++ /dev/null @@ -1,389 +0,0 @@ -; $LynxId: lynx.iss,v 1.4 2009/11/22 23:59:04 tom Exp $ -; vile:ts=2 sw=2 notabinsert -; -; This is the BASE script for different flavors of the installer for Lynx. -; It can be overridden to select different source-executables (and their associated -; screen library, e.g., pdcurses or slang). -; -; The script assumes environment variables have been set, e.g., to point to -; data which is used by the installer: -; -; LYNX_BINDIR - directory containing lynx.exe (or different names) -; LYNX_DLLSDIR - directory containing curses or slang dlls. -; LYNX_DOCSDIR - files and subdirectories installed from Unix with "make install-doc" -; LYNX_HELPDIR - files and subdirectories installed from Unix with "make install-help" - -#include "version.iss" - -#ifndef MyAppExeName -#define MyAppExeName "lynx.exe" -#endif - -#define MySendTo '{sendto}\' + myAppName + '.lnk' -#define MyQuickLaunch '{userappdata}\Microsoft\Internet Explorer\Quick Launch\' + myAppName + '.lnk' - -#ifndef SourceExeName -#define SourceExeName "lynx.exe" -#endif - -#ifndef NoScreenDll -#ifndef ScreenDllName -#define ScreenDllName "pdcurses.dll" -#endif -#endif - -#ifndef SetupBaseName -#define SetupBaseName "lynx" -#endif - -#ifndef BinsSrcDir -#define BinsSrcDir GetEnv("LYNX_BINDIR") -#if BinsSrcDir == "" -#define BinsSrcDir "..\bin" -#endif -#endif - -#ifndef DllsSrcDir -#define DllsSrcDir GetEnv("LYNX_DLLSDIR") -#if DllsSrcDir == "" -#define DllsSrcDir "..\dlls" -#endif -#endif - -#ifndef DocsSrcDir -#define DocsSrcDir GetEnv("LYNX_DOCSDIR") -#if DocsSrcDir == "" -#define DocsSrcDir "..\docs" -#endif -#endif - -#ifndef HelpSrcDir -#define HelpSrcDir GetEnv("LYNX_HELPDIR") -#if HelpSrcDir == "" -#define HelpSrcDir "..\lynx_help" -#endif -#endif - -[Setup] -AppName={#MyAppName} -AppVerName={#MyAppVerName} -AppPublisher={#MyAppPublisher} -AppPublisherURL={#MyAppURL} -AppSupportURL={#MyAppURL} -AppUpdatesURL={#MyAppURL} -DefaultDirName={pf}\{#MyAppName} -DefaultGroupName={#MyAppName} -AllowNoIcons=yes -LicenseFile=..\COPYHEADER -InfoBeforeFile=..\README -OutputDir=..\PACKAGE\lynx-setup -#emit 'OutputBaseFilename=' + SetupBaseName + LYNX_VERSION + '-setup' -Compression=lzma -SolidCompression=yes - -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl" - -[Components] -Name: main; Description: The Lynx executable; types: full custom compact -Name: explorer; Description: Windows Explorer integration; types: full custom - -[Tasks] -Name: for_all_users; Description: Install for all users on this machine; GroupDescription: Configuration Settings; Components: main; Check: isGuru; Flags: unchecked -Name: register_vars; Description: Use registry for environment variables; GroupDescription: Configuration Settings; Components: main; Flags: unchecked -Name: use_sendto; Description: Add Send To Entry; GroupDescription: Windows Explorer; Components: explorer; Flags: unchecked -Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Components: main; Flags: unchecked -Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Components: main; Flags: unchecked - - -[Dirs] -Name: "{app}\doc" -Name: "{app}\doc\samples" -Name: "{app}\doc\test" -Name: "{app}\help" -Name: "{app}\help\keystrokes" -Name: "{app}\icon" -Name: "{app}\tmp" - -[Files] -#emit 'Source: "' + BinsSrcDir + '\' + SourceExeName + '"; DestDir: "{app}"; DestName: ' + MyAppExeName + '; AfterInstall: myPostExecutable; Flags: ignoreversion' -#ifndef NoScreenDll -#emit 'Source: "' + DllsSrcDir + '\' + ScreenDllName + '"; DestDir: "{app}"; DestName: ' + ScreenDllName + '; Flags: ignoreversion' -#endif -#emit 'Source: "' + DocsSrcDir + '\*.*"; DestDir: "{app}\doc"; Flags: ' -#emit 'Source: "' + DocsSrcDir + '\samples\*.*"; DestDir: "{app}\doc\samples"; Flags: ' -#emit 'Source: "' + DocsSrcDir + '\test\*.*"; DestDir: "{app}\doc\test"; Flags: ' -#emit 'Source: "' + HelpSrcDir + '\*.*"; DestDir: "{app}\help"; Flags: ' -#emit 'Source: "' + HelpSrcDir + '\keystrokes\*.*"; DestDir: "{app}\help\keystrokes"; Flags: ' - -; some of these data files are from an earlier installer by Claudio Santambrogio -Source: "..\samples\lynx.ico"; DestDir: "{app}\icon" -Source: "..\samples\lynx.bat"; DestDir: "{app}" -Source: "..\samples\jumps.htm"; DestDir: "{app}" -Source: "..\samples\home.htm"; DestDir: "{app}" -Source: "..\samples\lynx_bookmarks.htm"; DestDir: "{app}" -Source: "..\samples\*.lss"; DestDir: "{app}" -Source: "..\samples\lynx.bat"; DestDir: "{app}" -Source: "..\samples\lynx-demo.cfg"; DestDir: "{app}" -Source: "..\lynx.man"; DestDir: "{app}" -Source: "..\lynx.cfg"; DestDir: "{app}" ; AfterInstall: myCustomCfg; Flags: ignoreversion -; NOTE: Don't use "Flags: ignoreversion" on any shared system files - -[Icons] -Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" -Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" -Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon - -[Run] -Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppName}}"; Flags: nowait postinstall skipifsilent - -[UninstallDelete] -Type: files; Name: {app}\.lynx_cookies -Type: dirifempty; Name: {app} -#emit 'Type: files; Name: ' + mySendTo -#emit 'Type: files; Name: ' + myQuickLaunch - -[Code] -#emit 'const MY_APP_NAME = ''{app}\' + myAppName + '.exe'';' - -function isGuru(): Boolean; -begin - Result := isAdminLoggedOn(); -end; - -function environRootKey(): Integer; -begin - Result := HKEY_CURRENT_USER; -end; - -function appKey(): string; -begin - Result := 'Software\Lynx'; -end; - -function envSubKey(): string; -begin - Result := 'Environment'; -end; - -function appSubKey(): string; -begin - Result := appKey() + '\' + envSubKey(); -end; - -function envSysKey(): string; -begin - Result := 'System\CurrentControlSet\Control\Session Manager\Environment'; -end; - -// Set the environment variable ValueName. -procedure addVarToEnv(const RootKey: Integer; const SubKeyName, ValueName, toAdd: String); -var - Updated : string; -begin - Updated := ExpandConstant(toAdd); - RegWriteStringValue(RootKey, SubKeyName, ValueName, Updated); - Log('Added ' + toAdd + ' to ' + ValueName); - // MsgBox('addVarToEnv: ' #13#13 + ValueName + '="' + Updated + '"', mbInformation, MB_OK) -end; - -// Remove the given environment variable ValueName. -function removeVarFromEnv(const RootKey: Integer; const SubKeyName, ValueName: String): Boolean; -var - Current : string; -begin - Result := False; - if RegQueryStringValue(RootKey, SubKeyName, ValueName, Current) then - begin - RegDeleteValue(RootKey, SubKeyName, ValueName); - Result := True; - Log('Removed ' + ValueName); - // MsgBox('removeVarFromEnv: ' #13#13 + ValueName + '="' + Current + '"', mbInformation, MB_OK) - end; -end; - -function selectedVarsRootKey(): Integer; -begin - if isTaskSelected('for_all_users') then - Result := HKEY_LOCAL_MACHINE - else - Result := HKEY_CURRENT_USER; -end; - -function selectedVarsSubKey(): String; -begin - if isTaskSelected('for_all_users') then - begin - if isTaskSelected('register_vars') then - Result := appSubKey() - else - Result := envSysKey(); - end else - begin - if isTaskSelected('register_vars') then - Result := appSubKey() - else - Result := envSubKey(); - end; -end; - -procedure addAnyVariable(const ValueName, newValue: String); -begin - addVarToEnv(selectedVarsRootKey(), selectedVarsSubKey(), ValueName, NewValue); -end; - -// FIXME: should only remove if it matches the installer's value -procedure removeAnyVariable(const ValueName: String); -begin - removeVarFromEnv(HKEY_CURRENT_USER, envSubKey(), ValueName); - removeVarFromEnv(HKEY_CURRENT_USER, appSubKey(), ValueName); - removeVarFromEnv(HKEY_LOCAL_MACHINE, appSubKey(), ValueName); - removeVarFromEnv(HKEY_LOCAL_MACHINE, envSysKey(), ValueName); -end; - -// http://www.delphidabbler.com/articles?article=12 -procedure AddSendTo(); -begin - CreateShellLink( -#emit 'ExpandConstant(''' + MySendTo + '''),' -#emit '''SendTo link for ' + myAppName + ''',' - ExpandConstant(MY_APP_NAME), // program - '', // option(s) will be followed by pathname - '', // no target directory - '', // no icon filename - -1, // no icon index - SW_SHOWNORMAL); -end; - -procedure AddQuickLaunch(); -begin - CreateShellLink( -#emit 'ExpandConstant(''' + MyQuickLaunch + '''),' -#emit '''SendTo link for ' + myAppName + ''',' - ExpandConstant(MY_APP_NAME), // program - '', // option(s) will be followed by pathname - '', // no target directory - '', // no icon filename - -1, // no icon index - SW_SHOWNORMAL); -end; - -// This is called after installing the executable. -procedure myPostExecutable(); -var - Keypath : String; - AppDir : String; -begin - Keypath := appKey(); - AppDir := ExpandConstant('{app}'); - Log('Setting registry key "' + Keypath + '" to "' + AppDir + '"'); - if not RegWriteStringValue(selectedVarsRootKey(), Keypath, '', AppDir) then - Log('Failed to set key'); - - if isTaskSelected('use_sendto') then - begin - AddSendTo(); - Log('** added Send-To link'); - end; - - if isTaskSelected('quicklaunchicon') then - begin - AddQuickLaunch(); - Log('** added Quick-launch link'); - end; -end; - -// This is called after installing the lynx.cfg file. -procedure myCustomCfg(); -var - AppDir : String; - CfgFile : String; -begin - AppDir := ExpandConstant('{app}'); - CfgFile := AppDir + '\lynx.cfg'; - - addAnyVariable('LYNX_CFG', CfgFile); - Log('** set LYNX_CFG=' + CfgFile); - - SaveStringToFile(CfgFile, 'HELPFILE:' + AppDir + '/help/Lynx_help_main.html.gz' + #10, True); - SaveStringToFile(CfgFile, 'COLOR_STYLE:' + AppDir + '/opaque.lss' + #10, True); - - SaveStringToFile(CfgFile, 'CHMOD_PATH:' + #10, True); - SaveStringToFile(CfgFile, 'COPY_PATH:' + #10, True); - SaveStringToFile(CfgFile, 'MKDIR_PATH:' + #10, True); - SaveStringToFile(CfgFile, 'MV_PATH:' + #10, True); - SaveStringToFile(CfgFile, 'RMDIR_PATH:' + #10, True); - SaveStringToFile(CfgFile, 'RM_PATH:' + #10, True); - SaveStringToFile(CfgFile, 'TOUCH_PATH:' + #10, True); - - Log('** customized ' + CfgFile); - - if isTaskSelected('use_sendto') then - begin - AddSendTo(); - Log('** added Send-To link'); - end; -end; - -function CleanupMyKey(const theRootKey: Integer): Boolean; -var - Path : String; - Value : String; -begin - Result := False; - if RegQueryStringValue(theRootKey, appKey(), '', Value) then - begin - if Value <> '' then - begin - Result := True; - Log('Deleting value of "' + appKey() + '" = "' + Value + '"'); - if not RegDeleteValue(theRootKey, appKey(), '') then - Log('Failed to delete value'); - - Path := appKey() + '\Environment'; - Log('Checking for subkey "' + Path + '"'); - if RegValueExists(theRootKey, Path, '') then - begin - if RegDeleteKeyIncludingSubkeys(theRootKey, Path) then - Log('Deleted key "' + Path + '"') - else - Log('Failed to delete key "' + Path + '"'); - end; - - if RegDeleteKeyIfEmpty(theRootKey, appKey()) then - Log('Deleted key "' + appKey() + '"') - else - Log('Failed to delete key "' + appKey() + '"'); - end - end -end; - -// On uninstall, we do not know which registry setting was selected during install, so we remove all. -procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); -begin - case CurUninstallStep of - usUninstall: - begin - // MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall is about to start.', mbInformation, MB_OK) - // ...insert code to perform pre-uninstall tasks here... - end; - usPostUninstall: - begin - removeAnyVariable('LYNX_CFG'); - - { - If we don't find the settings in the current user, try the local machine. - The setup program cannot pass the all-users flag to the uninstaller, so we - have to try both. - } - Log('Checking current-user registry key'); - if not CleanupMyKey(HKEY_CURRENT_USER) then - begin - Log('Checking local-machine registry key'); - CleanupMyKey(HKEY_LOCAL_MACHINE); - end; - - // MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall just finished.', mbInformation, MB_OK); - end; - end; -end; |