title: How do I install WebExtension that developed by myself to Firefox Nightly?
body: <p>I already know the way to temporarily install an add-on for debugging.
  However, I want to install it persistently. I do not want to upload it to AMO, because I've developed it for use by myself only.  </p>
  
  <p>How do I install it on Firefox Nightly?</p>
  
  <p>Browser: <strong>Firefox Nightly 56a1</strong><br>
  OS: macOS 10.12.5</p>
  
  <h3>Edit</h3>
  
  <p>I attempted Andrew's way while referring to <a href="https://web.archive.org/web/20170910020945/https://stackoverflow.com/documentation/firefox-addon/3235/getting-started-with-firefox-addon/27246/installing-add-ons-for-development#t=201709100209448888249" rel="noreferrer">Getting started with firefox-addon</a>, but an error occurred (<code>This add-on could not be installed because it appears to be corrupt.</code>), despite that temporary installation was successful.<br>
  Why did installation fail only when installing it from <code>Install Add-on from File...</code>?</p>
  
  <p>Source code is here
  <a href="https://github.com/KiYugadgeter/webext" rel="noreferrer">https://github.com/KiYugadgeter/webext</a></p>
  
  <h3>Edit2:</h3>
  
  <p>The following is Error message on browser console.  </p>
  
  <pre><code>1497764354857   addons.xpi  WARN    Invalid XPI: Error: Cannot find id for 
  
  addon /
  Users/username/jsworks/webextensions/stacknotifier/something.xpi (resource://gre/modules/addons/XPIInstall.jsm:1642:17) JS Stack trace: loadManifest@XPIInstall.jsm:1642:17 &lt;
  async*init@XPIInstall.jsm:2122:13 &lt; async*createLocalInstall@XPIProvider.jsm:4820:12 &lt; getInstallForFile@XPIProvider.jsm:3437:5 &lt; callProviderAsync@AddonManager.jsm:297:12 &lt;
  promiseCallProvider/&lt;@AddonManager.jsm:321:53 &lt; Promise@Promise-backend.js:390:5 &lt;
  promiseCallProvider@AddonManager.jsm:320:10 &lt; getInstallForFile/&lt;@AddonManager.jsm:1856:29
  &lt; async*getInstallForFile@AddonManager.jsm:1854:13 &lt; getInstallForFile@AddonManager.jsm:
  3560:7 &lt; doCommand/&lt;@extensions.js:1472:13
  </code></pre>
  
  <hr>
  
  <pre><code>[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIURI.hostPort]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: resource://gre/modules/PopupNotifications.jsm :: PopupNotifications_refreshPanel/&lt; :: line 806"  data: no]
  </code></pre>