title: Can't Add Icon To Electron App With Electron Builder
body: <p>I have made an app with Electron and am trying to package it with Electron Builder.</p>
  
  <blockquote>
    <p>Link to repository</p>
  </blockquote>
  
  <p>Does not contain node_modules folder: <a href="https://github.com/Handmade-Studios/app-attendant" rel="noreferrer">Repo here</a></p>
  
  <p>I have a folder named build with my icon.ico in it and my package.json is as follows:</p>
  
  <pre><code>{
      "name": "attendant",
      "productName": "Attendant",
      "version": "0.1.0",
      "description": "A simple app to streamline web development by allowing you index.html to open on a live server in the default browser",
      "main": "main.js",
      "scripts": {
          "start": "electron .",
          "pack": "electron-builder --dir",
          "dist": "electron-builder"
      },
      "devDependencies": {
          "electron": "^8.0.1",
          "electron-builder": "^22.3.2"
      },
      "build": {
          "appId": "com.attendant",
          "win": {
              "icon": "./build/icon.png",
              "title": "Attendant",
              "msi": true
          }
      }
  }
  </code></pre>
  
  <p>However, I receive the following error:</p>
  
  <pre><code>error Command failed with exit code 1.
  info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
  </code></pre>
  
  <p>Any ideas why this happening and how to fix it?</p>
  
  <p>With the following <code>package.json</code>:</p>
  
  <pre><code>{
      "name": "attendant",
      "productName": "Attendant",
      "version": "0.1.0",
      "description": "A simple app to streamline web development by allowing you index.html to open on a live server in the default browser",
      "main": "main.js",
      "scripts": {
          "start": "electron .",
          "pack": "electron-builder --dir",
          "dist": "electron-builder build"
      },
      "devDependencies": {
          "electron": "^8.0.1",
          "electron-builder": "^22.3.2"
      },
      "build": {
          "appId": "com.attendant",
          "directories": {
              "buildResources": "build"
          },
          "win": {
              "icon": "build/icon.png",
              "title": "Attendant",
              "msi": true
          }
      }
  }
  </code></pre>
  
  <p>I receive the error:</p>
  
  <pre><code>yarn dist
  yarn run v1.22.0
  warning package.json: No license field
  $ electron-builder build
    • electron-builder  version=22.3.2 os=10.0.18363
    • loaded configuration  file=package.json ("build" field)
    • author is missed in the package.json  appPackageFile=C:\Users\alexr\Documents\GitHub\attendant-app\app\package.json
    ⨯ Invalid configuration object. electron-builder 22.3.2 has been initialised using a configuration object that 
  does not match the API schema.
   - configuration.win should be one of these:
     object { additionalCertificateFile?, appId?, artifactName?, asar?, asarUnpack?, certificateFile?, certificatePassword?, certificateSha1?, certificateSubjectName?, compression?, cscKeyPassword?, cscLink?, detectUpdateChannel?, electronUpdaterCompatibility?, extraFiles?, extraResources?, fileAssociations?, files?, forceCodeSigning?, generateUpdatesFilesForAllChannels?, icon?, legalTrademarks?, protocols?, publish?, publisherName?, releaseInfo?, requestedExecutionLevel?, rfc3161TimeStampServer?, sign?, signAndEditExecutable?, signDlls?, signingHashAlgorithms?, target?, timeStampServer?, verifyUpdateCodeSignature? } | null
     -&gt; Options related to how build Windows targets.
     Details:
      * configuration.win has an unknown property 'title'. These properties are valid:
        object { additionalCertificateFile?, appId?, artifactName?, asar?, asarUnpack?, certificateFile?, certificatePassword?, certificateSha1?, certificateSubjectName?, compression?, cscKeyPassword?, cscLink?, detectUpdateChannel?, electronUpdaterCompatibility?, extraFiles?, extraResources?, fileAssociations?, files?, forceCodeSigning?, 
  generateUpdatesFilesForAllChannels?, icon?, legalTrademarks?, protocols?, publish?, publisherName?, releaseInfo?, requestedExecutionLevel?, rfc3161TimeStampServer?, sign?, signAndEditExecutable?, signDlls?, signingHashAlgorithms?, target?, timeStampServer?, verifyUpdateCodeSignature? }
      * configuration.win has an unknown property 'msi'. These properties are valid:
        object { additionalCertificateFile?, appId?, artifactName?, asar?, asarUnpack?, certificateFile?, certificatePassword?, certificateSha1?, certificateSubjectName?, compression?, cscKeyPassword?, cscLink?, detectUpdateChannel?, electronUpdaterCompatibility?, extraFiles?, extraResources?, fileAssociations?, files?, forceCodeSigning?, 
  generateUpdatesFilesForAllChannels?, icon?, legalTrademarks?, protocols?, publish?, publisherName?, releaseInfo?, requestedExecutionLevel?, rfc3161TimeStampServer?, sign?, signAndEditExecutable?, signDlls?, signingHashAlgorithms?, target?, timeStampServer?, verifyUpdateCodeSignature? }
       How to fix:
       1. Open https://www.electron.build/configuration/win
       2. Search the option name on the page (or type in into Search to find across the docs).
         * Not found? The option was deprecated or not exists (check spelling).
         * Found? Check that the option in the appropriate place. e.g. "title" only in the "dmg", not in the root. 
    stackTrace=
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                     ValidationError: Invalid configuration object. electron-builder 22.3.2 has been initialised using a configuration object that does not match the API schema.   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                      - configuration.win should be one of these:  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                        object { additionalCertificateFile?, appId?, artifactName?, asar?, asarUnpack?, certificateFile?, certificatePassword?, certificateSha1?, certificateSubjectName?, compression?, cscKeyPassword?, cscLink?, detectUpdateChannel?, electronUpdaterCompatibility?, extraFiles?, extraResources?, fileAssociations?, files?, forceCodeSigning?, generateUpdatesFilesForAllChannels?, icon?, legalTrademarks?, protocols?, publish?, publisherName?, releaseInfo?, requestedExecutionLevel?, rfc3161TimeStampServer?, sign?, signAndEditExecutable?, signDlls?, signingHashAlgorithms?, target?, timeStampServer?, verifyUpdateCodeSignature? } | null
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                        -&gt; Options related to how build Windows targets.
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                        Details:
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                         * configuration.win has an unknown property 'title'. These properties are valid:
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                           object { additionalCertificateFile?, appId?, artifactName?, asar?, asarUnpack?, certificateFile?, certificatePassword?, certificateSha1?, certificateSubjectName?, compression?, cscKeyPassword?, cscLink?, detectUpdateChannel?, electronUpdaterCompatibility?, extraFiles?, extraResources?, fileAssociations?, files?, forceCodeSigning?, generateUpdatesFilesForAllChannels?, icon?, legalTrademarks?, protocols?, publish?, publisherName?, releaseInfo?, requestedExecutionLevel?, rfc3161TimeStampServer?, sign?, signAndEditExecutable?, signDlls?, signingHashAlgorithms?, target?, timeStampServer?, verifyUpdateCodeSignature? }
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                         * configuration.win has an unknown property 'msi'. These properties are valid:
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                           object { additionalCertificateFile?, appId?, artifactName?, asar?, asarUnpack?, certificateFile?, certificatePassword?, certificateSha1?, certificateSubjectName?, compression?, cscKeyPassword?, cscLink?, detectUpdateChannel?, electronUpdaterCompatibility?, extraFiles?, extraResources?, fileAssociations?, files?, forceCodeSigning?, generateUpdatesFilesForAllChannels?, icon?, legalTrademarks?, protocols?, publish?, publisherName?, releaseInfo?, requestedExecutionLevel?, rfc3161TimeStampServer?, sign?, signAndEditExecutable?, signDlls?, signingHashAlgorithms?, target?, timeStampServer?, verifyUpdateCodeSignature? }
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                          How to fix:
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                          1. Open https://www.electron.build/configuration/win
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                          2. Search the option name on the page (or type in into Search to find across the docs).
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                            * Not found? The option was deprecated 
  or not exists (check spelling).
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                            * Found? Check that the option in the appropriate place. e.g. "title" only in the "dmg", not in the root.
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                         at validate (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\@develar\schema-utils\dist\validate.js:50:11)
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                         at validateConfig (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\util\config.ts:229:3)
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                         at Packager._build (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\packager.ts:342:5)
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                         at Packager.build (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\packager.ts:337:12)
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                         at executeFinally (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\node_modules\builder-util\src\promise.ts:12:14)
  error Command failed with exit code 1.
  info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
  </code></pre>
  
  <blockquote>
    <h1>Edit number 2</h1>
  </blockquote>
  
  <p>I am now receiving the following error:</p>
  
  <pre><code>yarn run v1.22.0
  warning package.json: No license field
  $ electron-builder build
    • electron-builder  version=22.3.2 os=10.0.18363
    • loaded configuration  file=package.json ("build" field)
    • author is missed in the package.json  appPackageFile=C:\Users\alexr\Documents\GitHub\attendant-app\app\package.json
    • writing effective config  file=dist\builder-effective-config.yaml
    • packaging       platform=win32 arch=x64 electron=8.0.1 appOutDir=dist\win-unpacked
    • asar usage is disabled — this is strongly not recommended  solution=enable asar and use asarUnpack to unpack 
  files that must be externally available
    ⨯ cannot execute  cause=exit status 1
                      errorOut=Fatal error: Unable to commit changes
  
                      command='C:\Users\alexr\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.5.0\rcedit-x64.exe' 'C:\Users\alexr\Documents\GitHub\attendant-app\app\dist\win-unpacked\Attendant.exe' --set-version-string FileDescription Attendant --set-version-string ProductName Attendant --set-version-string LegalCopyright 'Copyright © 2020 Attendant' --set-file-version 1.1.0 --set-product-version 1.1.0.0 --set-version-string InternalName Attendant --set-version-string OriginalFilename '' --set-icon 'C:\Users\alexr\Documents\GitHub\attendant-app\app\dist\.icon-ico\icon.ico'
                      workingDir=
    ⨯ C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-bin\win\x64\app-builder.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE  stackTrace=
  
                                                    Error: C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-bin\win\x64\app-builder.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
  
                                                        at ChildProcess.&lt;anonymous&gt; (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\node_modules\builder-util\src\util.ts:239:14)
  
                                                        at Object.onceWrapper (events.js:313:26)
  
                                                        at ChildProcess.emit (events.js:223:5)
  
                                                        at maybeClose (internal/child_process.js:1021:16)
  
                                                        at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
  
                                                    From previous event:
  
                                                        at processImmediate (internal/timers.js:439:21)
  
                                                    From previous event:
  
                                                        at WinPackager.signApp (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\winPackager.ts:357:27)
  
                                                        at WinPackager.doPack (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\platformPackager.ts:243:16)
  
                                                        at WinPackager.pack (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\platformPackager.ts:114:5)
  
                                                        at Packager.doBuild (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\packager.ts:444:9)
  
                                                        at executeFinally (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\node_modules\builder-util\src\promise.ts:12:14)
  
                                                        at Packager._build (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\packager.ts:373:31)
  
                                                        at Packager.build (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\packager.ts:337:12)
  
                                                        at executeFinally (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\node_modules\builder-util\src\promise.ts:12:14)
  error Command failed with exit code 1.
  info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
  
  </code></pre>
  
  <p>thanks for the support so far</p>