electron-vue 开发(4) 打包工具的使用以及管理员权限

1,483 阅读3分钟

electron官网

开发环境

使用到的框架

技术栈

  • c++
  • nodejs
  • html+css+js

接上篇

electron 中我们开发完成之后, 需要打包软件.官方推荐的打包工具有2中:electron-builderelectron-packager 我使用的是electron-packager

electron-vue 中的 electron-packager

electron-vue 中有直接帮你打包的脚本

npm or yarn

直接输入:

npm run build:win32
or
yarn run build:win32

就可以了, 不过由于npm镜像地址的原因, 下载打包的依赖文件比较多,使用npm还是经常会下载失败的,因此还是推荐使用yarn.

32位 or 64位

有时候我们需要编译32位或者64位的程序,在build.config.js里面修改 arch: ia32 x64 就可以分别编译成32位和64位的应用了

完成之后就可以看到在工程目录中多了build目录, 这就是已经打包出来的软件.

管理员权限

有时候我们希望打包出来的程序默认具有管理员权限, 这时候需要手动把windows的清单文件写进exe应用中. 步骤如下:

  1. 在软件exe目录下新建xml文件,名为manifest.xml
  2. manifest.xml内容如下

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <dependency>
        <dependentAssembly>
            <assemblyIdentity type="Win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
        </dependentAssembly>
    </dependency>
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
            <requestedPrivileges>
                <!-- 修改前 -->
                <!--
                <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
                -->
                <!-- 修改后 -->
                <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
                <!-- end 修改 -->
            </requestedPrivileges>
        </security>
    </trustInfo>
    <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
        <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
            <dpiAware>true</dpiAware>
                <disableWindowFiltering xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">true</disableWindowFiltering>
        </asmv3:windowsSettings>
    </asmv3:application>
    <ms_compatibility:compatibility xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <ms_compatibility:application xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1">
            <ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" 
                Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"></ms_compatibility:supportedOS>
            <ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" 
                Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"></ms_compatibility:supportedOS>
            <ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" 
                Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></ms_compatibility:supportedOS>
            <ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" 
                Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></ms_compatibility:supportedOS>
            <ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" 
                Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></ms_compatibility:supportedOS>
        </ms_compatibility:application>
    </ms_compatibility:compatibility>
</assembly>
  1. 确保本机有Windows 10 Sdk 这个可以在安装Vs2017的时候选择勾选

把当前目录添加到系统中的环境变量中. 添加成功后, 在控制台输入mt

C:\Users\Administrator> mt

会出现如下内容

切换目录到electron目录中

cd D:\electron-update\build\electron-update-win32-ia32

输入

mt -manifest manifest.xml -outputresource:electron-update.exe;1

这样软件启动的时候默认会已管理员权限启动了

Innosetup打包

使用electron-packager的问题就是不能直接打成一个软件安装包, 只有一个目录, 这个时候我们就借助第三方工具innosetup进行软件打包就好了, 官方有demo,还是很好上手的.