Skip to content

Instantly share code, notes, and snippets.

@chssweb
Last active July 20, 2024 02:41
Show Gist options
  • Save chssweb/bd8d80dc4c539546e9de to your computer and use it in GitHub Desktop.
Save chssweb/bd8d80dc4c539546e9de to your computer and use it in GitHub Desktop.
WinSCP Portable - Integration with Putty

This tries to fix the annoying need to launch Putty prior to using it with WinSCP portable. Both, by the way, are excellant pieces of code and I am in debt to their author(s).

Links

Make the changes as suggested in the last comment of the first link

Edit PuTTYPortableLinkerU.nsi

Insert Line after line 78 before:
FindProcDLL::FindProc "PuTTYPortable.exe"
StrCmp $R0 "1" GetPassedParameters WarnAnotherInstance

after:
FindProcDLL::FindProc "PuTTYPortable.exe"
StrCmp $R0 "0" GetPassedParameters
StrCmp $R0 "1" GetPassedParameters WarnAnotherInstance

Recompile NSIS and save PortableApps\WinSCPPortable\App\winscp\PuTTYPortableLinker.exe

Done.

You can get the nsis compiler from

Just load the edited nsi file into the compiler window and let it do its thing. You'll need PuTTYPortableLinker.ico as well - can be found via google, or base64 decode the string below and save as PuTTYPortableLinker.ico using a online tool such as:

--- WinSCPPortableU.nsi 2014-02-07 13:03:04.000000000 +0000
+++ WinSCPPortableU-2.nsi 2015-03-30 11:39:01.944041300 +0100
@@ -145,7 +145,7 @@
StrCpy $0 `$PROGRAMDIRECTORY\PuTTYPortableLinker.exe`
;${StrReplace} $1 "\" "%5C" $0
${WordReplace} $0 "\" "%5C" "+" $1
- WriteINIStr "$SETTINGSDIRECTORY\winscp.ini" "Configuration\Interface" "PuttyPath" "$1"
+ ;WriteINIStr "$SETTINGSDIRECTORY\winscp.ini" "Configuration\Interface" "PuttyPath" "$1"
;GetCurrentLanguage
ReadINIStr $0 "$SETTINGSDIRECTORY\winscp.ini" "Configuration\Interface" "LocaleSafe"
AAABAAMAEBAQAAAAAAAoAQAANgAAACAgEAAAAAAA6AIAAF4BAAAwMBAAAAAAAGgGAABGBAAAKAAA
ABAAAAAgAAAAAQAEAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAA
gACAAICAAADAwMAAgICAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAeIiIiA
AAAAD///iIgAAAAAiIiIiAAAAAB4h3eAAAAAAPS0x4AAAAAA/EtIgAAAAAD8RLsAiIgAAPi7u7CI
iIAAAAC7u7CIgAAAAAu4h3gAAAAACEtMeAAAAAAPxLR4AAAAAA/MRHgAAAAAD///eAAAAAAAAAAA
AIB/AAAAPwAAAB8AAIAfAACAPwAAgD8AAIADAACAAQAAgAAAAMAAAAD8AQAA/AEAAPwBAAD8AQAA
/AEAAP4DAAAoAAAAIAAAAEAAAAABAAQAAAAAAIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAA
gAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAA
AAAAAAAAAAAAAAAAAAAHiIiIiIiIiIgAAAAAAAAAD3d3d3eAAAh4gAAAAAAAAA93d3d3d3d3eIgA
AAAAAAAP//////////eIAAAAAAAAAHAAAAAAAAB/iAAAAAAAAAAAeIiIiIiIB/gAAAAAAAAAAP//
////eIAAAAAAAAAAAAD0zMzMzHiAAAAAAAAAAAAA9MwAzMx4gAAAAAAAAAAAAPTMCwzMeIAAAAAA
AAAAAAD0zMCwDHiAAAAAAAAAAAAA9MzMC7B4gAAAAAAAAAAAAPTMzMC7CIAAAAAAAAAAAAD0RERE
C7AAAAAAAAAAAAAA//////C7sIiIiIiIgAAAAAd3dwAAC7sHeAAAh4gAAAAAAAC7u7u7sAd3d3eI
gAAAAAAAALu7u7uw////eIAAAAAAAAALuwAAAAAAB/iAAAAAAAAAALuwiIiIiIB/gAAAAAAAAAAA
uw////eIAAAAAAAAAAAADwuwzMzHiAAAAAAAAAAAAA9AuwzMx4gAAAAAAAAAAAAPTACwzMeIAAAA
AAAAAAAAD0zMCwzHiAAAAAAAAAAAAA9MzMAMx4gAAAAAAAAAAAAPTMzMzMeIAAAAAAAAAAAAD0RE
RERHiAAAAAAAAAAAAA//////94gAAAAAAAAAAAAAd3d3d3d4AAAAAAAAAAAAAAAAAAAAAAAAgAA/
/wAAH/8AAA//AAAH/wAAB/+AAAf/wAAH/+AAD//gAD//4AA//+AAP//gAD//4AA//+AAP//gAAAH
4AAAA/AAAAH4AAAA/8AAAP/wAAD/+AAA//wAAf/8AAf//AAH//wAB//8AAf//AAH//wAB//8AAf/
/AAH//4AB///AA8oAAAAMAAAAGAAAAABAAQAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
gAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd4iIiIiIiIiIiIiIgAAAAAAAAAAAAAAAd4iIiIiIiI
iIiIiIiAAAAAAAAAAAAAAA/3d3d3d3d4AAAAB4iIAAAAAAAAAAAAAA///////////////3iIgAAA
AAAAAAAAAA////////////////eIgAAAAAAAAAAAAAB3AAAAAAAAAAAAB/+IgAAAAAAAAAAAAAAH
B4iIiIiIiIiIgH/4gAAAAAAAAAAAAAAAD3d3d3d3d3d4iAf/gAAAAAAAAAAAAAAAD3/////////4
iIAAAAAAAAAAAAAAAAAAD4TMzMzMzMz4iIAAAAAAAAAAAAAAAAAAD4TMzMzMzMz4iIAAAAAAAAAA
AAAAAAAAD4TMzMzMzMz4iIAAAAAAAAAAAAAAAAAAD4TMzMzMzMz4iIAAAAAAAAAAAAAAAAAAD4TM
zADMzMz4iIAAAAAAAAAAAAAAAAAAD4TMzAsMzMz4iIAAAAAAAAAAAAAAAAAAD4TMzMCwzMz4iIAA
AAAAAAAAAAAAAAAAD4TMzMwLAMz4iIAAAAAAAAAAAAAAAAAAD4RERERAuwT4iIAAAAAAAAAAAAAA
AAAAD4iIiIiIC7B4iIAAAAAAAAAAAAAAAAAAD///////8LsAiIAAAAAAAAAAAAAAAAAAAHd3d3d3
dwu7CIAAAAAAAAAAAAAAAAAAAAd3d3d3d3ALsIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuwAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAC7sAAAAAAAAAAAAAAAAAAAAAAAAAu7u7u7uwiIiIiIiIiIgAAAAA
AAAAAAAAALu7u7u7CIiIiIiIiIiAAAAAAAAAAAAAAAu7u7u7sAd4AAAAB4iIAAAAAAAAAAAAAAC7
u7u7u7D//////3iIgAAAAAAAAAAAAA8LuwAAAA////////eIgAAAAAAAAAAAAABwC7AAAAAAAAAA
B/+IgAAAAAAAAAAAAAAHALsAiIiIiIiIgH/4gAAAAAAAAAAAAAAADwu7B3d3d3d4iAf/gAAAAAAA
AAAAAAAAD3ALsP/////4iIAAAAAAAAAAAAAAAAAAD4TAuwzMzMz4iIAAAAAAAAAAAAAAAAAAD4TM
C7DMzMz4iIAAAAAAAAAAAAAAAAAAD4TMwAsMzMz4iIAAAAAAAAAAAAAAAAAAD4TMzMCwzMz4iIAA
AAAAAAAAAAAAAAAAD4TMzMwLDMz4iIAAAAAAAAAAAAAAAAAAD4TMzMzADMz4iIAAAAAAAAAAAAAA
AAAAD4TMzMzMzMz4iIAAAAAAAAAAAAAAAAAAD4TMzMzMzMz4iIAAAAAAAAAAAAAAAAAAD4RERERE
RET4iIAAAAAAAAAAAAAAAAAAD4iIiIiIiIh4iIAAAAAAAAAAAAAAAAAAD//////////3iIAAAAAA
AAAAAAAAAAAAAHd3d3d3d3d3eIAAAAAAAAAAAAAAAAAAAAd3d3d3d3d3d4AAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAIAAAD///wAAAAAAH///AAAAAAAP//8AAAAAAAf//wAAAAAAA///AAAAAAAD
//8AAIAAAAP//wAAwAAAA///AADgAAAD//8AAPAAAAf//wAA8AAAP///AADwAAA///8AAPAAAD//
/wAA8AAAP///AADwAAA///8AAPAAAD///wAA8AAAP///AADwAAA///8AAPAAAD///wAA8AAAP///
AADwAAA///8AAPgAAD///wAA/AAAP///AAD+AAA///8AAP//AAAADwAA//4AAAAHAAD//wAAAAMA
AP//wAAAAQAA///AAAAAAAD//8AAAAAAAP//4AAAAAAA///wAAAAAAD///gAAAAAAP///AAAAQAA
///8AAAPAAD///wAAA8AAP///AAADwAA///8AAAPAAD///wAAA8AAP///AAADwAA///8AAAPAAD/
//wAAA8AAP///AAADwAA///8AAAPAAD///wAAA8AAP///gAADwAA////AAAPAAD///+AAB8AAA==

** PuttyPortable Linker didn't work for me - below is a replacement technique **

Now recompiling winscpportable launcher:

Changes to WinSCPPortableU.nsi

  1. Add to ;=== Include

!include StrRep.nsh

(You may need to copy the StrRep.nsh to the appropriate plugin directory of nsis)

  1. comment out line that restores putty as default external application

     ;WriteINIStr "$SETTINGSDIRECTORY\winscp.ini" "Configuration\Interface" "PuttyPath" "$1"
    
  2. Compile this

  3. Launch winSCP and change exeternal application choice to

(Browse to) PortableApps\KiTTYPortable\KiTTYPortable.exe -cmd "cd ""!/""" !U@!@

The important part is documented on the winscp site about adding the '-cmd "cd ""!/""" !U@!@' to the end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment