Skip to content

Commit b81b61f

Browse files
author
dtblog
committed
Up to v5.0
1 parent c243816 commit b81b61f

File tree

7 files changed

+185
-6
lines changed

7 files changed

+185
-6
lines changed

WCMain/settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"H:\\Projects\\Temp\\UnusedData",
55
"H:\\Temp\\Logs\\Unused"
66
],
7-
"version": 4,
7+
"version": 5,
88
"language": "zh_cn",
99
"theme": 0,
1010
"themeColor": "#009faa",

about_ui_ui.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def retranslateUi(self, Form):
130130
self.label_2.setText(_translate("Form", "WindowsCleaner"))
131131
self.label_4.setText(_translate("Form", "作者B站: Mr_Jacek"))
132132
self.label_5.setText(_translate("Form", "官网:https://wc.dyblog.online/"))
133-
self.label_3.setText(_translate("Form", "版本:v4.0"))
133+
self.label_3.setText(_translate("Form", "版本:v5.0"))
134134
self.label_6.setText(_translate("Form", "博客:https://www.dyblog.online/"))
135135
self.pushButton.setText(_translate("Form", "立即检查更新"))
136136
self.label_7.setText(_translate("Form", "Developed By DaYe"))

auto.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@
1919
from datetime import datetime
2020
import time
2121

22+
23+
def get_settings():
24+
# 获取当前脚本的目录
25+
script_directory = os.path.dirname(os.path.abspath(__file__))
26+
settings_path = f'{script_directory}\WCMain\settings.json'
27+
28+
with open(settings_path, 'r') as f:
29+
settings_data = json.load(f)
30+
return settings_data
31+
2232
# 获取当前脚本的目录
2333
script_directory = os.path.dirname(os.path.abspath(__file__))
2434
settings_path = f'{script_directory}\WCMain\settings.json'
@@ -240,6 +250,7 @@ def after_clean(self):
240250
json.dump(self.settings_data, file, indent=4)
241251

242252
def save_paths(self):
253+
self.settings_data = get_settings()
243254
print("changed")
244255
# 字符串表示的列表
245256
list_str = f"{self.textEdit.toPlainText()}"
@@ -255,16 +266,19 @@ def save_paths(self):
255266
json.dump(self.settings_data, file, indent=4)
256267

257268
def spinBox_changed(self):
269+
self.settings_data = get_settings()
258270
self.settings_data["AutoCleanTime"] = self.spinBox.value()
259271
with open('WCMain/settings.json', 'w') as file:
260272
json.dump(self.settings_data, file, indent=4)
261273

262274
def spinBox_2_changed(self):
275+
self.settings_data = get_settings()
263276
self.settings_data["AutoCleanRoom"] = self.spinBox_2.value()
264277
with open('WCMain/settings.json', 'w') as file:
265278
json.dump(self.settings_data, file, indent=4)
266279

267280
def ModeChanged(self, index):
281+
self.settings_data = get_settings()
268282
if index == 0:
269283
print("定期清理")
270284
self.spinBox.setEnabled(True)
@@ -282,6 +296,7 @@ def ModeChanged(self, index):
282296
json.dump(self.settings_data, file, indent=4)
283297

284298
def onCheckedChanged(self, isChecked: bool):
299+
self.settings_data = get_settings()
285300
if isChecked==True:
286301
self.settings_data["AutoCleanEnabled"] = "True"
287302
self.comboBox.setEnabled(True)

clean.py

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import os
2222

23+
current_file = "清理内存和临时文件,减少电脑卡顿"
2324
# 获取当前脚本的目录
2425
script_directory = os.path.dirname(os.path.abspath(__file__))
2526
settings_path = f'{script_directory}\WCMain\settings.json'
@@ -74,15 +75,65 @@ def clean_main():
7475
global settings_data
7576
boost_prefetch('C:\\Windows\\SoftwareDistribution\\Download')
7677
boost_prefetch('C:\\Windows\\Prefetch')
78+
boost_prefetch('C:\\Windows\\Temp')
79+
boost_prefetch('C:\\Windows\\System32\\LogFiles')
80+
boost_prefetch('C:\\Windows\\System32\\DriverStore\\FileRepository')
7781
clean_temp_folder()
7882
clean_system_logs()
79-
clean_browser_cache()
83+
clean_application_cache()
84+
try:
85+
clean_browser_cache()
86+
except Exception as e:
87+
print("浏览器缓存清理失败")
8088
delete_restore_points()
89+
clean_tmp_files()
8190
user_list = settings_data["includePath"]
8291
for path in user_list:
8392
boost_prefetch(path)
8493

94+
def clean_application_cache():
95+
# 获取当前用户的用户名
96+
username = os.getlogin()
97+
# 构建应用程序缓存目录的路径
98+
cache_dir = f'C:\\Users\\{username}\\AppData\\Local\\Packages'
99+
# 遍历缓存目录下的所有文件夹
100+
for root, dirs, files in os.walk(cache_dir):
101+
for dir in dirs:
102+
# 构建每个应用程序缓存文件夹的路径
103+
app_cache_dir = os.path.join(root, dir)
104+
# 如果文件夹名称以"Cache"或"cache"结尾,则删除该文件夹
105+
if dir.lower().endswith('cache'):
106+
try:
107+
shutil.rmtree(app_cache_dir)
108+
print(f"Deleted {app_cache_dir}")
109+
except Exception as e:
110+
print(f"Failed to delete {app_cache_dir}. Reason: {e}")
111+
112+
113+
def clean_tmp_files():
114+
global current_file
115+
# 定义要遍历的文件夹路径
116+
folder_path = "C:\\" # C盘根目录
117+
# 获取管理员权限
118+
if not os.access(folder_path, os.W_OK):
119+
raise PermissionError("You don't have permission to delete files in this folder.")
120+
# 遍历文件夹及其子文件夹
121+
for root, dirs, files in os.walk(folder_path):
122+
for file in files:
123+
# 检查文件是否为.tmp文件
124+
if file.endswith(".tmp") or file.endswith(".cache"):
125+
# 获取文件的完整路径
126+
file_path = os.path.join(root, file)
127+
# 删除文件
128+
try:
129+
current_file = file_path
130+
os.remove(file_path)
131+
print(f"已删除:{file_path}")
132+
except Exception as e:
133+
print(f"Failed to delete: {file_path}, Error: {e}")
134+
85135
def boost_prefetch(folder_path):
136+
global current_file
86137
if os.path.exists(folder_path):
87138
print(f"The path {folder_path} exists.")
88139
else:
@@ -98,6 +149,7 @@ def boost_prefetch(folder_path):
98149
file_path = os.path.join(folder_path, filename)
99150
try:
100151
if os.path.isfile(file_path):
152+
current_file = file_path
101153
os.remove(file_path)
102154
elif os.path.isdir(file_path):
103155
shutil.rmtree(file_path)
@@ -112,7 +164,6 @@ def clean_temp_folder():
112164
def clean_browser_cache():
113165
browser_cache_folders = {
114166
"Chrome": os.path.join(os.getenv("LOCALAPPDATA"), "Google\\Chrome\\User Data\\Default\\Cache"),
115-
"Firefox": os.path.join(os.getenv("APPDATA"), "Mozilla\\Firefox\\Profiles"),
116167
"Edge": os.path.join(os.getenv("LOCALAPPDATA"), "Microsoft\\Edge\\User Data\\Default\\Cache")
117168
}
118169
print(browser_cache_folders)
@@ -183,7 +234,7 @@ def __init__(self, parent=None):
183234
self.run_flash()
184235

185236
def on_operation_completed(self):
186-
pass
237+
print("完成")
187238

188239
def run_flash(self):
189240
self.thread = FlashThread()
@@ -192,7 +243,10 @@ def run_flash(self):
192243
self.thread.start()
193244

194245
def update_ui(self, index):
246+
global current_file
195247
self.progressBar.setValue(index)
248+
file_name = os.path.basename(current_file)
249+
self.label_3.setText(f"{file_name}")
196250

197251
def boost(self):
198252
print("优化加速")
@@ -229,6 +283,8 @@ def show_work(self):
229283
print(f"找不到驱动器 {drive_letter}")
230284

231285
def after_clean(self):
286+
global current_file
287+
current_file = "清理内存和临时文件,减少电脑卡顿"
232288
self.v1 = get_v()
233289
if int(self.v0-self.v1) > 1024:
234290
message = f"加速完成!\n清理出{format((self.v0 - self.v1)/1024, '.2f')}GB空间"
@@ -240,6 +296,8 @@ def after_clean(self):
240296
self.show_work()
241297

242298
def deep_after_clean(self):
299+
global current_file
300+
current_file = "清理内存和临时文件,减少电脑卡顿"
243301
self.v1 = get_v()
244302
if int(self.v0-self.v1) > 1024:
245303
message = f"加速完成!\n清理出{format((self.v0 - self.v1)/1024, '.2f')}GB空间"

main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ def closeEvent(self, e):
194194
def initWindow(self):
195195
self.setFixedSize(396,532) # 288+28,520
196196
self.setWindowFlags(self.windowFlags() | Qt.WindowStaysOnTopHint)
197-
self.setWindowTitle('WindowsCleaner v4.0')
197+
self.setWindowTitle('WindowsCleaner v5.0')
198198
self.setWindowIcon(QIcon(':/imgs/imgs/clean.png'))
199199
# 窗口居右下
200200
rect = QApplication.desktop().availableGeometry()

script.iss

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
; Script generated by the Inno Setup Script Wizard.
2+
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
3+
4+
#define MyAppName "WindowsCleaner"
5+
#define MyAppVersion "5.0"
6+
#define MyAppPublisher "DaYe, Inc."
7+
#define MyAppURL "https://wc.dyblog.online/"
8+
#define MyAppExeName "main.exe"
9+
#define MyAppAssocName MyAppName + " File"
10+
#define MyAppAssocExt ".myp"
11+
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt
12+
13+
[Setup]
14+
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
15+
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
16+
AppId={{1FBB8B55-2928-4CF3-B26D-DA65660ADBA1}
17+
AppName={#MyAppName}
18+
AppVersion={#MyAppVersion}
19+
;AppVerName={#MyAppName} {#MyAppVersion}
20+
AppPublisher={#MyAppPublisher}
21+
AppPublisherURL={#MyAppURL}
22+
AppSupportURL={#MyAppURL}
23+
AppUpdatesURL={#MyAppURL}
24+
DefaultDirName={autopf}\{#MyAppName}
25+
ChangesAssociations=yes
26+
DefaultGroupName={#MyAppName}
27+
DisableProgramGroupPage=yes
28+
; Uncomment the following line to run in non administrative install mode (install for current user only.)
29+
;PrivilegesRequired=lowest
30+
OutputDir=E:\Files\PythonFiles\WindowsCleaner5\releases
31+
OutputBaseFilename=windowscleaner_v5.0_amd64_setup
32+
Compression=lzma
33+
SolidCompression=yes
34+
WizardStyle=modern
35+
WizardImageFile=E:\Files\logo\New\ad3.bmp
36+
WizardSmallImageFile=E:\Files\logo\New\sad.bmp
37+
38+
[Languages]
39+
Name: "english"; MessagesFile: "compiler:Default.isl"
40+
Name: "armenian"; MessagesFile: "compiler:Languages\Armenian.isl"
41+
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
42+
Name: "bulgarian"; MessagesFile: "compiler:Languages\Bulgarian.isl"
43+
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
44+
Name: "chinesesimplified"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"
45+
Name: "corsican"; MessagesFile: "compiler:Languages\Corsican.isl"
46+
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
47+
Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
48+
Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
49+
Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
50+
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
51+
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
52+
Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
53+
Name: "icelandic"; MessagesFile: "compiler:Languages\Icelandic.isl"
54+
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
55+
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
56+
Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
57+
Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
58+
Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
59+
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
60+
Name: "slovak"; MessagesFile: "compiler:Languages\Slovak.isl"
61+
Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
62+
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
63+
Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
64+
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"
65+
66+
[Tasks]
67+
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
68+
69+
[Files]
70+
Source: "E:\Files\PythonFiles\WindowsCleaner5\dist\main.dist\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
71+
Source: "E:\Files\PythonFiles\WindowsCleaner5\dist\main.dist\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
72+
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
73+
74+
[Registry]
75+
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
76+
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey
77+
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
78+
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""
79+
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: ""
80+
81+
[Icons]
82+
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
83+
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
84+
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
85+
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
86+
87+
[Run]
88+
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
89+

settings.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@
1111
import sys
1212
import requests
1313

14+
15+
def get_settings():
16+
# 获取当前脚本的目录
17+
script_directory = os.path.dirname(os.path.abspath(__file__))
18+
settings_path = f'{script_directory}\WCMain\settings.json'
19+
20+
with open(settings_path, 'r') as f:
21+
settings_data = json.load(f)
22+
return settings_data
23+
24+
1425
# 获取当前脚本的目录
1526
script_directory = os.path.dirname(os.path.abspath(__file__))
1627
settings_path = f'{script_directory}\WCMain\settings.json'
@@ -67,31 +78,36 @@ def __init__(self, parent=None):
6778
self.comboBox_6.currentIndexChanged.connect(self.AutoUpdateChanged)
6879

6980
def AutoUpdateChanged(self, index):
81+
self.settings_data = get_settings()
7082
self.settings_data['update'] = self.comboBox_6.currentIndex()
7183
with open('WCMain/settings.json', 'w') as file:
7284
json.dump(self.settings_data, file, indent=4)
7385
self.showTeachingTip()
7486

7587
def ThemeChanged(self, index):
88+
self.settings_data = get_settings()
7689
self.settings_data['theme'] = self.comboBox_7.currentIndex()
7790
with open('WCMain/settings.json', 'w') as file:
7891
json.dump(self.settings_data, file, indent=4)
7992
self.showTeachingTip()
8093

8194
def CloseEventChanged(self, index):
95+
self.settings_data = get_settings()
8296
self.settings_data['closeEvent'] = self.comboBox_5.currentIndex()
8397
with open('WCMain/settings.json', 'w') as file:
8498
json.dump(self.settings_data, file, indent=4)
8599
self.showTeachingTip()
86100

87101
def ChangeThemeColor(self):
102+
self.settings_data = get_settings()
88103
current_color = QColor(self.settings_data['themeColor'])
89104
w = ColorDialog(current_color, "Choose Background Color", enableAlpha=False, parent=self)
90105
c_color = None
91106
w.colorChanged.connect(lambda color: self.mf(color))
92107
w.exec()
93108

94109
def mf(self, color):
110+
self.settings_data = get_settings()
95111
print(color.name())
96112
#self.label_11.setStyleSheet(f"background-color: {color.name()};")
97113
self.settings_data['themeColor'] = color.name()
@@ -101,6 +117,7 @@ def mf(self, color):
101117
#self.showTeachingTip()
102118

103119
def AutoRun(self):
120+
self.settings_data = get_settings()
104121
if self.AutoRun_2.isChecked():
105122
print("setAutoRun")
106123
self.settings_data['AutoRunEnabled'] = "True"

0 commit comments

Comments
 (0)