{"id":5265,"date":"2018-08-16T22:50:22","date_gmt":"2018-08-16T22:50:22","guid":{"rendered":"http:\/\/www.hexacorn.com\/blog\/?p=5265"},"modified":"2018-08-16T22:50:22","modified_gmt":"2018-08-16T22:50:22","slug":"squirrel-as-a-lolbin","status":"publish","type":"post","link":"https:\/\/www.hexacorn.com\/blog\/2018\/08\/16\/squirrel-as-a-lolbin\/","title":{"rendered":"Squirrel as a Lolbin"},"content":{"rendered":"<p>Squirrel is an installation and update framework for Windows desktop apps. It is used by many applications (e.g. slack) and as a result can be found on many systems. Like other <a href=\"https:\/\/www.hexacorn.com\/blog\/2017\/11\/10\/reusigned-binaries-living-off-the-signed-land\/\">installers<\/a> I described previously Squirrel includes a bunch of components \/ routines that can be used to simplify typical installation tasks. This makes it a good candidate for a lolbin.<\/p>\n<p>The simplest way to use Squirrel component as a lolbin is to copy a test file to the application directory of the installed application, and then run update.exe with a &#8216;processStart&#8217; command line argument.<\/p>\n<p>I will use Slack as an example, but it can be any application really.<\/p>\n<ul>\n<li>Go to c:\\Users\\&lt;user&gt;\\AppData\\Local\\slack\\<\/li>\n<li>Find the folder where application files are e.g. app-3.3.0\\<\/li>\n<li>Drop your test.exe there<\/li>\n<li>Now run &#8216;Update.exe &#8211;processStart test.exe&#8217;<\/li>\n<\/ul>\n<p>That&#8217;s it. The test.exe should be executed.<\/p>\n<p>There are alternatives: one could <a href=\"https:\/\/intellitect.com\/deploying-app-squirrel\/\">prepare<\/a> a nuget installation package and use the update process to download it from the internet and run it.<\/p>\n<p>Below is a full list of arguments that the tool supports (including the semi-documented ones i.e. these that are not listed when &#8211;help is used as a command line argument):<\/p>\n<pre>Commands\r\n--install=VALUE - Install the app whose package is in the specified directory\r\n--uninstall - Uninstall the app the same dir as Update.exe \r\n--download=VALUE - Download the releases specified by the URL and write new results to stdout as JSON\r\n--checkForUpdate=VALUE - Check for one available update and writes new results to stdout as JSON\r\n--update=VALUE - Update the application to the latest remote version specified by URL\r\n--releasify=VALUE - Update or generate a releases directory with a given NuGet package\r\n--createShortcut=VALUE - Create a shortcut for the given executable name \r\n--removeShortcut=VALUE - Remove a shortcut for the given executable name\r\n--updateSelf=VALUE - Copy the currently executing Update.exe into the default location\r\n--processStart=VALUE - Start an executable in the latest version of the app package\r\n--processStartAndWait=VALUE - Start an executable in the latest version of the app package\r\nOptions:\r\n-h, -?, --help - Display Help and exit\r\n-r, --releaseDir=VALUE- Path to a release directory to use with releasify\r\n-p, --packagesDir=VALUE - Path to the NuGet Packages directory for C# apps\r\n--bootstrapperExe=VALUE - Path to the Setup.exe to use as a template\r\n-g, --loadingGif=VALUE - Path to an animated GIF to be displayed during installation\r\n-i, --icon=VALUE - Path to an ICO file that will be used for icon shortcuts\r\n--setupIcon=VALUE - Path to an ICO file that will be used for the Setup executable's icon\r\n-n, --signWithParams=VALUE - Sign the installer via SignTool.exe with the parameters given\r\n-b, --baseUrl=VALUE - Provides a base URL to prefix the RELEASES file packages with\r\n-a, --process-start-args=VALUE - Arguments that will be used when starting executable\r\n-s, --silent - Silent install\r\n-l, --shortcut-locations=VALUE - Comma-separated string of shortcut locations, e.g. 'Desktop,StartMenu'\r\n--no-msi - Don't generate an MSI package<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Squirrel is an installation and update framework for Windows desktop apps. It is used by many applications (e.g. slack) and as a result can be found on many systems. Like other installers I described previously Squirrel includes a bunch of &hellip; <a href=\"https:\/\/www.hexacorn.com\/blog\/2018\/08\/16\/squirrel-as-a-lolbin\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[56,64],"tags":[],"_links":{"self":[{"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/posts\/5265"}],"collection":[{"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/comments?post=5265"}],"version-history":[{"count":3,"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/posts\/5265\/revisions"}],"predecessor-version":[{"id":5269,"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/posts\/5265\/revisions\/5269"}],"wp:attachment":[{"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/media?parent=5265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/categories?post=5265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hexacorn.com\/blog\/wp-json\/wp\/v2\/tags?post=5265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}