背景
用MAC電腦偶爾有些時(shí)候需要用到windows僵缺,之前還有雙系統(tǒng)可以選擇声诸,但從M1芯片開始,雙系統(tǒng)就玩不了了单起,好在有虛擬機(jī)阳谍,而且性能還不錯(cuò)蛀柴,日常夠用了。
我用的是Parallels矫夯,之前有個(gè)PD Runner鸽疾,適用于Parallels Desktop的啟動(dòng)器, 可無視試用期限強(qiáng)制啟動(dòng)客戶機(jī) (支持 PD17.1.0),但是最近用不了了训貌。
一番搜索學(xué)習(xí)后制肮,B站發(fā)現(xiàn)了個(gè)用PD Start的視頻,也可以實(shí)現(xiàn)繞過限制递沪。然而實(shí)際下載安裝后發(fā)現(xiàn)有報(bào)錯(cuò)無法使用豺鼻。從視頻得知作者用的是python寫的,比較對(duì)口款慨,于是便開始對(duì)它二次開發(fā)儒飒。
本項(xiàng)目僅用于學(xué)習(xí)研究使用, 請(qǐng)支持正版!
過程
扒源碼
作者本身是沒有提供源碼的,但是這個(gè)工程使用的py2app
打包檩奠,因此可以分析源碼肯定在應(yīng)用包中桩了。
分析源碼
作者代碼還是比較工整的附帽,通過源碼中分析不難看出,其核心步驟就是修改系統(tǒng)時(shí)間井誉,調(diào)用系統(tǒng)命令啟動(dòng)虛擬機(jī)后再改回系統(tǒng)時(shí)間蕉扮。
# 修改電腦時(shí)間
(datestatus, dateoutput) = subprocess.getstatusoutput(
"echo {} | sudo -S {}".format(config["password"], f"date {pc_time}2019")) # 設(shè)置日期
print(datestatus, dateoutput)
prlctl = "/usr/local/bin/prlctl" # 怕環(huán)境變量異常,嘗試使用更粗暴的方式
cmd = prlctl + " start " + "\"" + parm.title + "\""
(status, output) = subprocess.getstatusoutput(cmd) # 啟動(dòng)PD的系統(tǒng)
# 將時(shí)間改回來
(datestatus, dateoutput) = subprocess.getstatusoutput(
"echo {} | sudo -S {}".format(config["password"], f"date {pc_time}{nowdate.year}")) # 設(shè)置日期
print(datestatus, dateoutput)
自定義開發(fā)
實(shí)際也沒改啥颗圣,不過介于作者提供的版本運(yùn)行報(bào)錯(cuò)喳钟,我自己裝了相關(guān)的運(yùn)行依賴debug來看,是沒有出現(xiàn)了在岂,估計(jì)是m1版本的問題奔则。
于是就用pipenv管理下依賴,源碼也用git管理下洁段,后面有問題也好詳細(xì)定位處理应狱,順手改了改文案重新打包吧共郭。
pipenv --python=3.8
pipenv install
python setup.py py2app -A
使用
效果還不錯(cuò)祠丝,后面看需求再給它加功能吧。
親測macbook m1 pro + PD 17.1 有效除嘹,需要自刃窗搿:
鏈接: https://pan.baidu.com/s/1YjBHyUwwiVS6FsI3clB4jg
提取碼: 評(píng)論回復(fù)獲取。
總結(jié)
當(dāng)是復(fù)習(xí)python的桌面應(yīng)用開發(fā)了尉咕,有條件的還請(qǐng)支持原版吧叠蝇,我比較窮。