天天看點

elections打包

參考:

https://segmentfault.com/a/1190000007206301

http://www.shennongmin.org/?p=584

1.在應用目錄打開指令行,需要進入根目錄

正常打包需要用到electron-packager子產品,是以先在指令行中輸入npm install --save-dev electron-packager安裝。

2.package.json裡添加一條打包指令,免得每次打包都要輸入一長串指令。

與webpack的指令類似

"scripts": {

"package": "electron-packager ./ yunfu --win --out ./outApp --arch=x64 --version 1.0.0 --overwrite --ignore=node_modules"      

參數說明

electron-packager <location of project> <name of project> <platform> <architecture> <electron version> <optional options>

location of project:應用目錄;

name of project:應用名稱;

platform:要打包的平台;

architecture:x86 or x64架構;

electron version:electron 版本(不是應用版本);

optional options:其它選項;

3.執行npm run-script package開始打包。此時打包成功是類似免安裝的版本。

  打包完畢後,會多出來一個目錄,比如我的是taobao,打開之後,會有一個taobao-win32-x64目錄,裡面就是打包生成的各種檔案。

========================================================================================================

注意:之後操作的路徑:

在之前打包之後,建立的檔案夾根目錄下面

我的,就是在目前目錄的 outApp檔案夾下面,這是我正常打包的輸出目錄

輸出exe安裝檔案,需要在之前,正常的打包方式下面進行....

4.打包成安裝版,在上面的步驟之後繼續下去,在生成的outApp檔案夾下,有taobao-win32-x64檔案夾,在此檔案夾的同層進行處理。

5.建立package.json檔案,package.json的内容可以簡單寫下:

{

  "name": "taobao",

  "version": "1.0.0"  

}

6.打開指令行,(之前,在這一步出的問題--沒有裝grunt-cli)

輸入npm install grunt-electron-installer --save-dev安裝grunt-electron-installer子產品,

再安裝grunt -cli,npm install -g grunt-cli,

接着輸入npm install grunt --save-dev安裝grunt。

7.配置Gruntfile.js。建立一個Gruntfile.js檔案,并配置gurnt.config,我的配置如下:

var grunt = require("grunt");

grunt.config.init({

    pkg: grunt.file.readJSON('package.json'),

    'create-windows-installer': {

        x64: {

            appDirectory: 'taobao-win32-x64',

            authors: 'zf.',

            exe: 'taobao.exe',

            description:"taobao",

        }       

    }

})

grunt.loadNpmTasks('grunt-electron-installer');

grunt.registerTask('default', ['create-windows-installer']);

8.grunt打包,輸入grunt。(不是npm grunt)

9.在main.js裡加入生成快捷方式的功能。

//添加監聽并生成快捷方式

var handleStartupEvent = function () {

  if (process.platform !== 'win32') {

    return false;

  }

  var squirrelCommand = process.argv[1];

  switch (squirrelCommand) {

    case '--squirrel-install':

    case '--squirrel-updated':

      install();

      return true;

    case '--squirrel-uninstall':

      uninstall();

      app.quit();

      return true;

    case '--squirrel-obsolete':

      app.quit();

      return true;

  }

    // 安裝

  function install() {

    var cp = require('child_process');    

    var updateDotExe = path.resolve(path.dirname(process.execPath), '..', 'update.exe');

    var target = path.basename(process.execPath);

    var child = cp.spawn(updateDotExe, ["--createShortcut", target], { detached: true });

    child.on('close', function(code) {

        app.quit();

    });

  }

   // 解除安裝

   function uninstall() {

    var cp = require('child_process');    

    var updateDotExe = path.resolve(path.dirname(process.execPath), '..', 'update.exe');

    var target = path.basename(process.execPath);

    var child = cp.spawn(updateDotExe, ["--removeShortcut", target], { detached: true });

    child.on('close', function(code) {

        app.quit();

    });

  }

};

if (handleStartupEvent()) {

  return;

}

10.版本更新的時候:

重新打包  進入項目的根目錄:

npm run-script package開始打包

重新建立安裝檔案:

進入outAppk路徑下面:

grunt                     

貌似會報錯,但是效果也是可以實作的....   不知道為毛

繼續閱讀