-Source: "putty.exe"; DestDir: "{app}"\r
-Source: "pageant.exe"; DestDir: "{app}"\r
-Source: "puttygen.exe"; DestDir: "{app}"\r
-Source: "pscp.exe"; DestDir: "{app}"\r
-Source: "psftp.exe"; DestDir: "{app}"\r
-Source: "plink.exe"; DestDir: "{app}"\r
-Source: "website.url"; DestDir: "{app}"\r
-Source: "..\doc\putty.hlp"; DestDir: "{app}"\r
-Source: "..\doc\putty.cnt"; DestDir: "{app}"\r
-Source: "..\LICENCE"; DestDir: "{app}"\r
-Source: "..\README.txt"; DestDir: "{app}"; Flags: isreadme\r
+; We flag all files with "restartreplace" et al primarily for the benefit\r
+; of unattended un/installations/upgrades, when the user is running one\r
+; of the apps at a time. Without it, the operation will fail noisily in\r
+; this situation.\r
+; This does mean that the user will be prompted to restart their machine\r
+; if any of the files _were_ open during installation (or, if /VERYSILENT\r
+; is used, the machine will be restarted automatically!). The /NORESTART\r
+; flag avoids this.\r
+; It might be nicer to have a "no worries, replace the file next time you\r
+; reboot" option, but the developers have no interest in adding one.\r
+; NB: apparently, using long (non-8.3) filenames with restartreplace is a\r
+; bad idea. (Not that we do.)\r
+Source: "putty.exe"; DestDir: "{app}"; Flags: promptifolder replacesameversion restartreplace uninsrestartdelete\r
+Source: "pageant.exe"; DestDir: "{app}"; Flags: promptifolder replacesameversion restartreplace uninsrestartdelete\r
+Source: "puttygen.exe"; DestDir: "{app}"; Flags: promptifolder replacesameversion restartreplace uninsrestartdelete\r
+Source: "pscp.exe"; DestDir: "{app}"; Flags: promptifolder replacesameversion restartreplace uninsrestartdelete\r
+Source: "psftp.exe"; DestDir: "{app}"; Flags: promptifolder replacesameversion restartreplace uninsrestartdelete\r
+Source: "plink.exe"; DestDir: "{app}"; Flags: promptifolder replacesameversion restartreplace uninsrestartdelete\r
+Source: "website.url"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete\r
+Source: "..\doc\putty.chm"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete\r
+Source: "..\doc\putty.hlp"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete\r
+Source: "..\doc\putty.cnt"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete\r
+Source: "..\LICENCE"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete\r
+Source: "README.txt"; DestDir: "{app}"; Flags: isreadme restartreplace uninsrestartdelete\r