diff --git a/CHECKLST.txt b/CHECKLST.txt index 61d37e1d..fb630701 100644 --- a/CHECKLST.txt +++ b/CHECKLST.txt @@ -64,7 +64,7 @@ orders them correctly with respect to releases): - putty/LATEST.VER -The Windows installer script: +The Windows installer script (_three_ times, on consecutive lines): - putty/windows/putty.iss diff --git a/windows/putty.iss b/windows/putty.iss index 197eb170..e885221a 100644 --- a/windows/putty.iss +++ b/windows/putty.iss @@ -5,26 +5,32 @@ ; ; TODO for future releases: ; -; - It would be neighbourly to set up an [UninstallRun] entry that ran -; some close cousin of `putty -cleanup', only it should prompt first -; in case the user wants to keep stuff. And make the `leave it alone' -; button the DEFAULT. And perhaps warn that on NT-style systems not -; everything will be caught by this. +; - It might be nice to have an option to add PSCP, Plink and PSFTP to +; the PATH. This is probably only practical on NT-class systems; I +; believe doing this on 9x would require mucking around with +; AUTOEXEC.BAT. ; -; - The Quick Launch bar is an interesting thought. Certainly a fair -; number of people actually _believe_ my silly joke about how PuTTY -; is the only thing that makes Windows usable, so perhaps they'd like -; that. Unchecked by default, though, I think. -; * does this need to be conditional on the Windows version? +; - Maybe a "custom" installation might be useful? Hassle with icons, +; though. [Setup] AppName=PuTTY AppVerName=PuTTY version 0.57 +VersionInfoTextVersion=Release 0.57 +AppVersion=0.57 +;FIXME -- enable this when we've got it going for individual EXEs too +; and are committed to the version numbering scheme. +;VersionInfoVersion=0.57.0.0 +AppPublisher=Simon Tatham +AppPublisherURL=http://www.chiark.greenend.org.uk/~sgtatham/putty/ +AppReadmeFile={app}\README.txt DefaultDirName={pf}\PuTTY DefaultGroupName=PuTTY UninstallDisplayIcon={app}\putty.exe ChangesAssociations=yes +;ChangesEnvironment=yes -- when PATH munging is sorted (probably) Compression=zip/9 +AllowNoIcons=yes [Files] Source: "putty.exe"; DestDir: "{app}" @@ -40,18 +46,23 @@ Source: "..\LICENCE"; DestDir: "{app}" Source: "..\README.txt"; DestDir: "{app}"; Flags: isreadme [Icons] -Name: "{group}\PuTTY"; Filename: "{app}\putty.exe"; Tasks: startmenu -Name: "{group}\PuTTY Manual"; Filename: "{app}\putty.hlp"; Tasks: startmenu -Name: "{group}\PuTTY Web Site"; Filename: "{app}\website.url"; Tasks: startmenu -Name: "{group}\PSFTP"; Filename: "{app}\psftp.exe"; Tasks: startmenu -Name: "{group}\PuTTYgen"; Filename: "{app}\puttygen.exe"; Tasks: startmenu -Name: "{group}\Pageant"; Filename: "{app}\pageant.exe"; Tasks: startmenu -Name: "{userdesktop}\PuTTY"; Filename: "{app}\putty.exe"; Tasks: desktopicon +Name: "{group}\PuTTY"; Filename: "{app}\putty.exe"; Comment: "SSH, Telnet and Rlogin client"; +Name: "{group}\PuTTY Manual"; Filename: "{app}\putty.hlp" +Name: "{group}\PuTTY Web Site"; Filename: "{app}\website.url" +Name: "{group}\PSFTP"; Filename: "{app}\psftp.exe"; Comment: "Command-line interactive SFTP client" +Name: "{group}\PuTTYgen"; Filename: "{app}\puttygen.exe"; Comment: "PuTTY SSH key generation utility" +Name: "{group}\Pageant"; Filename: "{app}\pageant.exe"; Comment: "PuTTY SSH authentication agent" +Name: "{commondesktop}\PuTTY"; Filename: "{app}\putty.exe"; Tasks: desktopicon\common +Name: "{userdesktop}\PuTTY"; Filename: "{app}\putty.exe"; Tasks: desktopicon\user +; Putting this in {commonappdata} doesn't seem to work, on 98SE at least. +Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\PuTTY"; Filename: "{app}\putty.exe"; Tasks: quicklaunchicon [Tasks] -Name: startmenu; Description: "Create a &Start Menu group" -Name: desktopicon; Description: "Create a &desktop icon for PuTTY" -Name: associate; Description: "&Associate .PPK files (PuTTY Private Key) with Pageant" +Name: desktopicon; Description: "Create a &desktop icon for PuTTY"; GroupDescription: "Additional icons:"; Flags: unchecked +Name: desktopicon\common; Description: "For all users"; GroupDescription: "Additional icons:"; Flags: exclusive unchecked +Name: desktopicon\user; Description: "For the current user only"; GroupDescription: "Additional icons:"; Flags: exclusive unchecked +Name: quicklaunchicon; Description: "Create a &Quick Launch icon for PuTTY (current user only)"; GroupDescription: "Additional icons:"; Flags: unchecked +Name: associate; Description: "&Associate .PPK files (PuTTY Private Key) with Pageant and PuTTYgen"; GroupDescription: "Other tasks:" [Registry] Root: HKCR; Subkey: ".ppk"; ValueType: string; ValueName: ""; ValueData: "PuTTYPrivateKey"; Flags: uninsdeletevalue; Tasks: associate @@ -60,3 +71,9 @@ Root: HKCR; Subkey: "PuTTYPrivateKey\DefaultIcon"; ValueType: string; ValueName: Root: HKCR; Subkey: "PuTTYPrivateKey\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\pageant.exe"" ""%1"""; Tasks: associate Root: HKCR; Subkey: "PuTTYPrivateKey\shell\edit"; ValueType: string; ValueName: ""; ValueData: "&Edit"; Tasks: associate Root: HKCR; Subkey: "PuTTYPrivateKey\shell\edit\command"; ValueType: string; ValueName: ""; ValueData: """{app}\puttygen.exe"" ""%1"""; Tasks: associate +; Add to PATH on NT-class OS? + +[UninstallRun] +; -cleanup-during-uninstall is an undocumented option that tailors the +; message displayed. +Filename: "{app}\putty.exe"; Parameters: "-cleanup-during-uninstall"; RunOnceId: "PuTTYCleanup"; StatusMsg: "Cleaning up saved sessions etc (optional)..." diff --git a/windows/window.c b/windows/window.c index 21058887..40c69e54 100644 --- a/windows/window.c +++ b/windows/window.c @@ -437,22 +437,41 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) i++; /* skip next argument */ } else if (ret == 1) { continue; /* nothing further needs doing */ - } else if (!strcmp(p, "-cleanup")) { + } else if (!strcmp(p, "-cleanup") || + !strcmp(p, "-cleanup-during-uninstall")) { /* * `putty -cleanup'. Remove all registry * entries associated with PuTTY, and also find * and delete the random seed file. */ char *s1, *s2; - s1 = dupprintf("This procedure will remove ALL Registry\n" - "entries associated with %s, and will\n" - "also remove the random seed file.\n" - "\n" - "THIS PROCESS WILL DESTROY YOUR SAVED\n" - "SESSIONS. Are you really sure you want\n" - "to continue?", appname); - s2 = dupprintf("%s Warning", appname); - if (message_box(s1, s2, MB_YESNO | MB_ICONWARNING, + /* Are we being invoked from an uninstaller? */ + if (!strcmp(p, "-cleanup-during-uninstall")) { + s1 = dupprintf("Remove saved sessions and random seed file?\n" + "\n" + "If you hit Yes, ALL Registry entries associated\n" + "with %s will be removed, as well as the\n" + "random seed file. THIS PROCESS WILL\n" + "DESTROY YOUR SAVED SESSIONS.\n" + "(This only affects the currently logged-in user.)\n" + "\n" + "If you hit No, uninstallation will proceed, but\n" + "saved sessions etc will be left on the machine.", + appname); + s2 = dupprintf("%s Uninstallation", appname); + } else { + s1 = dupprintf("This procedure will remove ALL Registry entries\n" + "associated with %s, and will also remove\n" + "the random seed file. (This only affects the\n" + "currently logged-in user.)\n" + "\n" + "THIS PROCESS WILL DESTROY YOUR SAVED SESSIONS.\n" + "Are you really sure you want to continue?", + appname); + s2 = dupprintf("%s Warning", appname); + } + if (message_box(s1, s2, + MB_YESNO | MB_ICONWARNING | MB_DEFBUTTON2, HELPCTXID(option_cleanup)) == IDYES) { cleanup_all(); }