Portable Windows Version

Please consider creating a portable version of Mailspring.

Maybe a portableapps.com package?


(Originally posted by hl2guide on GitHub.)

(Original post had 14 upvotes.)

Is there any news on this for windows? Easiest way is to add a check during app startup: if there is a “portable” file within the exe directory then portable mode is enabled. All non-temporary file writings (basically settings and emails) should be redirected to subfolder of the Mailspring directory. Changing PC should not impact functionality.

squirrel should detect the situation automatically so just redirect the data folder to current dir in mailspring code and it should be done


(Originally posted by beppe9000 on GitHub.)

Hey folks—the autoupdater will probably never work in a portable mode but you should be able to install Mailspring on a thumbdrive by copying it’s AppData/Roaming folder to the volume and then launching it using the --config-dir-path E:\other\path option to specify where all the data should be placed (also a path on the thumbdrive).

The only thing is that Mailspring stores your passwords in your system Credential Vault, and if you run the app on another machine you’d have to reconnect all your accounts. We’d need a different password storage mechanism that relied on a flat file for this to be completely solved I think.


(Originally posted by bengotow on GitHub.)

The only thing is that Mailspring stores your passwords in your system Credential Vault, and if you run the app on another machine you’d have to reconnect all your accounts. We’d need a different password storage mechanism that relied on a flat file for this to be completely solved I think.

looks like it. some obfuscated json file should do the trick. for additional security a master password approach could be used: ask user for a password; use the hash to derive a cryptographic key to encrypt the json file. then prompt the user for the password at startup and offer to cache it in the system credential store (maybe creating a guid at first startup to uniquely identify mailspring instances for this purpose).

I see the code in Mailspring/key-manager.ts at d643826ff6b32e1abc14ae6c44eb6964ab6642e2 · Foundry376/Mailspring · GitHub
Keytar looks easy to mock, but it should be easier to check for app.IsPortableMode which should return true if running outside of appdata (same logic that squirrel uses) in the keymanager class and do json redirection there either by mocking the KeyManager class entirely or by adding if s.


(Originally posted by beppe9000 on GitHub.)