使用electron-builder在windows上打包并自动更新


心得:从一个小白开始独自一人了解electron这个玩具,实现其打包到自动更新,查阅各种资料,做了各种尝试,现在将自己经历过的一些东西写下来,供参考!

注意:文章适合了解electron是什么,知道如何简单打包的读者,文章中代码只是一种思路参考,并不完整,不能直接使用。

打包

尝试过用electron-packager和electron-builder打包,最终选择了electron-builder,原因后面会说;

关于网络,在使用electron-packager或者electron-builder打包的过程中,可能会下载electron包以及其它依赖,有些包和依赖可能服务器在国外,会很慢,所以需要设置代理,electron可以通过设置淘宝镜像快速下载ELECTRON_MIRROR="https://npm.taobao.org/mirrors/electron/"(windows下通过set设置该参数);

这有个有趣的事情,我通过代理下载的时候有个叫codeSign的包怎么都下不下来,总是提示timeout,后来我用笔记本连接手机热点,手机开启shadowsocks代理,通过蜂窝网络这种方式居然下载下来了,遇到类似问题都可以尝试;

electron-packager

简单用法:

具体用法参考官网:electron-packger
"scripts": {"package": "electron-packager ./ --overwrite -all"
}

注意事项:

  1. 直接这么打包会将node_modules文件夹全部打包进去,包会很大,需要自行进行忽略某些文件或者文件夹,因为作者使用webpack将代码打包,所以我是在webpack打包好的文件夹,独立建立了一个package.json文件,将需要的包和文件放进去,在该文件夹下打包;
  2. 注意 package.json 的额外字段 —— productName、author 和 description,虽然这几个字段并不是打包必备的,但它们会在 Windows 的 Squirrel 安装包(用于自动更新,后面会说)中使用到。

特点:

  1. 在macOS系统下,打的包是app文件(也就是平常通过dmg文件安装后的应用程序,拖到应用程序能直接使用),不能直接打包dmg文件;(不记得能不能打windows的包了,网上参考资料说不能打windows包);
  2. 在windows系统下,能打包免安装的包,类似于我们网上下载绿色版软件,直接点击exe文件就运行软件;不能直接打包exe安装文件;(能否打app文件自行探索,蛤)
  3. 在自动更新的时候支持electron自带的autoUpdatersquirrel的方式(squirrel在windows下需要自己安装某些文件);

electron-builder

简单用法:

具体用法参考官网:electron-builder
"build": {"appId": "com.xxx.app","mac": {"target": ["dmg","zip"]},"win": {"target": ["nsis","zip"]}
},
"scripts": {"dist": "electron-builder -wm"
},
注意事项:参考electron-packager

特点:

  1. 在macOS系统和windows系统都可以到dmg和exe安装文件;
  2. windows可以使用nsis打包安装文件,具体配置可以参考官网相关配置;
  3. 几乎支持了所有平台的所有格式;
  4. 自动更新的时候,不支持squirrel.Windows的方式,并且不使用electron自带的autoUpdater,需要使用 electron-updater包;

自动更新(windows下)

这边不详细描述mac下的自动更新,因为mac下无论哪种方法都需要为应用执行(Code-signing)这是squirrel.Mac必要条件,由于没有mac下的需要,所以需要的自行查阅资料(我不会告诉你是因为mac的开发者账号贵,没钱,蛤蛤蛤);自动更新这里提供两个参考,作者也是一开始参考的这两个网页(非常详细):
  1. Electron 自动更新的完整教程(Windows 和 OSX)
  2. electron在windows系统下实现自动更新

方法一:使用electron-packager配合grunt-electron-installer

  • 步骤一:使用electron-packager打包应用,打包出一个免安装包,确认可以执行应用;
  • 步骤二:

安装electron-squirrel-startup:(用于生成应用快捷方式)

npm install electron-squirrel-startup

==========================华丽的分割线=============================

使用grunt的作用是可以简单理解为将electron-packager打的包,再次打包生成安装文件exe,并且添加关于自动更新的文件,例如:RELEASES文件,setup程序等

安装 grunt-electron-installer:(使用grunt打包,配合squirrel实现自动更新)

npm install -g grunt-cli

npm install grunt grunt-electron-installer --save-dev

  • 步骤三:

在项目根目录下建Gruntfile.js(直接使用package.js中关于version等的配置就好了,不需要gruntPackage.json文件了)

参考:grunt-electron-installer

var grunt=require('grunt');//配置
grunt.config.init({pkg: grunt.file.readJSON('./package.json'),'create-windows-installer': {x64:{authors:'xxxx',projectUrl:'',appDirectory:'./OutApp/Client-win32-x64',//要打包的输入目录outputDirectory:'./OutPut',//grunt打包后的输出目录exe:'Client.exe',description:'Client',setupIcon:"xxxx.ico",noMsi:true}}
});//加载任务
grunt.loadNpmTasks('grunt-electron-installer');//设置为默认
grunt.registerTask('default', ['create-windows-installer']);
  • 步骤四:

在主进程main.js中添加squirrel安装打包配置以及自动更新检测和事件监听:

参考:

Handling Squirrel Events

auto-updater

const electron = require('electron')
//自动更新
const autoUpdater = electron.autoUpdater//生成和删除应用快捷方式,用于安装和卸载,直接在app.on('ready',() => {startupEventHandle()})的时候执行;
function startupEventHandle(){if(require('electron-squirrel-startup')) return;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 ;}
}// 检测更新,在你想要检查更新的时候执行,renderer事件触发后的操作自行编写
function updateHandle(){let message={error:'检查更新出错',checking:'正在检查更新……',updateAva:'检测到新版本,正在下载……',updateNotAva:'现在使用的就是最新版本,不用更新',};const os = require('os');autoUpdater.setFeedURL('放最新版本文件的文件夹的服务器地址');autoUpdater.on('error', function(error){sendUpdateMessage(message.error)}).on('checking-for-update', function(e) {sendUpdateMessage(message.checking)}).on('update-available', function(e) {sendUpdateMessage(message.updateAva)}).on('update-not-available', function(e) {sendUpdateMessage(message.updateNotAva)}).on('update-downloaded',  function (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) {ipcMain.on('isUpdateNow', (e, arg) => {//some code here to handle eventautoUpdater.quitAndInstall();})mainWindow.webContents.send('isUpdateNow')});//执行自动更新检查autoUpdater.checkForUpdates();
}// 通过main进程发送事件给renderer进程,提示更新信息
// mainWindow = new BrowserWindow()
function sendUpdateMessage(text){mainWindow.webContents.send('message', text)
}
  • 步骤五:

执行grunt,在你指定的目录生成三个文件:exe 文件是安装包,RELEASES 包含安装及版本信息(自动更新就是通过对比该文件进行自动更新),nupkg 文件

至此,完成了一个版本的打包,双击exe文件后,弹出绿色的安装动画,无法选择安装目录,会自动安装在C:UsersAdministratorAppDataLocal下,安装结束后动画消失(一定要等安装的绿色动画消失才能对应用进行操作,不然可能会报错,也不能手动关闭安装程序),并自动创建了快捷方式。

如何进行版本更新?

  1. 改变package.json中的version属性,例如:改为 version: "1.0.1" (之前为1.0.0);
  2. 然后再次执行步骤一和步骤五,打包一个新的版本,多出两个文件,改变了RELEASES文件,除了上述三个文件外还有个delta文件,这个是增量包;
  3. 将新版本的上述文件(只需要nupkg文件和RELEASES文件)放到autoUpdater.setFeedURL(url)该方法中设置的url指向的文件夹下就可以了,执行更新检查的时候,autoUpdate会自动到该目录下查看 RELEASES 文件的版本信息,与安装目录下的 RELEASES 文件进行比对,进行更新下载;
会发现使用squirrel.Windows的时候,服务器仅仅作为文件服务器放置更新文件,不要编写其它文件,使用squirrel.Mac需要服务器编写接口文件进行检测判断,两者不太一样。

总结:如果是简单更新大概就是 -> 配置好 Gruntfile.js 和 main.js(包括与renderer的通信) 文件,electron-packager打包,grunt打包electron-packager打包生成的文件,会生成安装文件和版本信息,将grunt打包的东西放到一个文件服务器上,在本地安装的app上启动检查更新。

方法二:使用electron-builder配合electron-updater实现自动更新

参考:Auto Update

后来通过对比放弃了方法一,使用了方法二;主要原因有以下几点:(从我使用的情况来看,也可能是我自己没找到解决以下问题的方法,如果有欢迎告诉作者,谢谢)
  1. 因为方法一打包出来的安装文件 exe 比较大,原因是不是使用nsis方式压缩打包的;
  2. 并且electron自带的autoUpdater中事件和方法都没有electron-updater中的丰富,有不少实现不了,比如:使用原生autoUpdater下载更新时的进度条做不了,但是electron-updater提供了download-progerss事件,该事件提供了下载速度(bytesPerSecond)、已下载百分比(percent)、已传输(transferred)、文件大小(total)等参数,非常方便;
  3. autoUpdater一旦启动checkForUpdates(),有更新时就会自动下载更新,没办法忽略版本的更新,但是electron-updater提供了 appUpdater.autoDownload = false 的属性配置,可以不自动下载更新,需要下载的时候执行 appUpdater.downloadUpdate() 方法就可以了,完美解决我的困惑。
  4. 并且方法二只需要执行electron-builder的打包程序就可以了,会生成一个类似方法一中的RELEASES文件的latest.yml文件,不需要执行两次打包;更新的时候和方法一同样简单,只需要把electron-builder打包出来的文件放到文件服务器就可以了。
具体步骤如下
  • 步骤一:安装 electron-updater 包模块
npm install electron-updater --save
  • 步骤二:

配置package.json文件,只需要在 build 参数中添加 publish 配置就好了,具体参考PublishConfiguratio

注意:只有配置了publish才能生成latest.yml文件;
"build": {"appId": "com.xxx.app","publish": [{"provider": "generic",//类似于autoUpdater.setFeedURL(url)中的url,用于自动更新的文件地址"url": "http://www.xxx.com/"}],"mac": {"target": ["dmg","zip"]},"win": {"target": ["nsis","zip"]}
},
"scripts": {"dist": "electron-builder -wm"
},
  • 步骤三:

配置main.js文件,引入 electron-updater 文件,后面用法和electron自带的autoUpdater类似;

// 注意这个autoUpdater不是electron中的autoUpdater
import { autoUpdater } from "electron-updater"// 检测更新,在你想要检查更新的时候执行,renderer事件触发后的操作自行编写
function updateHandle(){let message={error:'检查更新出错',checking:'正在检查更新……',updateAva:'检测到新版本,正在下载……',updateNotAva:'现在使用的就是最新版本,不用更新',};const os = require('os');autoUpdater.setFeedURL('放最新版本文件的文件夹的服务器地址');autoUpdater.on('error', function(error){sendUpdateMessage(message.error)});autoUpdater.on('checking-for-update', function() {sendUpdateMessage(message.checking)});autoUpdater.on('update-available', function(info) {sendUpdateMessage(message.updateAva)});autoUpdater.on('update-not-available', function(info) {sendUpdateMessage(message.updateNotAva)});// 更新下载进度事件autoUpdater.on('download-progress', function(progressObj) {mainWindow.webContents.send('downloadProgress', progressObj)})autoUpdater.on('update-downloaded',  function (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) {ipcMain.on('isUpdateNow', (e, arg) => {//some code here to handle eventautoUpdater.quitAndInstall();})mainWindow.webContents.send('isUpdateNow')});//执行自动更新检查autoUpdater.checkForUpdates();
}// 通过main进程发送事件给renderer进程,提示更新信息
// mainWindow = new BrowserWindow()
function sendUpdateMessage(text){mainWindow.webContents.send('message', text)
}
  • 步骤四:

执行electron-builder进行打包,会生成安装包exelatest.yml等文件,执行exe安装软件;

如何进行更新?

  1. 改变package.json中的version属性,例如:改为 version: "1.0.1" (之前为1.0.0);
  2. 再次执行electron-builder打包,将新版本latest.yml文件和exe文件放到package.jsonbuild -> publish中的url对应的地址下;
  3. 在应用中触发更新检查,electron-updater自动会通过对应url下的yml文件检查更新;

总结:通过对比发现,方法二比方法一更加简单方便,并且打包生成的exe安装文件小很多(作者通过方法一生成安装文件70M,方法二仅仅 36M),唯一一个问题是,通过方法二没有产生delta文件,也就是没有增量包。

结语:这只是一个小白的实践总结,其中有不少是自己的理解,可能不对,有许多需要改进的地方,希望通过这个总结,自己在以后回顾有机会有更多不同的收获。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. CSDN写博客技巧

    欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键快捷键加粗 Ct…...

    2024/4/14 21:12:00
  2. SQL Sever 数据仓库的解决方案

    1 引言 数据仓库的概念一经出现,就首先被用于金融、电信、保险等主要的传统数据处理密集型行业。数据仓库将分布在企业网络中不同信息岛上的业务数据集成到一起,存储在一个单一的集成关系型数据库中,利用这种集成信息,可方便用户对信息的访问,更可使决策人员对一段时间内的…...

    2024/5/1 6:31:29
  3. hibernate注解

    1.类级别注解 @Entity 映射实体类 @Table 映射数句库表@Entity(name="tableName") - 必须,注解将一个类声明为一个实体bean。 属性: name - 可选,对应数据库中的一个表。若表名与实体类名相同,则可以省略。@Table(name="",catalog=""…...

    2024/4/19 20:01:18
  4. static、const和static const

    const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类…...

    2024/4/24 23:25:18
  5. android 使用getIdentifier()获取资源Id

    首先贴一下搜到的用法: 使用getIdentifier()方法可以方便的获各应用包下的指定资源ID。 主要有两种方法: (1)方式一 Resources resources = context.getResources(); int indentify = resources.getIdentifier(org.loveandroid.androidtest:drawable/icon",null,null);…...

    2024/4/24 23:25:18
  6. CSDN如何转载别人的博客

    前言对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里面,当然有人会说我们可以收藏博客啊,就不需要转载,(⊙o⊙)… 也对…...

    2024/4/24 23:25:18
  7. Electron中打开和关闭子窗口以及子窗口向父窗口传值

    场景用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106413828Electron怎样进行渲染进程调试和使用浏览器和VSCode进行调试:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/articl…...

    2024/5/1 5:24:11
  8. java中的Static、final、Static final各种用法

    前言 对Static、final、Static final这几个关键词熟悉又陌生?想说却又不知怎么准确说出口?好的,本篇博客文章将简短概要出他们之间的各自的使用,希望各位要是被你的面试官问到了,也能从容的回答… static 加载:static在类加载时初始化(加载)完成 含义:Static意为静态的…...

    2024/5/1 6:28:46
  9. Hibernate学习笔记之关联关系

    关联关系是面向对象分析、面向对象设计最重要的知识,Hibernate完全可以理解这种关联关系,如果映射得当,Hibernate的关联映射将可以大大简化持久层数据的访问。关联关系大致有如下两类:单向关系:只需单向访问关联端。双向关系:关联的两端可以互相访问 注:双向关系没有N—…...

    2024/4/24 23:25:16
  10. Android 项目开发填坑记 - 获取系统语言(兼容7.0)

    如果移动端访问不佳,请访问–> Github版关键词:Android7.0 、系统语言 、顺序不一致获取系统当前语言是一个比较常用的功能,在 Android 7.0 系统上旧函数获取到的当前系统语言并不正确,或者说从 Android 7.0 起,Android 系统语言的规则变了。背景下面是未适配 Android …...

    2024/4/24 23:25:12
  11. setBackgroundDrawable和setBackgroundColor的用法

    1.设置背景图片,图片来源于drawable;viewHolder.modify.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.btn_fuwu_shape_pre));2.转换字符串为int(颜色);listItemView.deleteFilghtBg.setBackgroundColor(Color.parseColor("#F5F5DC"));…...

    2024/4/26 5:07:56
  12. oracle常用sql语句

    -- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unlock; --那么这个用户名就能使用了。 --(默认全局数据库名orcl) 1、select ename, sal * 12 from emp; --计算年薪 2、select 2*3 from du…...

    2024/5/1 8:39:29
  13. Jpa3

    这里写自定义目录标题1.单向一对多1、映射配置:一方配置2、保存代码:我们一般不使用单向一对多(原因:性能太差)3、获取代码:4、获取代码细节:2.集合映射3.双向多对一/双向一对多3.1.保存数据分析3.2.级联保存3.4.级联操作总结4.单向多对多(1)配置单向多对多(2)保存数据5.双…...

    2024/4/24 23:25:09
  14. crossplatfrom---electron入门教程

    1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree/master/docs-translations/zh-CN 2.下载 electron-v0.36.5-win32-x64 https://github.com/atom/electron/releases/download/v0.36.5/electron-v0.36.5-win32-x64…...

    2024/4/24 23:25:10
  15. C和C#中static关键字的作用

    C中:1. static 变量  静态变量的类型 说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态 存储方式,但不一定是静态变量,必须由static加以定义后才能成为静态外部变量,或称静态全局变量。2. 静态局…...

    2024/4/24 23:25:10
  16. CSDN专家吐槽实录

    今天打开CSDN发现界面上的几个图标发生了变化,一个小小的变化,却引起了诸多CSDN专家对CSDN社区未来发展的思考,我特意从群里讲对话黏贴出来,希望各位能给予积极评价和建议。你已经是群成员了,和大家打个招呼吧!阳光小强(739299362) 11:12:53 大家好,这里还深藏着这么一个…...

    2024/4/24 23:25:06
  17. TabSpec.setIndicator图片标题只能显示一个的解决办法

    TabSpec ts1=tabHost.newTabSpec("Tab1");//设置首页显示的标题和图标,图片或者文字只能显示一个,只有当文字为空的时候,才显示图片 ts1.setIndicator("首页",getResources().getDrawable(android.R.drawable.ic_menu_call));//设置此分页的内容 ts1.se…...

    2024/4/14 21:12:31
  18. static变量和static函数

    1、static全局变量和普通的全局变量static全局变量在定义该变量的当前源文件内有效, 在同一源程序的其它源文件中不能使用它。而普通的全局变量在各个源文件中都是有效的(当一个源程序由多个源文件组成时)。2、static局部变量和普通的局部变量static局部变量存放在静态存储区…...

    2024/4/14 21:12:28
  19. 现在,以编程方式在 Electron 中上传文件,是非常简单的!

    必要的上下文 想尽快熟悉上下文语境的,可以点这里: https://github.com/electron/electron/issues/749 这段讨论,其实本来是讨论如何自动设置 input 标签的值来实现自动选择文件的.前一段有个 Electon 中自动上传文件的需求,被 Google 带到了这个讨论地址.虽然,最后当时是采用的…...

    2024/4/14 21:12:28
  20. CSDN-Markdown编辑器之UML序列图

    目录目录 UML序列图简介 时序图元素 1角色Actor 2对象Object 3生命线Lifeline 4激活期Activation 5消息Message时序图结构 连接建立的过程 呈现效果示例二 呈现效果对象顺序 呈现效果跨对象的消息 呈现效果相关文章 CSDN-Markdown编辑器之UML序列图 Markdown编辑器语法指南 CSD…...

    2024/4/14 21:12:26

最新文章

  1. C++编译器的程序转化

    编译器在某些情况下会对程序进行转化,有些是编译器需要的,有些是出于性能考虑的,转化可能会产生出乎意料的结果 文章目录 明确的初始化操作参数的初始化返回值的初始化在使用者层面做优化在编译器层面做优化NRV 优化NRV优化的弊端 明确的初始…...

    2024/5/1 9:44:57
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. Linux的软链接和硬链接

    1、软链接 概念:给文件创建一个快捷方式,依赖原文件,和普通文件没有区别。 特性: 可以给存在的文件或目录创建软链接可以给不存在的文件或目录创建软链接可以跨文件系统创建软链接删除软链接不影响原文件、删除原文件会导致软链…...

    2024/4/30 17:33:33
  4. Databend 开源周报第 138 期

    Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 支持多表插入 …...

    2024/5/1 8:32:06
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/29 23:16:47
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57