electron使用electron-builder macOS windows 打包 签名 更新 上架
0. 前言
0.1 项目工程
看清目录结构,以便您阅读后续内容


0.2 参考资料
(1)macOS开发 证书等配置/打包后导出及上架
https://www.jianshu.com/p/c9c71f2f6eac首先需要为Mac App创建App ID: 填写信息如下—Description为"ProjectNameForMac"、Bundle ID为"com.CompanyName...
https://www.jianshu.com/p/c9c71f2f6eac(2) electron应用提交到Mac App Store(MAS)全流程
https://www.jianshu.com/p/3f4765c319b6
https://www.jianshu.com/p/3f4765c319b6
1. 安装electron-builder
2. macOS
2.1 创建 Certificates, Identifiers & Profiles Devices
在mac上安装xcode,打开xcode,然后按以下步骤操作。
(1) xcode的菜单栏:xcode > settings。登录apple id。

(2) 登录后,点击“Download Manual Profiles”,再然后点击“Manage Certificates...”
再添加下面4个证书,创建后,该证书会自动在 网页上显示出来。
Sign In - Apple
https://developer.apple.com/account/resources/certificates/list

(3)打开以下网址,就会看到前一步创建的 证书
https://developer.apple.com/account/resources/certificates/list

(4) 创建 Identifiers


(5)创建 Devices(这个自行百度吧)
(6)创建Profiles


2.2 下载 Certificates Profiles 到本地 resource文件中

点击 Certificates 列表中的证书,然后点击“download”

在 Profiles 列表中点击“download”

2.3 检查macOS系统的证书配置情况
在 2.1 的步骤用xcode创建证书后,证书会显示在 钥匙串 中(自行百度打开这个程序)
(1) 登录>我的证书 中会看到以下两个证书(还有一个证书 Mac Developer ID Application的证书让我删除了,没在截图中)

(2) 登录>密钥 中会看到以下四个密钥

(3) 系统>我的证书 中会看到以下一个证书

(4) 系统>证书 中会看到以下两个证书

注意注意注意注意注意:
(1) 在每一张单个截图(不是所有截图,只指单个截图)中,证书不能重复,切记(血的教训,不要问为什么,我也不能给你解释清楚)。
如果重复了,就删除这些证书,然后把 2.2下载的cer后缀的证书 在macOS中双击,则就会安装到 “钥匙串访问”程序中
(2) 如果在 系统>证书 的列表中找到“Apple Worldwide Developer Relations Certification Authority”,则从官网下载,至于下载哪个,我也忘记了,你自己 研究一下,大概是 截图中任意一个即可,呵呵。
(3)以上截图中证书的位置大抵如此,反正我就是这么成功的,我也没空再去研究了。如果你没成功,那可以参考我的截图中证书的位置,至少能成功。
https://www.apple.com/certificateauthority/

2.4 安装 provisionprofile 文件
我也不知道要不要安装,反正我是安装了,干脆你也安装吧。

安装后,在此处 会显示这玩意,貌似“greader_distribution.provisionprofile”装上上

2.4 导出 p12文件,以备后用




导出以下四个文件,导出时要求输入密码,你自己输入吧(假设我设置的密码为 gege123)
四个文件的名字各种对应哪个证书,你自己猜猜看。

2.5 再次查看证书情况
打开shell,输入如下命令
xcrun security find-identity -v -p codesigning
注意:不要他奶奶的切换到 sudo su,就用你的正常 用户

看到没,有4个证书安装成功了,如果不成功,就根据2.3重新来一次。
2.6 创建plist文件,以备后用
我也不知道为啥要搞这些文件,你搞就对了。
(1) entitlements.mas.loginhelper.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>com.apple.security.app-sandbox</key><true/></dict>
</plist>
(2) entitlements.mas.plist
文件中部分内容替换您自己的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>com.apple.security.app-sandbox</key><true/><key>com.apple.security.application-groups</key><array><string>GN5XP7HD2C.cn.rouhuasuan.greader (改成你自己的哈)</string></array><key>com.apple.application-identifier</key><string>GN5XP7HD2C.cn.rouhuasuan.greader (改成你自己的哈)</string><key>com.apple.security.network.client</key><true/><key>com.apple.security.network.server</key><true/><key>com.apple.security.cs.allow-jit</key><true/><key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/><key>com.apple.security.cs.allow-dyld-environment-variables</key><true/><key>com.apple.security.files.user-selected.read-only</key><true/><key>com.apple.security.files.user-selected.read-write</key><true/><key>com.apple.security.files.downloads.read-write</key><true/></dict>
</plist>
(3)entitlements.mas.inherit.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>com.apple.security.app-sandbox</key><true/><key>com.apple.security.inherit</key><true/></dict>
</plist>
2.7 package.json 配置
2.7.1 整体配置
(1)总体配置如下,但是根据不同的包格式,得做简单修改。
(2)在后文我也不解释有啥区别,你自己对比一下就知道了。
{"name": "greader","productName": "greader","version": "22.7.8","description": "A reader with transparent window background, arbitrary window size, and auto-hide","author": {"name": "youername","email": "youeremail","url": "youer office site"},"main": "src/bootstrap.js","scripts": {"pack": " electron-builder --dir ","win": " electron-builder --win --x64","mac": " electron-builder --mac","postinstall": "electron-builder install-app-deps"},"keywords": [],"license": "MIT","dependencies": {"bytenode": "^1.5.0","dayjs": "^1.11.8","electron-log": "^4.4.8","iconv-lite": "^0.6.3","jschardet": "^3.0.0","node-machine-id": "^1.1.12","yarn": "^1.22.21"},"devDependencies": {"electron": "25.3.0","electron-builder": "^24.6.4"},"build": {"appId": "GN5XP7HD2C.cn.rouhuasuan.greader","productName": "Greader","copyright": "Copyright © 2021 Alaso","directories": {"buildResources": "build","output": "dist"},"mac": {"category": "public.app-category.utilities","target":["dmg", "pkg", "mas", "mas-dev"],"hardenedRuntime": true,"gatekeeperAssess": false,"icon":"resource/mac.icns","entitlements": "./resource/entitlements.mas.plist","entitlementsInherit": "./resource/entitlements.mas.inherit.plist","extendInfo": {"ElectronTeamID": "GN5XP7HD2C","com.apple.developer.team-identifier": "GN5XP7HD2C","com.apple.application-identifier": "GN5XP7HD2C.cn.rouhuasuan.greader","Bundle name": "Greader","LSHasLocalizedDisplayName": true,"ITSAppUsesNonExemptEncryption": "NO"}},"mas": {"type": "distribution","identity": "penghui deng (GN5XP7HD2C)","hardenedRuntime" : false, "provisioningProfile": "./resource/greader_distribution.provisionprofile"},"masDev": {"type": "development","identity": "penghui deng (8MUK7LXZQ5)","hardenedRuntime": false,"provisioningProfile": "./resource/greader_development.provisionprofile"},"dmg": {},"pkg": {"identity": "penghui deng (GN5XP7HD2C)"},"win":{"target": ["nsis", "msi", "zip"],"icon": "resource/win.ico"},"nsis": {"oneClick": false,"perMachine": false,"allowToChangeInstallationDirectory": true},"msi": {"menuCategory": "bestapp"}}
}
2.7.2 编译mas-dev
(1)package配置
{"name": "greader","productName": "greader","version": "22.7.8","description": "A reader with transparent window background, arbitrary window size, and auto-hide","author": {"name": "youername","email": "youeremail","url": "youer office site"},"main": "src/bootstrap.js","scripts": {"pack": " electron-builder --dir ","win": " electron-builder --win --x64","mac": " electron-builder --mac","postinstall": "electron-builder install-app-deps"},"keywords": [],"license": "MIT","dependencies": {"bytenode": "^1.5.0","dayjs": "^1.11.8","electron-log": "^4.4.8","iconv-lite": "^0.6.3","jschardet": "^3.0.0","node-machine-id": "^1.1.12","yarn": "^1.22.21"},"devDependencies": {"electron": "25.3.0","electron-builder": "^24.6.4"},"build": {"appId": "GN5XP7HD2C.cn.rouhuasuan.greader","productName": "Greader","copyright": "Copyright © 2021 Alaso","directories": {"buildResources": "build","output": "dist"},"mac": {"category": "public.app-category.utilities","target":["mas-dev"],"hardenedRuntime": true,"gatekeeperAssess": false,"icon":"resource/mac.icns","entitlements": "./resource/entitlements.mas.plist","entitlementsInherit": "./resource/entitlements.mas.inherit.plist","extendInfo": {"ElectronTeamID": "GN5XP7HD2C","com.apple.developer.team-identifier": "GN5XP7HD2C","com.apple.application-identifier": "GN5XP7HD2C.cn.rouhuasuan.greader","Bundle name": "Greader","LSHasLocalizedDisplayName": true,"ITSAppUsesNonExemptEncryption": "NO"}},"mas": {"type": "distribution","identity": "penghui deng (GN5XP7HD2C)","hardenedRuntime" : false, "provisioningProfile": "./resource/greader_distribution.provisionprofile"},"masDev": {"type": "development","identity": "penghui deng (8MUK7LXZQ5)","hardenedRuntime": false,"provisioningProfile": "./resource/greader_development.provisionprofile"},"dmg": {},"pkg": {"identity": "penghui deng (GN5XP7HD2C)"},"win":{"target": ["nsis", "msi", "zip"],"icon": "resource/win.ico"},"nsis": {"oneClick": false,"perMachine": false,"allowToChangeInstallationDirectory": true},"msi": {"menuCategory": "bestapp"}}
}
(2)执行命令
export CSC_IDENTITY_AUTO_DISCOVERY=false
export CSC_LINK=/Users/dhzy/Desktop/project2/cer/appdev.p12
export CSC_KEY_PASSWORD=gege123
export CSC_NAME="penghui deng (8MUK7LXZQ5)"
yarn mac注意:yarn mac 也可以用 npm run mac代替
2.7.3 编译mas
这个是要发布到 mac store的,不能直接运行
(1)package配置
{"name": "greader","productName": "greader","version": "22.7.8","description": "A reader with transparent window background, arbitrary window size, and auto-hide","author": {"name": "youername","email": "youeremail","url": "youer office site"},"main": "src/bootstrap.js","scripts": {"pack": " electron-builder --dir ","win": " electron-builder --win --x64","mac": " electron-builder --mac","postinstall": "electron-builder install-app-deps"},"keywords": [],"license": "MIT","dependencies": {"bytenode": "^1.5.0","dayjs": "^1.11.8","electron-log": "^4.4.8","iconv-lite": "^0.6.3","jschardet": "^3.0.0","node-machine-id": "^1.1.12","yarn": "^1.22.21"},"devDependencies": {"electron": "25.3.0","electron-builder": "^24.6.4"},"build": {"appId": "GN5XP7HD2C.cn.rouhuasuan.greader","productName": "Greader","copyright": "Copyright © 2021 Alaso","directories": {"buildResources": "build","output": "dist"},"mac": {"category": "public.app-category.utilities","target":["mas"],"hardenedRuntime": true,"gatekeeperAssess": false,"icon":"resource/mac.icns","entitlements": "./resource/entitlements.mas.plist","entitlementsInherit": "./resource/entitlements.mas.inherit.plist","extendInfo": {"ElectronTeamID": "GN5XP7HD2C","com.apple.developer.team-identifier": "GN5XP7HD2C","com.apple.application-identifier": "GN5XP7HD2C.cn.rouhuasuan.greader","Bundle name": "Greader","LSHasLocalizedDisplayName": true,"ITSAppUsesNonExemptEncryption": "NO"}},"mas": {"type": "distribution","identity": "penghui deng (GN5XP7HD2C)","hardenedRuntime" : false, "provisioningProfile": "./resource/greader_distribution.provisionprofile"},"masDev": {"type": "development","identity": "penghui deng (8MUK7LXZQ5)","hardenedRuntime": false,"provisioningProfile": "./resource/greader_development.provisionprofile"},"dmg": {},"pkg": {"identity": "penghui deng (GN5XP7HD2C)"},"win":{"target": ["nsis", "msi", "zip"],"icon": "resource/win.ico"},"nsis": {"oneClick": false,"perMachine": false,"allowToChangeInstallationDirectory": true},"msi": {"menuCategory": "bestapp"}}
}
(2)执行命令
export CSC_IDENTITY_AUTO_DISCOVERY=false
export CSC_LINK=/Users/dhzy/Desktop/project2/cer/appdis.p12
export CSC_KEY_PASSWORD=greader123
export CSC_NAME="penghui deng (GN5XP7HD2C)"
yarn mac
2.7.4 编译dmg、pkg包
(1)package配置
{"name": "greader","productName": "greader","version": "22.7.8","description": "A reader with transparent window background, arbitrary window size, and auto-hide","author": {"name": "youername","email": "youeremail","url": "youer office site"},"main": "src/bootstrap.js","scripts": {"pack": " electron-builder --dir ","win": " electron-builder --win --x64","mac": " electron-builder --mac","postinstall": "electron-builder install-app-deps"},"keywords": [],"license": "MIT","dependencies": {"bytenode": "^1.5.0","dayjs": "^1.11.8","electron-log": "^4.4.8","iconv-lite": "^0.6.3","jschardet": "^3.0.0","node-machine-id": "^1.1.12","yarn": "^1.22.21"},"devDependencies": {"electron": "25.3.0","electron-builder": "^24.6.4"},"build": {"appId": "GN5XP7HD2C.cn.rouhuasuan.greader","productName": "Greader","copyright": "Copyright © 2021 Alaso","directories": {"buildResources": "build","output": "dist"},"mac": {"category": "public.app-category.utilities","target":["dmg", "pkg"],"hardenedRuntime": true,"gatekeeperAssess": false,"icon":"resource/mac.icns","entitlements": "./resource/entitlements.mas.plist","entitlementsInherit": "./resource/entitlements.mas.inherit.plist","extendInfo": {"ElectronTeamID": "GN5XP7HD2C","com.apple.developer.team-identifier": "GN5XP7HD2C","com.apple.application-identifier": "GN5XP7HD2C.cn.rouhuasuan.greader","Bundle name": "Greader","LSHasLocalizedDisplayName": true,"ITSAppUsesNonExemptEncryption": "NO"}},"mas": {"type": "distribution","identity": "penghui deng (GN5XP7HD2C)","hardenedRuntime" : false, "provisioningProfile": "./resource/greader_distribution.provisionprofile"},"masDev": {"type": "development","identity": "penghui deng (8MUK7LXZQ5)","hardenedRuntime": false,"provisioningProfile": "./resource/greader_development.provisionprofile"},"dmg": {},"pkg": {"identity": "penghui deng (GN5XP7HD2C)"},"win":{"target": ["nsis", "msi", "zip"],"icon": "resource/win.ico"},"nsis": {"oneClick": false,"perMachine": false,"allowToChangeInstallationDirectory": true},"msi": {"menuCategory": "bestapp"}}
}
(2)执行命令
export CSC_IDENTITY_AUTO_DISCOVERY=false
export CSC_LINK=/Users/dhzy/Desktop/project2/cer/appdis.p12
export CSC_KEY_PASSWORD=greader123
export CSC_NAME="penghui deng (GN5XP7HD2C)"
yarn mac
2.7.5 相关异常问题
(1)如果出现什么 timestamp XXXX 的
没有联网,或者网络不好,多次尝试。也不要使用代理,代理可能导致失败。
(2)
相关文章:
electron使用electron-builder macOS windows 打包 签名 更新 上架
0. 前言 0.1 项目工程 看清目录结构,以便您阅读后续内容 0.2 参考资料 (1)macOS开发 证书等配置/打包后导出及上架 https://www.jianshu.com/p/c9c71f2f6eac首先需要为Mac App创建App ID: 填写信息如下—Description为"P…...
autojs项目搭建和入门实践
Auto.js 是一款无需root权限的javascript自动化软件,它可以帮助用户在手机上自动执行各种任务,比如自动填写表单、自动点击按钮、自动切换应用等,并且可以通过图形用户界面来管理和编辑脚本。 软件环境 操作系统:win10 VSCODE&…...
uni-app 跨端开发注意事项
文章目录 前言H5正常但App异常的可能性标题二H5正常但小程序异常的可能性小程序正常但App异常的可能性小程序或App正常,但H5异常的可能性App正常,小程序、H5异常的可能性使用 Vue.js 的注意区别于传统 web 开发的注意H5 开发注意微信小程序开发注意支付宝…...
在 vscode 中的json文件写注释,不报错的解决办法
打开 vscode 的「设置」,搜索:files: associations,然后添加 *.json jsonc最后...
基于uniapp的 电子书小程序——需求整理
前言 想开发一个很简单的 电子书阅读小程序,要怎么做的。下面从功能、数据库设计这一块来说一下。说不一定能从某个角度提供一些思路 开发语言 springcloud uniapp 小程序(vue2)mysql 说明 电子书的主题是电子书,我们在日常…...
Hutool HttpRequest 首次请求正常 第二次被系统拦截
Hutool HttpRequest 首次请求正常 第二次被系统拦截 功能描述异常现象错误代码 异常排查问题跟踪问题总结处理方案最终修改后的代码 功能描述 需要请求第三方某个接口,获取接口中的数据。 异常现象 使用main 方法 通过Hutool 工具类发出请求,获取数据…...
github国内访问小解(windows)
git 下载安装 使用 github 前必须确保电脑上已经安装了 Git,可以从 Git 官方网站去下载。 官方的网站在国内访问会比较慢,这里可以选择国内镜像:https://registry.npmmirror.com/binary.html?pathgit-for-windows/ github 之旅 确认电脑已…...
NX二次开发UF_CSYS_set_wcs_display 函数介绍
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CSYS_set_wcs_display Defined in: uf_csys.h int UF_CSYS_set_wcs_display(int display_status ) overview 概述 Set display of work coordinate system. 展示工作坐标系。 …...
DNS 区域传输 (AXFR)
漏洞描述 docker环境搭建 使用 AXFR 协议的 DNS 区域传输是跨 DNS 服务器复制 DNS 记录的最简单机制。为了避免在多个 DNS 服务器上编辑信息,可以在一台服务器上编辑信息,并使用 AXFR 将信息复制到其他服务器。但是,如果您不保护您的服务器&…...
Ubuntu 安装 JMeter:轻松上手
Apache JMeter 是一个开源的负载测试工具,可以用于测试静态和动态资源,确定服务器的性能和稳定性。在本文中,我们将讨论如何下载和安装 JMeter。 安装 Java(已安装 Java 的此步骤可跳过) 要下载 Java,请遵…...
在工业生产环境下,服务器没有互联网,如何通过代理自己的电脑上互联网?
服务器主机是CentOS7操作系统.,服务器的局域网是10.0.6.x网段。我的笔记本的以太网口的局域网ip是也是10.0.6.x,由于这个10.0.6.x的整个局域网是没有拨号上网的所有无法访问互联网。 但是,如果笔记本脸上wifi,wifi的网段是192.168…...
【brpc学习实践六】backup request场景案例
应用场景 有时为了保证可用性,需要同时访问两路服务,哪个先返回就取哪个。在brpc中,这有多种做法,根据server是否挂在同一个命名服务内有所区别。 当后端server可以挂在一个命名服务内时 Channel开启backup request。这个Channel会先向其中一个server发送请求,如果在Ch…...
el-table导出为excel表格
目录 1.下载依赖 2.引入插件 3.定义函数 4.设置table的id 1.下载依赖 npm intall --save xlsx npm intall --save file-saver2.引入插件 import FileSaver from "file-saver"; import XLSX from "xlsx";3.定义函数 exportExcel() {let fix document…...
CVE-2022-0543(Redis 沙盒逃逸漏洞)
简介 CVE-2022-0543是一个与Redis相关的安全漏洞。在Redis中,用户连接后可以通过eval命令执行Lua脚本,但在沙箱环境中脚本无法执行命令或读取文件。然而,攻击者可以利用Lua沙箱中遗留的变量package的loadlib函数来加载动态链接库liblua5.1.s…...
查swap内存使用
查询linux的swap被什么使用了 查询centos的swap被什么进程使用了 swap内存被什么程序占用,什么程序使用了swap分区,占用swap内存的进程 查系统使用swap内存前10个进程: for i in $( cd /proc;ls |grep "^[0-9]"|awk $0 >10…...
Element UI的Tabs 标签页位置导航栏去除线条
在实际开发中,我们调整了相关样式,导致导航栏的相关样式跟随不上,如下图所示: 因为我跳转了前边文字的样式并以在导航栏添加了相关头像,导致右边的线条定位出现问题,我在想,要不我继续调整右边…...
【Python 训练营】N_1 验证密码
N_1 验证密码 题目 设计一个用户密码验证程序,要求密码输入只有3次机会,且密码中不能包含”*”字符。 分析 需要考虑3个问题:验证次数、特殊字符和正误密码判断;验证次数需要使用循环,3个问题需要用到分支结构&…...
Pinia 和 Vuex 的对比,storeToRefs 的原理
目录 1,Pinia 介绍2,和 Vuex 的对比3,storeToRefs 源码分析 1,Pinia 介绍 官网简介 Pinia 使用上的问题,官方文档很详细,这里不做赘述。 Pinia 是 Vue 的专属状态管理库,支持vue2和vue3&#x…...
Mycat分库分表的操作(配置)
Mycat是一个开源的分布式数据库中间件,它可以对数据库进行分库分表的操作,以下是Mycat分库分表的操作步骤: 配置数据源:将要操作的数据库和表通过Mycat的配置文件配置到数据源中。配置分片规则:根据分库分表的需求&am…...
android的canvas的clipRegion废弃替代代码
由于clipRegion的一些问题,导致他被废弃了,但又有时候会用到,所以写了一个工具类来替代它 代码如下 package com.example;import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.g…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...

