mirror of
https://github.com/TriM-Organization/Musicreater.git
synced 2024-11-13 10:57:43 +08:00
165 lines
5.8 KiB
Python
165 lines
5.8 KiB
Python
# -*- coding: utf-8 -*-
|
||
|
||
|
||
# 音·创 开发交流群 861684859
|
||
# Email EillesWan2006@163.com W-YI_DoctorYI@outlook.com EillesWan@outlook.com
|
||
# 版权所有 金羿("Eilles Wan") & 诸葛亮与八卦阵("bgArray") & 鸣凤鸽子("MingFengPigeon")
|
||
# 若需转载或借鉴 请依照 Apache 2.0 许可证进行许可
|
||
|
||
|
||
"""
|
||
音·创启动器 (Musicreater Launcher)
|
||
对音·创的自动安装以及相应版本选择提供支持的工具
|
||
Musicreater Launcher (音·创启动器)
|
||
A tool that used for installing Musicreater automatically
|
||
|
||
Copyright 2022 all the developers of Musicreater
|
||
|
||
Licensed under the Apache License, Version 2.0 (the 'License');
|
||
you may not use this file except in compliance with the License.
|
||
You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an 'AS IS' BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
"""
|
||
|
||
|
||
# 下面为正文
|
||
|
||
|
||
import os
|
||
import shutil
|
||
import threading
|
||
import time
|
||
import urllib.request
|
||
from platform import architecture
|
||
from sys import platform
|
||
|
||
from git import Repo
|
||
|
||
|
||
def downloadPython():
|
||
if os.system('python -V'):
|
||
print('\033[7m{}\033[0m'.format("正在下载python\nDownloading Python"))
|
||
try:
|
||
urllib.request.urlretrieve(
|
||
"https://www.python.org/ftp/python/3.8.10/python-3.8.10.exe"
|
||
if architecture()[0] == "32bit"
|
||
else "https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe",
|
||
"./pythonInstaller.exe",
|
||
)
|
||
except Exception as E:
|
||
input(str(E) + "\n自动下载失败,按下回车取消 | Download failed, press enter to cancel")
|
||
exit()
|
||
|
||
print('正在安装python\nInstalling Python')
|
||
|
||
os.system(
|
||
f'.\\pythonInstaller.exe /passive InstallAllUsers=1 AssociateFiles=1 CompileAll=1 PrependPath=1 Shortcuts=1 Include_doc=0 Include_exe=1 Include_pip=1 Include_lib=1 Include_tcltk=1 Include_launcher=1 InstallLauncherAllUsers=1 Include_test=0 Include_tools=0'
|
||
)
|
||
|
||
os.remove('./pythonInstaller.exe')
|
||
|
||
|
||
def downloadPkgVer():
|
||
Repo.clone_from(
|
||
'https://gitee.com/EillesWan/Musicreater.git',
|
||
'./MusictraterPkgver',
|
||
branch='pkgver',
|
||
)
|
||
|
||
|
||
def installLibraries(
|
||
libraries: list, indexs: str = 'https://pypi.tuna.tsinghua.edu.cn/simple'
|
||
):
|
||
"""安装全部开发用库"""
|
||
if platform == 'win32':
|
||
for i in libraries:
|
||
print("安装库 | Installing Librory:" + i)
|
||
os.system(f"python -m pip install {i} -i {indexs}")
|
||
elif platform == 'linux':
|
||
os.system("sudo apt-get install python3-pip")
|
||
for i in libraries:
|
||
print("安装库 | Installing Librory:" + i)
|
||
os.system(f"sudo python3 -m pip install {i} -i {indexs}")
|
||
|
||
|
||
def __mian__():
|
||
if platform == 'win32':
|
||
import wx
|
||
|
||
# 主窗口类
|
||
class MainFrame(wx.Frame):
|
||
def __init__(self, parent, title):
|
||
wx.Frame.__init__(
|
||
self, id=wx.ID_ANY, parent=parent, title=title, size=(350, 200)
|
||
)
|
||
|
||
self.buttonMainVer = wx.Button(
|
||
self, -1, "音·创主版本\nMSCT main", pos=(50, 20), size=(100, 50)
|
||
)
|
||
|
||
self.button_pkgver = wx.Button(
|
||
self, -1, "音·创库版本\nPkgver", pos=(180, 20), size=(100, 50)
|
||
)
|
||
|
||
self.Bind(wx.EVT_BUTTON, self.mainVer, self.buttonMainVer)
|
||
self.buttonMainVer.SetDefault()
|
||
|
||
self.Bind(wx.EVT_BUTTON, self.pkgVer, self.button_pkgver)
|
||
self.button_pkgver.SetDefault()
|
||
|
||
self.textlabel = wx.StaticText(self, -1, "就绪\nReady", pos=(50, 100))
|
||
|
||
self.Show(True)
|
||
|
||
def mainVer(self, event):
|
||
wx.MessageBox(
|
||
"音·创主版本尚在开发过程中,敬请期待!\nThe main version of Musicreater is now developing, please stay tuned...",
|
||
"提示 | Tips",
|
||
wx.OK | wx.ICON_INFORMATION,
|
||
)
|
||
|
||
def pkgVer(self, event):
|
||
wx.MessageBox(
|
||
"音·创库版本是一项支持库,本程序仅提供下载,具体使用请见下载后的文件,谢谢!\nThis program is only available for download of pkgver, please see the downloaded file for specific use, thank you!",
|
||
"提示 | Tips",
|
||
wx.OK | wx.ICON_INFORMATION,
|
||
)
|
||
self.textlabel.SetLabel("正在检测Python环境\nChecking Python environment")
|
||
time.sleep(1)
|
||
downloadPython()
|
||
self.textlabel.SetLabel("正在下载音·创库版本\nChecking Musicreater Pkgver")
|
||
time.sleep(1)
|
||
downloadPkgVer()
|
||
self.textlabel.SetLabel("正在安装所需依赖库\nInstalling required libraries")
|
||
time.sleep(1)
|
||
installLibraries(
|
||
[
|
||
'brotli',
|
||
'mido',
|
||
]
|
||
)
|
||
self.textlabel.SetLabel("完成!\nOK!")
|
||
time.sleep(1)
|
||
os.remove('./MusictraterPkgver/.gitignore')
|
||
shutil.rmtree('./MusictraterPkgver/.git')
|
||
self.Show(False)
|
||
self.Destroy()
|
||
exit()
|
||
|
||
app = wx.App(False)
|
||
frame = MainFrame(None, "音·创 启动器 | MSCT Launcher")
|
||
app.MainLoop()
|
||
elif platform == 'linux':
|
||
pass
|
||
|
||
|
||
if __name__ == '__main__':
|
||
__mian__()
|