【发布时间】:2020-05-25 03:07:21
【问题描述】:
我正在尝试为 Windows 创建带有替换字体的 Skype 修补程序(股票错误地将日文汉字显示为中文等效)。也许 Python 不是最好的选择,但当前的问题与 Python 本身无关:asar 实用程序产生具有只读权限的输出,而更改权限尝试无能为力。但是,也许 os.chmod 不能在 Windows 上运行?
import tkinter as tk
from tkinter import filedialog
import subprocess
import os
import shutil
def change_permissions_recursive(path, mode):
for root, dirs, files in os.walk(path, topdown=False):
for dir in [os.path.join(root,d) for d in dirs]:
os.chmod(dir, mode)
for file in [os.path.join(root, f) for f in files]:
os.chmod(file, mode)
root = tk.Tk()
root.withdraw()
dir_path = filedialog.askdirectory(initialdir="C:\Program Files (x86)\Microsoft\Skype for Desktop")
cmd = "asar.cmd extract \"" + dir_path + "/resources/app.asar\" tmp/app"
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, creationflags=0x08000000, cwd="utils")
process.wait()
change_permissions_recursive("utils/tmp/app/fonts", 0o777)
shutil.copyfile("utils/meiryo.ttf", "utils/tmp/app/fonts")
【问题讨论】:
-
你能显示minimal reproducible example吗?我不确定这个问题是否需要 tkinter
-
而且 PowerShell 或批处理会比 python“更好”,是的
-
codepicky.com/hacking-electron-restyle-skype 我正在关注本指南,但 asar 实用程序输出似乎是用错误的权限编写的。但是,也许这就是shutil.copy本身的错误。会用powershell重写
-
是的,这与 Python 本身有关:使用 powershell 时一切正常