         desktopInstallFile = path.join(installDir, 'share', 'applications', 'nylas.desktop')
 
         {description} = grunt.file.readJSON('package.json')
-        iconName = path.join(shareDir, 'resources', 'app', 'nylas.png')
+        iconName = path.join(linuxShareDir, 'resources', 'app', 'nylas.png')
         installDir = path.join(installDir, '.') # To prevent "Exec=/usr/local//share/nylas/nylas"
-        template = _.template(String(fs.readFileSync(desktopFile)))
-        filled = template({description, installDir, iconName})
+        template = _.template(fs.readFileSync(desktopFile, 'utf8'))
+        filled = template({appFileName, description, installDir, iconName, linuxShareDir})
 
         grunt.file.write(desktopInstallFile, filled)
 
-      fs.chmodSync(path.join(shareDir, 'nylas'), "755")
+      fs.chmodSync(path.join(linuxShareDir, 'nylas'), "755")
 
     grunt.log.ok("Installed Nylas into #{installDir}")

      fs.renameSync(tempFolder, installDir)

    else
      binDir = path.join(installDir, 'bin')
      shareDir = path.join(installDir, 'share', 'nylas')
      iconName = path.join(shareDir, 'resources', 'app', 'nylas.png')

      mkdir binDir
      # Note that `N1.sh` can't be renamed `nylas.sh` because `apm`
      # is currently hard-coded to call `N1.sh`
      cp 'N1.sh', path.join(binDir, 'nylas')
      rm shareDir
      mkdir path.dirname(shareDir)
      cp shellAppDir, shareDir

      # Create nylas.desktop if installation not in temporary folder
      tmpDir = if process.env.TMPDIR? then process.env.TMPDIR else '/tmp'

  {cp, mkdir, rm} = require('./task-helpers')(grunt)

  grunt.registerTask 'install', 'Install the built application', ->
    appFileName = grunt.config.get('nylasGruntConfig.appFileName')
    installDir = grunt.config.get('nylasGruntConfig.installDir')
    shellAppDir = grunt.config.get('nylasGruntConfig.shellAppDir')

