Blender Python 配置 (on Windows) YUytEtaVrrc

1. 安装 vscode、 blender

1
2
3
4
5
6
scoop install vscode
scoop install blender

# blender 和内置的 python 路径如下:
# blender path : C:\Users\xxxx\scoop\apps\blender\4.2.3\blender.exe
# blender build-in python path : C:\Users\shenb\scoop\apps\blender\4.2.3\4.2\python\bin\python.exe

在 vscode 中选择 python 解释器,注意选择 blender 内置的 python 路径。

2. 安装自动补全 fake-bpy-module

安装时注意要选用 blender 内置的 python -m pip 安装。

ref: https://github.com/nutti/fake-bpy-module

1
2
3
4
5
C:\Users\shenb\scoop\apps\blender\4.2.3\4.2\python\bin\python.exe -m pip install fake-bpy-module

# 安装常用的其他包:
# C:\Users\shenb\scoop\apps\blender\4.2.3\4.2\python\bin\python.exe -m pip install pandas
# C:\Users\shenb\scoop\apps\blender\4.2.3\4.2\python\bin\python.exe -m pip install matplotlib
阅读全文 »

视频内字幕提取

video-subtitles-ocr

视频字幕提取,基于 opencv 和 paddleocr

视频内字幕提取

这里是针对内封了硬字幕的视频,字幕已经成为了画面的一部分。

思路:简单用 opencv 提取视频内的所有帧,现在可以使用 paddleocr,更加方便一点对图片进行 ocr 识别。

0. 首先需要配置一下

0.1 安装 python 库

  • opencv-python
  • scikit-image
  • paddleocr

ref: https://paddlepaddle.github.io/PaddleOCR/latest/quick_start.html#1-paddlepaddle

阅读全文 »

word 不能直接导入 eps 格式的图片,所以先将 eps 图片转换成 png 格式。

这里使用 python 调用 PIL 读取 eps 图片,直接保存为 png 图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# pip install pillow
# scoop install ghostscript

from PIL import Image

import os

for parent, dirnames, filenames in os.walk(os.getcwd()):
for filename in filenames:
ext = os.path.splitext(filename)[1]
if ext != '.eps':
continue

eps_image = Image.open(filename)
size = eps_image.size
print(filename, size)

eps_image.load(scale=10) # 分辨率增大到10倍
eps_image.save(filename+'.png', quality=100)
  • PIL 默认采用 Ghostscript 处理 eps 图片, 所以先确保安装了 Ghostscript。 scoop install ghostscript
  • eps 为矢量图,默认情况下其尺寸较小,导致保存成图片式分辨率较低,eps_image.load(scale=10) 将分辨率增大到10倍后保存。

下载 bili 视频

1
2
3
4
5
6
7
pip install you-get
# you-get https://www.bilibili.com/video/BV1234567890

pip install yt-dlp
# yt-dlp https://www.bilibili.com/video/BV1234567890

# yt-dlp "https://www.youtube.com/watch?v=GGGGGGGGGGGG" --proxy http://127.0.0.1:7890

视频转音频

1
2
3
4
5
6
scoop install ffmpeg
ffmpeg -i xxx.mp4
# checkout the audio video format
ffmpeg -i xxx.mp4 -acodec copy xxx.aac
ffmpeg -i xxx.mp4 -acodec copy xxx.mp3
ffmpeg -i xxx.mkv -acodec copy xxx.opus

音频转文字 📘

https://github.com/openai/whisper

  1. ** whisper **:
1
2
3
4
pip install -U openai-whisper

whisper audio.flac audio.mp3 audio.wav --model small --device cpu --language zh

  1. ** python **:
    使用 Python 运行 main.py 脚本。
1
2
3
4
5
6
import whisper

model = whisper.load_model("small", device="cpu")
result = model.transcribe(f"123.mp3")

print(result["text"]))

numpy: 线性插值、 对数插值

scipy: 样条插值 interp1d 等

https://docs.scipy.org/doc/scipy/reference/interpolate.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# %%
import numpy as np
from numpy import log, exp, interp
import matplotlib.pyplot as plt

from scipy.interpolate import interp1d as sciInter
from scipy.interpolate import Akima1DInterpolator as sciAkima
from scipy.interpolate import PchipInterpolator as sciPchip
from scipy.interpolate import CubicSpline as sciCubic

import pandas as pd
from rich.pretty import pprint

pd.set_option("display.width", 1000)
pd.set_option("display.max_rows", 500)
pd.set_option("display.max_columns", 500)

# %%
df = pd.read_csv("datas.csv")
pprint(df)
阅读全文 »

一、原子核物理基础

  • 了解原子和原子核的基本性质、原子核的放射性、射线及其与物质相互作用、原子核反应。
  • 熟悉放射性活度的含义及三大天然放射性系列中的主要核素、常用的核辐射类型及其特征、核裂变及核能的利用。
  • 掌握放射性核素的衰变规律及放射性核素的衰变常数、半衰期及寿命的概念,γ射线与物质的相互作用,介质对γ、X射线的衰减规律;中子诱发裂变与裂变能。

1.1原子和原子核的基本性质

1.原子的核式模型是1911年卢瑟福根据α粒子散射实验而提出的:原子由原子核和核外电子组成。

2.电子由汤姆逊于1987年发现,电子电荷值 $e \approx 1.6 \times 10^{-19}$ C(库伦);电子的质量 $m_e \approx 9.1 \times 10^{-31}$ kg。

1.1.1 原子的壳层结构

3.原子半径约为 $10^{-8}$ cm(或 $10^{-10}$ m),原子核的尺度大小量级为 fm($10^{-15}$ cm,飞米),几十飞米,原子核半径 $R$ 与质量数 $A^{1/3}$ 成正比关系;原子核的密度高达 $10^8$ t/cm$^3$ 量级。

4.物质的许多物理化学性质、光谱特性基本上只与核外电子有关,而放射性现象主要归因于原子核。

5.原子的壳层结构:

(1)原子的核外电子称为轨道电子。原子的轨道电子离核的距离是不能取任意值的,按照一定的规律形成彼此分离的壳层。

(2)最靠近核的一个壳层称为K层,在它的外面依次为L、M、N、O壳层等,以此类推。

  • 通常用量子数 $n(n=1,2,3\ldots)$ 代表壳层,并分别对应K、L、M、N、O壳层。
  • 每个壳层可容纳 $2n^2$ 个电子(即:K:2,L:8,M:18,N:32)。
  • 除K层以外的其他壳层又可分成 $2l+1$($l=n-1$)个支壳层,$l$ 是描述电子轨道的量子数。
  • (即:K, $L_I \sim L_{III}$, $M_I \sim M_V$, $N_I \sim N_{VII}$, …)

(3)处于不同壳层的电子具有不同的位能,当电子从无穷远处移动到靠近原子核的位置时是电场力作功,K层的能级最低。能级的能量大小就等于该壳层电子的结合能,即要使该壳层电子脱离核的束缚成为自由电子所需做的功。结合能是负值,通常以KeV为单位,K壳层电子的结合能的绝对值最大。

1.1.2 原子核的组成及其稳定性

6.原子核由质子和中子组成:$^A_ZX_N$

  • $A$ 表示质量数,$Z$ 表示质子数,$N$ 表示中子数。
  • $A$ 为核子数,$A = Z + N$。

7.核素是指具有一定数目质子和一定数目中子的一种原子;具有一定核电荷数和质量数,并且具有同一能态的一种原子核或原子,称为一种核素。

8.多核素元素中各核素互称同位素,因为它们处于周期表中同一位置上,化学性质基本相同,但核性质不同;单核素元素没有同位素。

9.同质异能素(nuclear isomer),处于较长寿命激发态的核素。通常在核素符号的右上角加写m或*标记它。例如 $^{60}\text{Co}^m$(或 $^{60}\text{Co}^{*}$)是 $^{60}\text{Co}$ 的一种同质异能素,它的能量为59 keV,半衰期为10.5 min。大多数同质异能素要发生γ跃迁,少数发生β衰变,个别的可以发生α衰变。

10.原子核的稳定性:根据原子核的稳定性,可以把核素分为稳定的核素和不稳定的放射性核素,原子核的稳定性与核内质子数和中子数之间的比例存在密切的关系,

  • $Z < 20$ 时核素的 $N/Z \approx 1$;$Z$ 为中等数值时 $N/Z \approx 1.4$;$Z \approx 90$ 时 $N/Z \approx 1.6$
  • 丰中子核素易发生β-衰变,缺中子核素易发生β+衰变;
  • 原子核的稳定性还与核内质子数和中子数的奇偶性有关。

1.1.3 原子核的大小

11.原子的线度约为 $10^{-8}$ cm(或 $10^{-10}$ m),原子核的尺度大小量级为 fm($10^{-15}$ m,飞米),原子核半径 $R \approx 1.2A^{1/3}$ fm,取一个核子的质量为 $1 \text{ u} = 1.66 \times 10^{-27}$ kg,核物质密度 $\rho = n \times m = 1.66 \times 10^{14}$ g·cm$^{-3}$。

1.1.4 原子核的结合能

12.核子结合成原子核时释放出的能量称为结合能,$B(Z,A) = \Delta m(Z,A)c^2$

13.原子核的结合能除以质量数称为平均结合能或比结合能,$\varepsilon(Z,A) = \frac{B(Z,A)}{A}$,单位 MeV/Nu(Nu 为核子)。比结合能的物理意义为原子核拆散为自由核子时,外界对每个核子所做的最小的平均功;或表示核子结合为原子核时,平均每个核子所释放的能量。ε越大,核结合紧,稳定性高。

阅读全文 »

一、核安全监管概述

  • 了解核安全监督管理的范围和组织机构,其他一些核与辐射安全监管工作。
  • 熟悉核安全许可制度与核安全监督管理体系。

1.1 核安全监督管理的范围和组织机构

1.1984年,国家核安全局成立。

2.2003年6月28日,通过《放射性污染防治法》,该法从保护环境出发,重点关注环境安全,主要规范核技术应用、放射性废物和伴生放射性矿涉及的放射性污染防治,也对核设施安全提出了基本要求。

3.2017年9月1日,通过《核安全法》,该法是有关核领域安全问题的专门法,重点以核设施、核材料安全为主要规范内容,同时也对放射性废物和乏燃料的安全作出规定,规范了放射性废物处置的要求。

4.国家建立了安全许可、监督检查执法、事故应急与调查处理、环境影响评价、辐射环境监测、人员资质管理等核安全监管制度。

5.国家核安全局下设核设施安全监管司、核电安全监管司、辐射源安全监管司三个业务司。

6.国家核安全局主要业务职责:
(1)组织拟定核与辐射安全政策、规划、法规等。
(2)负责核设施的行政许可、监督检查以及事件与事故的调查处理。
(3)负责核活动的行政许可、监督检查以及事件与事故的调查处理。
(4)负责核安全设备设计、制造、安装和无检验活动的行政许可和监督检查。
(5)组织辐射环境监测。
(6)组织核与辐射事故应急准备和响应,参与核与辐射恐怖事件的防范和处置。
(7)负责核材料管制核安全监管。
(8)负责核与辐射安全从业人员资质管理和相关培训。
(9)负责放射性污染治理的监督。
(10)负责电磁辐射装置设施的行政许可和监督检查。

7.环境保护部地区核与辐射安全监督站主要职责为:
(1)负责核设施核与辐射安全的日常监督;
(2)负责核设施辐射环境管理的日常监督;
(3)负责由环境保护部直接监管的核技术利用项目辐射安全和辐射环境管理的日常监督;
(4)负责由环境保护部直接监管的核设施和核技术利用单位核与辐射事故(含核与辐射恐怖袭击事件)应急准备工作的日常监督,以及事故现场应急响应的监督;
(5)负责由环境保护部直接监管的核设施和核技术利用项目辐射监测工作的监督及必要的现场监督性监测、取样与分析;
(6)负责对地方环境保护部门辐射安全和辐射环境管理工作的督查;
(7)负责核设施现场民用核安全设备安装活动的日常监督和民用核设施进口核安全设备检查、试验的现场监督;
(8)负责民用核设施内放射性物品运输活动的监督;
(9)承办环境保护部交办的其他事项。

8.地方辐射环境保护部门
(1)辐射环境管理实行国家和省(区、市)两级管理;
(2)国家核安全局监督管理部门对全国辐射环境保护工作实施统一监督管理;省级人民政府对本辖区内的辐射环境保护工作实施统一监督管理。
(3)地方辐射环境保护部门受地方政府领导,接受国家核安全局的业务指导。

9.受委托的技术支持单位应当对其技术评价结论的真实性、准确性负责。

10.核安全与环境专家委员会:是国家核安全局非常设的审议咨询机构,其职能是协助制订核安全法规和核安全技术发展规划,参与核安全的审评、监督等工作,为国家核与辐射安全重大决策提供科学依据。

11.核与辐射安全法规标准审查委员会:是国家核安全局非常设的审议咨询机构,对核与辐射安全政策、规划、法规和标准、以及法规标准体系进行技术审查,提出核与辐射安全法规标准建设的建议。下设4个专业组:①核安全;②辐射安全;③核安全设备;④电磁辐射。

阅读全文 »

cat-catch 设置 N_m3u8DL-RE

ref https://github.com/nilaoda/N_m3u8DL-RE
ref https://github.com/xifangczy/cat-catch
ref https://github.com/corbamico/m3u8dl-invoke/

1.1 电脑安装 n-m3u8dl-re 软件

1
scoop install n-m3u8dl-re_x

1.2 Edge 浏览器安装 cat-catch 插件

设置 - N_m3u8DL-RE 的参数:

1
"${url}" --save-dir "%USERPROFILE%\Downloads\m3u8dl" --save-name "${title}_${now}" ${referer|exists:'-H "Referer:*"'} --del-after-done --no-log

1.3 添加 m3u8dl协议

  • 使用 https://github.com/xifangczy/URLProtocol 工具。
  • 下载URLProtocol和N_m3u8DL-RE 并放置在一起。
  • 打开URLProtocol工具,协议名填写 m3u8dl 点击选择目标程序按钮,选择N_m3u8DL-RE.exe 点击添加。

1.4 添加 m3u8dl协议(另一种方法)

阅读全文 »

matplotlib marker color 字符对照

ref: https://matplotlib.org/stable/api/colors_api.html
ref: https://matplotlib.org/stable/gallery/color/named_colors.html

1
2
3
4
5
6
7
8
9
10
11

import matplotlib.pyplot as plt
import matplotlib.colors as mcolors

for (k, v) in mcolors.BASE_COLORS.items():
v = "#" + "".join(format(round(val * 255), "02x") for val in v)
print(f'<font color="{v}"> {k:<10} ■ </font>')

for (k, v) in mcolors.TABLEAU_COLORS.items():
print(f'<font color="{v}"> {k:<10} ■ </font>')

mcolors.BASE_COLORS (8)

████ b
████ g
████ r
████ c
████ m
████ y
████ k
████ w

mcolors.TABLEAU_COLORS (10)

████ tab:blue
████ tab:orange
████ tab:green
████ tab:red
████ tab:purple
████ tab:brown
████ tab:pink
████ tab:gray
████ tab:olive
████ tab:cyan

阅读全文 »

文件夹禁用文件类型识别

文件夹启动时默认会识别该文件夹内的文件类型(比如图片、音乐、视频等媒体文件的信息),媒体文件过多时加载速度较慢。

可以禁用此功能。

1
2
3
4
5
6
# 管理员运行运行后重启:
reg add "HKCU\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell" /v "FolderType" /t REG_SZ /d "NotSpecified" /f

# 恢复默认:
# reg.exe delete "HKCU\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell" /f

Python f-string 备忘单

ref https://fstring.help/cheat/

ref https://cheatography.com/brianallan/cheat-sheets/python-f-strings-basics/
ref https://cheatography.com/brianallan/cheat-sheets/python-f-strings-number-formatting/

数字

num format
%d 整数
%e 科学计数
%f 浮点
% 百分数
%b 二进制
%o 八进制
%x 十六进制
%c Unicode

integer = 123
number_ = 9876.6789
percent = 0.98765

var num format f-string output
integer 123 d f’{integer:d}’ 123
integer 123 b f’{integer:b}’ 1111011
integer 123 8b f’{integer:8b}’ 1111011
integer 123 _b f’{integer:_b}’ 111_1011
integer 123 09_b f’{integer:09_b}’ 0111_1011
integer 123 o f’{integer:o}’ 173
integer 123 #o f’{integer:#o}’ 0o173
integer 123 x f’{integer:x}’ 7b
integer 123 #x f’{integer:#x}’ 0x7b
integer 123 08x f’{integer:08x}’ 0000007b
integer 123 c f’{integer:c}’ {
number_ 9876.6789 f f’{number_:f}’ 9876.678900
number_ 9876.6789 .2f f’{number_:.2f}’ 9876.68
number_ 9876.6789 09.2f f’{number_:09.2f}’ 009876.68
number_ 9876.6789 09.5f f’{number_:09.5f}’ 9876.67890
number_ 9876.6789 .2f f’{number_:.2f}’ 9876.68
percent 0.98765 % f’{percent:%}’ 98.765000%
percent 0.98765 9.5% f’{percent:9.5%}’ 98.76500%
percent 0.98765 09.4% f’{percent:09.4%}’ 098.7650%
percent 0.98765 09.5% f’{percent:09.5%}’ 98.76500%
number_ 9876.6789 .2e f’{number_:.2e}’ 9.88e+03
number_ 9876.6789 09.2e f’{number_:09.2e}’ 09.88e+03

string = “Python”

var num format f-string output
string Python 20 f’{string:20}’ Python
string Python >20 f’{string:>20}’ Python
string Python <20 f’{string:<20}’ Python
string Python ^20 f’{string:^20}’ Python
string Python >>20 f’{string:>>20}’ >>>>>>>>>>>>>>Python
string Python <<20 f’{string:<<20}’ Python<<<<<<<<<<<<<<
string Python ^^20 f’{string:^^20}’ ^^^^^^^Python^^^^^^^
string Python =^20 f’{string:=^20}’ =======Python=======
阅读全文 »

radioactivedecay 用于放射性核素衰变的简单分析计算的开源包,支持放射性核素、亚稳态和分支衰变的衰变链。

https://github.com/radioactivedecay/radioactivedecay

安装:pip install radioactivedecay

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#%%
import radioactivedecay as rd
import matplotlib.pyplot as plt

# 创建一个放射性核素: Nuclide
ncld = rd.Nuclide('U-235')
half = ncld.half_life('readable') # 半衰期
prog = ncld.progeny() # 衰变产物
frac = ncld.branching_fractions() # 占比
mode = ncld.decay_modes() # 衰变射线类型

print(ncld, mode, prog, frac, half, sep='\n')

# 绘制衰变链
ncld.plot()

#%%
# 列出多个核算衰变类型
NUCs = ['U-235',
'Pu-239']

for name in NUCs:
ncld = rd.Nuclide(name)
half = ncld.half_life('readable')
prog = ncld.progeny()
frac = ncld.branching_fractions()
mode = ncld.decay_modes()
print(ncld, mode, prog, frac, half, sep='\n')

fig, ax = ncld.plot()
fig.savefig(f'decay_chains_{name}.png', dpi=300)

阅读全文 »

radioactivedecay 用于放射性核素衰变的简单分析计算的开源包,支持放射性核素、亚稳态和分支衰变的衰变链。

https://github.com/radioactivedecay/radioactivedecay

安装:pip install radioactivedecay

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# %%
# ============ (2) ==================
import radioactivedecay as rd
import matplotlib.pyplot as plt
# 创建一组放射性源项:Inventory
inv = rd.Inventory({'U-235': 1}, 'Ci')

inv_t1 = inv.decay(50, 'd')
print(inv_t1.activities('Bq'))

# 绘图
inv.plot(50, 'd')
inv.plot(50, 'd', order='alphabetical')

# %%
import radioactivedecay as rd
import matplotlib.pyplot as plt

from cycler import cycler

plt.rcParams["font.family"] = "monospace"
cm = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']
ls = ['-', '--']
mk = ['+', 'x', '*', '^', 's']
me = [31, 71, 91, 113, 161]
cc = (cycler(color=cm) + cycler(linestyle=ls) * (cycler(marker=mk))) + cycler(markevery=me) * 2

DICT = {'U-235': 1e9,
'Rn-222': 1e9}

TIME = iter([10, 1])

for (hesu, huodu) in DICT.items():
t1 = next(TIME)
inv = rd.Inventory({hesu: huodu}, 'Bq')
inv_t1 = inv.decay(t1, 'd')
act_t1 = inv_t1.activities('Bq')

fig_name = f'{hesu} @ {huodu:0.2e} Bq'
fig_note = f'the Activity after {t1} days of Decay:\n'
fig_note += '\n'.join(f'- {k} {v:.2e} Bq' for (k, v) in act_t1.items())
print(fig_name, '\n' ,fig_note)

fig0 = plt.figure(figsize=(9, 9))
plt.gca().set_prop_cycle(cc)

fig, ax = inv.plot(t1, 'd', yscale='log', ymin=1e-8, order='alphabetical', fig=fig0)
plt.title(fig_name)
plt.text(0.3, 0.1, fig_note, transform=ax.transAxes)
plt.grid(True, linestyle=':', color='gray', alpha=0.5)

plt.show()
fig.savefig(f'decay_activity_{hesu}.png', dpi=300)

阅读全文 »

pandas 合并数据常用的两个函数:

刚好有一个对比 RNN 和 LSTM 神经网络运行结果的场景分别用到了这两个函数:

  • 采用 concat 合并两个csv表; csv表为两次运行结果的,列名基本一致。
  • 采用 merge 合并模型运行条件类似的表, 用于对比数据
阅读全文 »

一、WSL 安装 Ubuntu22.04

  1. 启用 WSL

  2. 打开 Microsoft Store,安装 Ubuntu22.04

  3. 设置源,更新
    ref: https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

更新:sudo apt update

升级:sudo apt upgrade

  1. 安装 ZSH、oh-my-zsh

参考 zsh & oh-my-zsh 安装配置

二、安装 openmc with conda

ref: https://docs.openmc.org/en/stable/quickinstall.html

  1. 参照 Installing on Linux/Mac with Conda,安装 openmc。
1
2
3
4
5
6
7
8
9
10
11
12
# https://www.anaconda.com/docs/getting-started/miniconda/install#linux
# 安装 miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash ~/Miniconda3-latest-Linux-x86_64.sh

# 安装 openmc
conda config --add channels conda-forge
conda config --set channel_priority strict

conda create --name openmc-env openmc
conda activate openmc-env

安装完成后,运行 openmc 试一下, 提示错误: 找不到材料数据卡 cross_sections.xml

  1. 下载材料数据集
1
2
3
4
git clone https://github.com/openmc-dev/data openmc-dev_data

cd openmc-dev_data
python3 convert_nndc71.py
阅读全文 »

ref: https://github.com/ScoopInstaller/Scoop/issues/4390

0. 问题: scoop 本身不支持安装包有解压密码的自动解压。

scoop 本身不支持安装包有解压密码的自动解压。因此在安装 MAS 时会卡在解压处,无法继续安装。

1. 7z 命令手册

7z 命令是支持的: 7z x FILENAME.7z -pPWD -oOUTDIR

2. 查 Scoop 源码的解压函数

找到 Scoop 源码里的 “~\scoop\apps\scoop\current\lib\decompress.ps1” 文件。
文件封装了 Expand-7zipArchive 函数命令, 但参数没有能将密码传入的方法。

3. 试 Scoop 的 pre_install

Scoop Wiki 里提到了 pre_install 等说法。

在 MAS.json 中加入:

1
"pre_install": "7z x $dir\\$fname -p1234 $('-o' + $dir)"

尝试了很多次还是不起作用,Scoop的策略是遇到压缩包先执行解压、再做后续的事情。所以这一句不会被执行,安装程序依旧卡在解压处,无法继续安装。

阅读全文 »