diff --git a/README.md b/README.md
index 7c8ace743ce..b0735915120 100644
--- a/README.md
+++ b/README.md
@@ -104,8 +104,8 @@ scoop bucket add apps https://github.com/kkzzhizhou/scoop-apps
- noql-net/scoop
- ygguorun/scoop-bucket
- Velgus/Scoop-Portapps
-- iquiw/scoop-bucket
- aliesbelik/poldi
+- iquiw/scoop-bucket
- AStupidBear/scoop-bear
- batkiz/backit
- ChungZH/peach
@@ -118,27 +118,28 @@ scoop bucket add apps https://github.com/kkzzhizhou/scoop-apps
- aoisummer/scoop-bucket
- SayCV/scoop-cvp
- starise/Scoop-Gaming
-- starise/Scoop-Confetti
- seumsc/scoop-seu
- Weidows-projects/scoop-3rd
+- starise/Scoop-Confetti
- TianXiaTech/scoop-txt
- rivy/scoop-bucket
- Darkatse/Scoop-Darkatse
- kengwang/scoop-ctftools-bucket
- AkariiinMKII/Scoop4kariiin
- alextwothousand/scoop-bucket
+- beer-psi/scoop-bucket
- HUMORCE/nuke
-- mo-san/scoop-bucket
- littleli/Scoop-littleli
-- beer-psi/scoop-bucket
+- cmontage/scoopbucket-third
+- mo-san/scoop-bucket
- BenjaminMichaelis/Config
- Toddli468/Pentest-Scoop-Bucket
+- natecohen/scoop-av
- Small-Ku/turbo-bucket
- ShuguangSun/sgs-scoop-bucket
- WinApps-share/WinApps-bucket
- FlawlessCasual17/MyScoop
- babo4d/scoop-xrtools
-- natecohen/scoop-av
- Deide/deide-bucket
- The-Simples/scoop-minecraft
- KnotUntied/scoop-fonts
diff --git a/app-contributor-list.csv b/app-contributor-list.csv
index e11845506dd..865358b1355 100644
--- a/app-contributor-list.csv
+++ b/app-contributor-list.csv
@@ -7630,6 +7630,7 @@ DNSAngel.json,akirco/aki-apps
aofv.json,akirco/aki-apps
uwd.json,akirco/aki-apps
docker-desktop.json,akirco/aki-apps
+fishingfunds.json,akirco/aki-apps
FixWin10.json,akirco/aki-apps
phantomjs_akirco.json,akirco/aki-apps
mdbook_akirco.json,akirco/aki-apps
@@ -7767,7 +7768,6 @@ termscp_akirco.json,akirco/aki-apps
mtn_akirco.json,akirco/aki-apps
tup_akirco.json,akirco/aki-apps
xidel_akirco.json,akirco/aki-apps
-fishingfunds.json,akirco/aki-apps
powerhtml.json,akirco/aki-apps
libwebp_akirco.json,akirco/aki-apps
ncspot_akirco.json,akirco/aki-apps
@@ -7805,8 +7805,8 @@ pandoc_akirco.json,akirco/aki-apps
alipan.json,akirco/aki-apps
nali_akirco.json,akirco/aki-apps
gitomatic_akirco.json,akirco/aki-apps
-pure-live.json,akirco/aki-apps
far_akirco.json,akirco/aki-apps
+simple-live.json,akirco/aki-apps
wkhtmltopdf_akirco.json,akirco/aki-apps
directoryPredictor.json,akirco/aki-apps
ollama_akirco.json,akirco/aki-apps
@@ -7815,6 +7815,7 @@ ntop_akirco.json,akirco/aki-apps
yddict.json,akirco/aki-apps
f2_akirco.json,akirco/aki-apps
psutils_akirco.json,akirco/aki-apps
+instaloader.json,akirco/aki-apps
bob.json,akirco/aki-apps
lsd_akirco.json,akirco/aki-apps
easywsl.json,akirco/aki-apps
@@ -8986,35 +8987,6 @@ oraclejdk6-portapps.json,Velgus/Scoop-Portapps
nextcloud-portapps.json,Velgus/Scoop-Portapps
tabby-portapps.json,Velgus/Scoop-Portapps
android-studio-portapps.json,Velgus/Scoop-Portapps
-logcli.json,iquiw/scoop-bucket
-hunspell.json,iquiw/scoop-bucket
-emacs-tree-sitter-module-ucrt64.json,iquiw/scoop-bucket
-pinentry-w32-ncg.json,iquiw/scoop-bucket
-rireq.json,iquiw/scoop-bucket
-hackgen.json,iquiw/scoop-bucket
-ollama-zip.json,iquiw/scoop-bucket
-ct.json,iquiw/scoop-bucket
-comrak.json,iquiw/scoop-bucket
-cica.json,iquiw/scoop-bucket
-gopls.json,iquiw/scoop-bucket
-emacs-tree-sitter-module.json,iquiw/scoop-bucket
-buildkit.json,iquiw/scoop-bucket
-cinc-auditor.json,iquiw/scoop-bucket
-gpgpdump.json,iquiw/scoop-bucket
-ghc96.json,iquiw/scoop-bucket
-iosevka.json,iquiw/scoop-bucket
-aspell_iquiw.json,iquiw/scoop-bucket
-zigmod.json,iquiw/scoop-bucket
-browserpass.json,iquiw/scoop-bucket
-yj.json,iquiw/scoop-bucket
-password.json,iquiw/scoop-bucket
-rawrite32.json,iquiw/scoop-bucket
-tbls.json,iquiw/scoop-bucket
-ledger.json,iquiw/scoop-bucket
-hackgennerd.json,iquiw/scoop-bucket
-smtprelay.json,iquiw/scoop-bucket
-evtx_dump.json,iquiw/scoop-bucket
-pict.json,iquiw/scoop-bucket
tt.json,aliesbelik/poldi
websocat.json,aliesbelik/poldi
plow.json,aliesbelik/poldi
@@ -9139,6 +9111,7 @@ ghz.json,aliesbelik/poldi
tuifeed.json,aliesbelik/poldi
qv.json,aliesbelik/poldi
query-json.json,aliesbelik/poldi
+yj.json,aliesbelik/poldi
jnv.json,aliesbelik/poldi
xurls.json,aliesbelik/poldi
httprobe.json,aliesbelik/poldi
@@ -9164,12 +9137,40 @@ pgweb.json,aliesbelik/poldi
tpm.json,aliesbelik/poldi
dnsping.json,aliesbelik/poldi
trubka.json,aliesbelik/poldi
+pict.json,aliesbelik/poldi
gobench.json,aliesbelik/poldi
xq.json,aliesbelik/poldi
pingu.json,aliesbelik/poldi
mqttui.json,aliesbelik/poldi
kcli.json,aliesbelik/poldi
kubestr.json,aliesbelik/poldi
+logcli.json,iquiw/scoop-bucket
+hunspell.json,iquiw/scoop-bucket
+emacs-tree-sitter-module-ucrt64.json,iquiw/scoop-bucket
+pinentry-w32-ncg.json,iquiw/scoop-bucket
+rireq.json,iquiw/scoop-bucket
+hackgen.json,iquiw/scoop-bucket
+ollama-zip.json,iquiw/scoop-bucket
+ct.json,iquiw/scoop-bucket
+comrak.json,iquiw/scoop-bucket
+cica.json,iquiw/scoop-bucket
+gopls.json,iquiw/scoop-bucket
+emacs-tree-sitter-module.json,iquiw/scoop-bucket
+buildkit.json,iquiw/scoop-bucket
+cinc-auditor.json,iquiw/scoop-bucket
+gpgpdump.json,iquiw/scoop-bucket
+ghc96.json,iquiw/scoop-bucket
+iosevka.json,iquiw/scoop-bucket
+aspell_iquiw.json,iquiw/scoop-bucket
+zigmod.json,iquiw/scoop-bucket
+browserpass.json,iquiw/scoop-bucket
+password.json,iquiw/scoop-bucket
+rawrite32.json,iquiw/scoop-bucket
+tbls.json,iquiw/scoop-bucket
+ledger.json,iquiw/scoop-bucket
+hackgennerd.json,iquiw/scoop-bucket
+smtprelay.json,iquiw/scoop-bucket
+evtx_dump.json,iquiw/scoop-bucket
reset-permission.json,AStupidBear/scoop-bear
regworkshop.json,AStupidBear/scoop-bear
hdfview.json,AStupidBear/scoop-bear
@@ -9681,45 +9682,6 @@ borderless-gaming.json,starise/Scoop-Gaming
steamless.json,starise/Scoop-Gaming
uniws-patcher.json,starise/Scoop-Gaming
nvidia-display-driver.json,starise/Scoop-Gaming
-firefox-policies.json,starise/Scoop-Confetti
-komorebi-tray.json,starise/Scoop-Confetti
-colors.json,starise/Scoop-Confetti
-audiotester.json,starise/Scoop-Confetti
-4k-videotomp3.json,starise/Scoop-Confetti
-link-shell-extension.json,starise/Scoop-Confetti
-monitor-switcher.json,starise/Scoop-Confetti
-muffon.json,starise/Scoop-Confetti
-svg-explorer-extension.json,starise/Scoop-Confetti
-latencymon.json,starise/Scoop-Confetti
-cbxconverter.json,starise/Scoop-Confetti
-lunatask.json,starise/Scoop-Confetti
-heavyload.json,starise/Scoop-Confetti
-filelist.json,starise/Scoop-Confetti
-sacd-extract.json,starise/Scoop-Confetti
-rotki.json,starise/Scoop-Confetti
-freezer.json,starise/Scoop-Confetti
-firefox-portable-it.json,starise/Scoop-Confetti
-firefox-it.json,starise/Scoop-Confetti
-vscode-it.json,starise/Scoop-Confetti
-4k-videodownloader.json,starise/Scoop-Confetti
-4k-stogram.json,starise/Scoop-Confetti
-nconvert_starise.json,starise/Scoop-Confetti
-sacd-extract-gui.json,starise/Scoop-Confetti
-clipgrab.json,starise/Scoop-Confetti
-srt-to-vtt.json,starise/Scoop-Confetti
-win11-toggle-rounded-corners.json,starise/Scoop-Confetti
-wilma.json,starise/Scoop-Confetti
-batchencoder.json,starise/Scoop-Confetti
-aquasnap.json,starise/Scoop-Confetti
-firefox-developer-it.json,starise/Scoop-Confetti
-4k-youtubetomp3.json,starise/Scoop-Confetti
-randpass.json,starise/Scoop-Confetti
-win11-virtual-desktop-extension.json,starise/Scoop-Confetti
-win10-virtual-desktop-enhancer.json,starise/Scoop-Confetti
-vscodium-it.json,starise/Scoop-Confetti
-firefox-beta-it.json,starise/Scoop-Confetti
-epub-metadata-editor.json,starise/Scoop-Confetti
-bluetooth-version-finder.json,starise/Scoop-Confetti
clash-dotnet.json,seumsc/scoop-seu
clash-win.json,seumsc/scoop-seu
resxtranslator.json,seumsc/scoop-seu
@@ -9764,6 +9726,45 @@ Air_Weidows-projects.json,Weidows-projects/scoop-3rd
ollama_Weidows-projects.json,Weidows-projects/scoop-3rd
nvm_Weidows-projects.json,Weidows-projects/scoop-3rd
eva_Weidows-projects.json,Weidows-projects/scoop-3rd
+firefox-policies.json,starise/Scoop-Confetti
+komorebi-tray.json,starise/Scoop-Confetti
+colors.json,starise/Scoop-Confetti
+audiotester.json,starise/Scoop-Confetti
+4k-videotomp3.json,starise/Scoop-Confetti
+link-shell-extension.json,starise/Scoop-Confetti
+monitor-switcher.json,starise/Scoop-Confetti
+muffon.json,starise/Scoop-Confetti
+svg-explorer-extension.json,starise/Scoop-Confetti
+latencymon.json,starise/Scoop-Confetti
+cbxconverter.json,starise/Scoop-Confetti
+lunatask.json,starise/Scoop-Confetti
+heavyload.json,starise/Scoop-Confetti
+filelist.json,starise/Scoop-Confetti
+sacd-extract.json,starise/Scoop-Confetti
+rotki.json,starise/Scoop-Confetti
+freezer.json,starise/Scoop-Confetti
+firefox-portable-it.json,starise/Scoop-Confetti
+firefox-it.json,starise/Scoop-Confetti
+vscode-it.json,starise/Scoop-Confetti
+4k-videodownloader.json,starise/Scoop-Confetti
+4k-stogram.json,starise/Scoop-Confetti
+nconvert_starise.json,starise/Scoop-Confetti
+sacd-extract-gui.json,starise/Scoop-Confetti
+clipgrab.json,starise/Scoop-Confetti
+srt-to-vtt.json,starise/Scoop-Confetti
+win11-toggle-rounded-corners.json,starise/Scoop-Confetti
+wilma.json,starise/Scoop-Confetti
+batchencoder.json,starise/Scoop-Confetti
+aquasnap.json,starise/Scoop-Confetti
+firefox-developer-it.json,starise/Scoop-Confetti
+4k-youtubetomp3.json,starise/Scoop-Confetti
+randpass.json,starise/Scoop-Confetti
+win11-virtual-desktop-extension.json,starise/Scoop-Confetti
+win10-virtual-desktop-enhancer.json,starise/Scoop-Confetti
+vscodium-it.json,starise/Scoop-Confetti
+firefox-beta-it.json,starise/Scoop-Confetti
+epub-metadata-editor.json,starise/Scoop-Confetti
+bluetooth-version-finder.json,starise/Scoop-Confetti
clash-for-windows-cn.json,TianXiaTech/scoop-txt
geekdesk.json,TianXiaTech/scoop-txt
360wallpaper.json,TianXiaTech/scoop-txt
@@ -10396,6 +10397,48 @@ emscripten_alextwothousand.json,alextwothousand/scoop-bucket
winfetch_alextwothousand.json,alextwothousand/scoop-bucket
luajit_alextwothousand.json,alextwothousand/scoop-bucket
pscore.json,alextwothousand/scoop-bucket
+cider-nightly.json,beer-psi/scoop-bucket
+brokenithm-kb.json,beer-psi/scoop-bucket
+beeper.json,beer-psi/scoop-bucket
+scoop-search_beer-psi.json,beer-psi/scoop-bucket
+apfs.json,beer-psi/scoop-bucket
+arrayv.json,beer-psi/scoop-bucket
+unxwb.json,beer-psi/scoop-bucket
+windowstoolbox-head.json,beer-psi/scoop-bucket
+adguardhome-beta.json,beer-psi/scoop-bucket
+jpeg-bin.json,beer-psi/scoop-bucket
+aidoku-cli.json,beer-psi/scoop-bucket
+absolutetouch.json,beer-psi/scoop-bucket
+itunes64-older-video-cards-np.json,beer-psi/scoop-bucket
+sl-h.json,beer-psi/scoop-bucket
+ntfs2btrfs_beer-psi.json,beer-psi/scoop-bucket
+peupdate.json,beer-psi/scoop-bucket
+unikey.json,beer-psi/scoop-bucket
+ib-en.json,beer-psi/scoop-bucket
+justasplanned.json,beer-psi/scoop-bucket
+thewitchshouse-jp.json,beer-psi/scoop-bucket
+sl.json,beer-psi/scoop-bucket
+rawcap-old.json,beer-psi/scoop-bucket
+libretta.json,beer-psi/scoop-bucket
+zalo.json,beer-psi/scoop-bucket
+xprop.json,beer-psi/scoop-bucket
+evkey.json,beer-psi/scoop-bucket
+graboid.json,beer-psi/scoop-bucket
+windowstoolbox.json,beer-psi/scoop-bucket
+ib-jp.json,beer-psi/scoop-bucket
+itunes-np.json,beer-psi/scoop-bucket
+oneko.json,beer-psi/scoop-bucket
+sound-of-sorting.json,beer-psi/scoop-bucket
+absolutetouchex.json,beer-psi/scoop-bucket
+pingo.json,beer-psi/scoop-bucket
+slidershim.json,beer-psi/scoop-bucket
+imazing.json,beer-psi/scoop-bucket
+susplayer.json,beer-psi/scoop-bucket
+thewitchshouse-en.json,beer-psi/scoop-bucket
+plutil.json,beer-psi/scoop-bucket
+punzip.json,beer-psi/scoop-bucket
+onetrueawk.json,beer-psi/scoop-bucket
+majdata.json,beer-psi/scoop-bucket
windows-kill.json,HUMORCE/nuke
bminer-lite.json,HUMORCE/nuke
context-menu-launcher.json,HUMORCE/nuke
@@ -10488,11 +10531,42 @@ dogehouse.json,HUMORCE/nuke
xpdf-tools-LSP-arabic.json,HUMORCE/nuke
nebula.json,HUMORCE/nuke
fiddler-classic-addon-freehttp.json,HUMORCE/nuke
-instaloader.json,HUMORCE/nuke
hostsmgr.json,HUMORCE/nuke
ttfautohint.json,HUMORCE/nuke
zoxide_HUMORCE.json,HUMORCE/nuke
fiddler-classic-addon-anywhere.json,HUMORCE/nuke
+nak.json,littleli/Scoop-littleli
+tokio-console.json,littleli/Scoop-littleli
+haskell-breeze.json,littleli/Scoop-littleli
+agate.json,littleli/Scoop-littleli
+sqliteq.json,littleli/Scoop-littleli
+dooble.json,littleli/Scoop-littleli
+7800basic.json,littleli/Scoop-littleli
+gh-dash.json,littleli/Scoop-littleli
+tic80.json,littleli/Scoop-littleli
+hercules.json,littleli/Scoop-littleli
+slu.json,littleli/Scoop-littleli
+koka-lang.json,littleli/Scoop-littleli
+otter-browser.json,littleli/Scoop-littleli
+zecwallet-lite.json,littleli/Scoop-littleli
+mpd_littleli.json,littleli/Scoop-littleli
+harbour.json,littleli/Scoop-littleli
+csvdiff.json,littleli/Scoop-littleli
+zecwallet-cli.json,littleli/Scoop-littleli
+immudb.json,littleli/Scoop-littleli
+msix.json,littleli/Scoop-littleli
+zcashd.json,littleli/Scoop-littleli
+mpg123_littleli.json,littleli/Scoop-littleli
+immuclient.json,littleli/Scoop-littleli
+difftastic_littleli.json,littleli/Scoop-littleli
+immuadmin.json,littleli/Scoop-littleli
+gemget.json,littleli/Scoop-littleli
+wait-for-it.json,littleli/Scoop-littleli
+qmmp.json,littleli/Scoop-littleli
+xasm.json,littleli/Scoop-littleli
+netmet.json,littleli/Scoop-littleli
+netsurf.json,littleli/Scoop-littleli
+doom-remake4.json,littleli/Scoop-littleli
__template.json,mo-san/scoop-bucket
pupsqlite.json,mo-san/scoop-bucket
font-migu-2m.json,mo-san/scoop-bucket
@@ -10551,80 +10625,6 @@ xdoc2txt.json,mo-san/scoop-bucket
pico.json,mo-san/scoop-bucket
mousegesturel-ahk.json,mo-san/scoop-bucket
alt-ime-ahk.json,mo-san/scoop-bucket
-nak.json,littleli/Scoop-littleli
-tokio-console.json,littleli/Scoop-littleli
-haskell-breeze.json,littleli/Scoop-littleli
-agate.json,littleli/Scoop-littleli
-sqliteq.json,littleli/Scoop-littleli
-dooble.json,littleli/Scoop-littleli
-7800basic.json,littleli/Scoop-littleli
-gh-dash.json,littleli/Scoop-littleli
-tic80.json,littleli/Scoop-littleli
-hercules.json,littleli/Scoop-littleli
-slu.json,littleli/Scoop-littleli
-koka-lang.json,littleli/Scoop-littleli
-otter-browser.json,littleli/Scoop-littleli
-zecwallet-lite.json,littleli/Scoop-littleli
-mpd_littleli.json,littleli/Scoop-littleli
-harbour.json,littleli/Scoop-littleli
-csvdiff.json,littleli/Scoop-littleli
-zecwallet-cli.json,littleli/Scoop-littleli
-immudb.json,littleli/Scoop-littleli
-msix.json,littleli/Scoop-littleli
-zcashd.json,littleli/Scoop-littleli
-mpg123_littleli.json,littleli/Scoop-littleli
-immuclient.json,littleli/Scoop-littleli
-difftastic_littleli.json,littleli/Scoop-littleli
-immuadmin.json,littleli/Scoop-littleli
-gemget.json,littleli/Scoop-littleli
-wait-for-it.json,littleli/Scoop-littleli
-qmmp.json,littleli/Scoop-littleli
-xasm.json,littleli/Scoop-littleli
-netmet.json,littleli/Scoop-littleli
-netsurf.json,littleli/Scoop-littleli
-doom-remake4.json,littleli/Scoop-littleli
-cider-nightly.json,beer-psi/scoop-bucket
-brokenithm-kb.json,beer-psi/scoop-bucket
-beeper.json,beer-psi/scoop-bucket
-scoop-search_beer-psi.json,beer-psi/scoop-bucket
-apfs.json,beer-psi/scoop-bucket
-arrayv.json,beer-psi/scoop-bucket
-unxwb.json,beer-psi/scoop-bucket
-windowstoolbox-head.json,beer-psi/scoop-bucket
-adguardhome-beta.json,beer-psi/scoop-bucket
-jpeg-bin.json,beer-psi/scoop-bucket
-aidoku-cli.json,beer-psi/scoop-bucket
-absolutetouch.json,beer-psi/scoop-bucket
-itunes64-older-video-cards-np.json,beer-psi/scoop-bucket
-sl-h.json,beer-psi/scoop-bucket
-ntfs2btrfs_beer-psi.json,beer-psi/scoop-bucket
-peupdate.json,beer-psi/scoop-bucket
-unikey.json,beer-psi/scoop-bucket
-ib-en.json,beer-psi/scoop-bucket
-justasplanned.json,beer-psi/scoop-bucket
-thewitchshouse-jp.json,beer-psi/scoop-bucket
-sl.json,beer-psi/scoop-bucket
-rawcap-old.json,beer-psi/scoop-bucket
-libretta.json,beer-psi/scoop-bucket
-zalo.json,beer-psi/scoop-bucket
-xprop.json,beer-psi/scoop-bucket
-evkey.json,beer-psi/scoop-bucket
-graboid.json,beer-psi/scoop-bucket
-windowstoolbox.json,beer-psi/scoop-bucket
-ib-jp.json,beer-psi/scoop-bucket
-itunes-np.json,beer-psi/scoop-bucket
-oneko.json,beer-psi/scoop-bucket
-sound-of-sorting.json,beer-psi/scoop-bucket
-absolutetouchex.json,beer-psi/scoop-bucket
-pingo.json,beer-psi/scoop-bucket
-slidershim.json,beer-psi/scoop-bucket
-imazing.json,beer-psi/scoop-bucket
-susplayer.json,beer-psi/scoop-bucket
-thewitchshouse-en.json,beer-psi/scoop-bucket
-plutil.json,beer-psi/scoop-bucket
-punzip.json,beer-psi/scoop-bucket
-onetrueawk.json,beer-psi/scoop-bucket
-majdata.json,beer-psi/scoop-bucket
settings_BenjaminMichaelis.json,BenjaminMichaelis/Config
benjaminmichaelis.omp.json,BenjaminMichaelis/Config
GitIntegrationWithBeyondCompare.json,BenjaminMichaelis/Config
@@ -10751,6 +10751,37 @@ golin.json,Toddli468/Pentest-Scoop-Bucket
Pyke_Shiro.json,Toddli468/Pentest-Scoop-Bucket
SSRFmap.json,Toddli468/Pentest-Scoop-Bucket
lc.json,Toddli468/Pentest-Scoop-Bucket
+subrip.json,natecohen/scoop-av
+svt-hevc.json,natecohen/scoop-av
+avsinfotool.json,natecohen/scoop-av
+nvencc.json,natecohen/scoop-av
+dav1d.json,natecohen/scoop-av
+mis2x264.json,natecohen/scoop-av
+rav1e-weekly.json,natecohen/scoop-av
+eac3to-updated-libs.json,natecohen/scoop-av
+avsmeter.json,natecohen/scoop-av
+tiff.json,natecohen/scoop-av
+av1an.json,natecohen/scoop-av
+hlg-tools.json,natecohen/scoop-av
+fdkaac.json,natecohen/scoop-av
+hdr10plus_tool.json,natecohen/scoop-av
+svt-vp9.json,natecohen/scoop-av
+virtualdub2.json,natecohen/scoop-av
+pgcdemux.json,natecohen/scoop-av
+av1an-nightly.json,natecohen/scoop-av
+vpx.json,natecohen/scoop-av
+dovi_tool.json,natecohen/scoop-av
+avs2yuv.json,natecohen/scoop-av
+chaptereditor.json,natecohen/scoop-av
+delaycut.json,natecohen/scoop-av
+ogg.json,natecohen/scoop-av
+tsmuxer.json,natecohen/scoop-av
+aom.json,natecohen/scoop-av
+rav1e.json,natecohen/scoop-av
+svt-av1.json,natecohen/scoop-av
+flac-frontend.json,natecohen/scoop-av
+mkvcleaver.json,natecohen/scoop-av
+pinga.json,natecohen/scoop-av
twmd-cli.json,Small-Ku/turbo-bucket
better-genshin-impact.json,Small-Ku/turbo-bucket
zluda.json,Small-Ku/turbo-bucket
@@ -11022,7 +11053,6 @@ cloudflare-warp-np.json,FlawlessCasual17/MyScoop
khinsider-downloader.json,FlawlessCasual17/MyScoop
monitorian.json,FlawlessCasual17/MyScoop
poweriso-np.json,FlawlessCasual17/MyScoop
-nvencc.json,FlawlessCasual17/MyScoop
imagefinder.json,FlawlessCasual17/MyScoop
creaminstaller.json,FlawlessCasual17/MyScoop
fluent-metro.json,FlawlessCasual17/MyScoop
@@ -11051,7 +11081,6 @@ icopy.json,FlawlessCasual17/MyScoop
saucedacity.json,FlawlessCasual17/MyScoop
audioplaybackconnector.json,FlawlessCasual17/MyScoop
fxsound-np.json,FlawlessCasual17/MyScoop
-virtualdub2.json,FlawlessCasual17/MyScoop
ut-video-codec.json,FlawlessCasual17/MyScoop
generate-domains-blocklist.json,FlawlessCasual17/MyScoop
event-log-explorer.json,FlawlessCasual17/MyScoop
@@ -11258,35 +11287,6 @@ openvr-input-emulator.json,babo4d/scoop-xrtools
openra-sole-survivor.json,babo4d/scoop-xrtools
opencomposite.json,babo4d/scoop-xrtools
magicchatbox.json,babo4d/scoop-xrtools
-subrip.json,natecohen/scoop-av
-svt-hevc.json,natecohen/scoop-av
-avsinfotool.json,natecohen/scoop-av
-dav1d.json,natecohen/scoop-av
-mis2x264.json,natecohen/scoop-av
-rav1e-weekly.json,natecohen/scoop-av
-eac3to-updated-libs.json,natecohen/scoop-av
-avsmeter.json,natecohen/scoop-av
-tiff.json,natecohen/scoop-av
-av1an.json,natecohen/scoop-av
-hlg-tools.json,natecohen/scoop-av
-fdkaac.json,natecohen/scoop-av
-hdr10plus_tool.json,natecohen/scoop-av
-svt-vp9.json,natecohen/scoop-av
-pgcdemux.json,natecohen/scoop-av
-av1an-nightly.json,natecohen/scoop-av
-vpx.json,natecohen/scoop-av
-dovi_tool.json,natecohen/scoop-av
-avs2yuv.json,natecohen/scoop-av
-chaptereditor.json,natecohen/scoop-av
-delaycut.json,natecohen/scoop-av
-ogg.json,natecohen/scoop-av
-tsmuxer.json,natecohen/scoop-av
-aom.json,natecohen/scoop-av
-rav1e.json,natecohen/scoop-av
-svt-av1.json,natecohen/scoop-av
-flac-frontend.json,natecohen/scoop-av
-mkvcleaver.json,natecohen/scoop-av
-pinga.json,natecohen/scoop-av
hunterpie.json,Deide/deide-bucket
rahasher.json,Deide/deide-bucket
opensoldat.json,Deide/deide-bucket
diff --git a/bucket.config b/bucket.config
index ff55c5328dd..675b74e91d4 100644
--- a/bucket.config
+++ b/bucket.config
@@ -54,8 +54,8 @@ NyaMisty/scoop_bucket_misty
noql-net/scoop
ygguorun/scoop-bucket
Velgus/Scoop-Portapps
-iquiw/scoop-bucket
aliesbelik/poldi
+iquiw/scoop-bucket
AStupidBear/scoop-bear
batkiz/backit
ChungZH/peach
@@ -68,27 +68,28 @@ abgox/abgo_bucket
aoisummer/scoop-bucket
SayCV/scoop-cvp
starise/Scoop-Gaming
-starise/Scoop-Confetti
seumsc/scoop-seu
Weidows-projects/scoop-3rd
+starise/Scoop-Confetti
TianXiaTech/scoop-txt
rivy/scoop-bucket
Darkatse/Scoop-Darkatse
kengwang/scoop-ctftools-bucket
AkariiinMKII/Scoop4kariiin
alextwothousand/scoop-bucket
+beer-psi/scoop-bucket
HUMORCE/nuke
-mo-san/scoop-bucket
littleli/Scoop-littleli
-beer-psi/scoop-bucket
+cmontage/scoopbucket-third
+mo-san/scoop-bucket
BenjaminMichaelis/Config
Toddli468/Pentest-Scoop-Bucket
+natecohen/scoop-av
Small-Ku/turbo-bucket
ShuguangSun/sgs-scoop-bucket
WinApps-share/WinApps-bucket
FlawlessCasual17/MyScoop
babo4d/scoop-xrtools
-natecohen/scoop-av
Deide/deide-bucket
The-Simples/scoop-minecraft
KnotUntied/scoop-fonts
diff --git a/latest.update b/latest.update
index d2e58049648..e769b3d256f 100644
--- a/latest.update
+++ b/latest.update
@@ -1 +1 @@
-最近更新时间:Wed Nov 6 04:46:55 UTC 2024
+最近更新时间:Thu Nov 7 04:46:05 UTC 2024
diff --git a/scripts/android-sdk-link.ps1 b/scripts/android-sdk-link.ps1
new file mode 100644
index 00000000000..ef06afb0ef1
--- /dev/null
+++ b/scripts/android-sdk-link.ps1
@@ -0,0 +1,12 @@
+. "$bucketsdir\$bucket\setup.ps1"
+
+Get-ChildItem -Path "$dir\$component" | ForEach-Object {
+ $source = "$target_dir\$($_.Name)"
+
+ if ($_.PSIsContainer) {
+ New-Item -Path $source -ItemType Junction -Value $_ -Force
+ attrib +r $source /l
+ } else {
+ New-Item -Path $source -ItemType HardLink -Value $_ -Force
+ }
+}
diff --git a/scripts/android-sdk-setup.ps1 b/scripts/android-sdk-setup.ps1
new file mode 100644
index 00000000000..8c5059f03cb
--- /dev/null
+++ b/scripts/android-sdk-setup.ps1
@@ -0,0 +1,7 @@
+$component = ([string]$app).Substring(12)
+$target_dir = "$(persistdir android-sdk-base $global)\$component"
+
+Get-ChildItem "$target_dir\*" | ForEach-Object {
+ attrib -r $_.FullName /l
+ Remove-Item -Path $_.FullName -Recurse -Force
+}
diff --git a/scripts/build.mjs b/scripts/build.mjs
new file mode 100644
index 00000000000..2c6ea8a706c
--- /dev/null
+++ b/scripts/build.mjs
@@ -0,0 +1,80 @@
+// Dependencies
+import { asyncForEach, getHash } from './shared.mjs';
+import { renderFile } from 'ejs';
+import { stable, prerelease } from './versions.mjs';
+import { writeFile } from 'fs';
+import logSymbols from 'log-symbols';
+import isCI from 'is-ci';
+import MFH from 'make-fetch-happen';
+import path from 'path';
+
+const fetch = MFH.defaults({
+ cacheManager: '.cache'
+});
+
+const __dirname = path.resolve(path.dirname(''));
+let template = (version, hashes, outFile = null) => {
+ const data = {
+ version: version,
+ majorVersion: version[0],
+ hashes: hashes
+ };
+
+ renderFile(path.join(__dirname, 'scripts', '/manifest.ejs'), data, function(err, contents) {
+ if (err) {
+ console.error(logSymbols.error, err);
+ return;
+ }
+
+ outFile = (outFile !== null) ? outFile : `nsis-${version}.json`;
+ outFile = path.join(process.cwd(), 'bucket', outFile);
+ contents = JSON.stringify(JSON.parse(contents), null, 4);
+
+ writeFile(outFile, contents, (err) => {
+ if (err) throw err;
+ console.log(logSymbols.success, `Saved: ${outFile}`);
+ });
+ });
+};
+
+const createManifest = async (version, outFile = null) => {
+ const major = version[0];
+ const directory = (/\d(a|b|rc)\d*$/.test(version) === true) ? `NSIS%20${major}%20Pre-release` : `NSIS%20${major}`;
+ const url = isCI
+ ? `https://downloads.sourceforge.net/project/nsis/${directory}/${version}/nsis-${version}.zip`
+ : `https://netcologne.dl.sourceforge.net/project/nsis/${directory}/${version}/nsis-${version}.zip`;
+
+ let response;
+
+ try {
+ response = await fetch(url);
+ } catch (error) {
+ if (error.statusMessage) {
+ if (error.statusMessage === 'Too Many Requests') {
+ return console.warn(logSymbols.warning, `${error.statusMessage}: nsis-${version}.zip`);
+ }
+ return console.error(logSymbols.error, `${error.statusMessage}: nsis-${version}.zip`);
+ } else if (error.code === 'ENOENT') {
+ return console.log('Skipping Test: Manifest Not Found');
+ }
+ console.error(logSymbols.error, error);
+ }
+
+ const hashes = await getHash(await response.arrayBuffer());
+ template(version, hashes, outFile);
+};
+
+const allVersions = [...stable.v2, ...prerelease.v3, ...stable.v3];
+
+// All versions
+asyncForEach(allVersions, async (version) => {
+ await createManifest(version);
+});
+
+(async () => {
+ const v2Versions = stable.v2;
+ const v3Versions = stable.v3;
+
+ await createManifest(v2Versions[v2Versions.length - 1], 'nsis-2.json');
+ await createManifest(v3Versions[v3Versions.length - 1], 'nsis.json');
+})();
diff --git a/scripts/bypass/start-bypass.ps1 b/scripts/bypass/start-bypass.ps1
new file mode 100644
index 00000000000..d6deeb5403e
--- /dev/null
+++ b/scripts/bypass/start-bypass.ps1
@@ -0,0 +1 @@
+sudo Start-Process "$(scoop prefix bypass)\Bypass.exe" -WorkingDirectory "$(scoop prefix bypass)" -WindowStyle Hidden
diff --git a/scripts/chrome/Chrome.exe b/scripts/chrome/Chrome.exe
new file mode 100644
index 00000000000..974455cd0bb
Binary files /dev/null and b/scripts/chrome/Chrome.exe differ
diff --git "a/scripts/chrome/\346\270\205\347\220\206.bat" "b/scripts/chrome/\346\270\205\347\220\206.bat"
new file mode 100644
index 00000000000..97590001706
--- /dev/null
+++ "b/scripts/chrome/\346\270\205\347\220\206.bat"
@@ -0,0 +1,149 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+taskkill /f /im chrome* /t >NUL 2>NUL
+taskkill /f /im TabPlus.exe >NUL 2>NUL
+taskkill /f /im MyChrome.exe >NUL 2>NUL
+
+rd/s/q "%ProgramData%\Google\Chrome"2>NUL
+rd/s/q "%LocalAppData%\Google\Chrome"2>NUL
+del/q "%Public%\Desktop\Chrome.lnk" >NUL 2>NUL
+del/q "%UserProfile%\Desktop\Chrome.lnk" >NUL 2>NUL
+rd/s/q "%AppData%\Microsoft\Windows\Start Menu\Programs\Google Chrome"2>NUL
+rd/s/q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\Google Chrome"2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Chrome" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Chrome" /f /reg:32 >NUL 2>NUL
+
+reg delete "HKCU\SOFTWARE\Google\Update" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Google\Chrome" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Google\Update" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Google\Chrome" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Google\Update" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Google\Chrome" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\MediaPlayer\ShimInclusionList\chrome.exe" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Chrome.exe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{4EB61BAC-A3B6-4760-9581-655041EF4D69}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{708860E0-F641-4611-8895-7D867DD3675B}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{9465B4B4-5216-4042-9A2C-754D3BCDC410}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\GoogleUpdate.exe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\ChromeHTML" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{708860E0-F641-4611-8895-7D867DD3675B}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{9AAA1336-C131-4B16-9A86-7BAF3B3B76F8}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{9D6AA569-9F30-41AD-885A-346685C74928}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{A2C6CB58-C076-425C-ACB7-6D19D64428CD}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{E9957D25-7EB7-42C8-AD32-06AF7776A788}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.CoCreateAsync" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.CoCreateAsync.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.CoreClass" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.CoreClass.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.CoreMachineClass" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.CoreMachineClass.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.CredentialDialogMachine" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.CredentialDialogMachine.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.OnDemandCOMClassMachine" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.OnDemandCOMClassMachine.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.OnDemandCOMClassMachineFallback" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.OnDemandCOMClassMachineFallback.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.OnDemandCOMClassSvc" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.OnDemandCOMClassSvc.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.PolicyStatus" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.PolicyStatus.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.ProcessLauncher" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.ProcessLauncher.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.Update3COMClassService" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.Update3COMClassService.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.Update3WebMachine" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.Update3WebMachine.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.Update3WebMachineFallback" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.Update3WebMachineFallback.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.Update3WebSvc" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\GoogleUpdate.Update3WebSvc.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Installer\Features\A01655856B165233AA6AED6D9BC0FED8" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Installer\Products\A01655856B165233AA6AED6D9BC0FED8" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Installer\UpgradeCodes\96FDFD1C54952F233AE5EE499CC9C74F" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{084D78A8-B084-4E14-A629-A2C419B0E3D9}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{0CD01D1E-4A1C-489D-93B9-9B6672877C57}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{128C2DA6-2BC0-44C0-B3F6-4EC22E647964}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{18D0F672-18B4-48E6-AD36-6E6BF01DBBC4}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{19692F10-ADD2-4EFF-BE54-E61C62E40D13}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{1C642CED-CA3B-4013-A9DF-CA6CE5FF6503}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{247954F9-9EDC-4E68-8CC3-150C2B89EADF}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{2D363682-561D-4C3A-81C6-F2F82107562A}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{2E629606-312A-482F-9B12-2C4ABF6F0B6D}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{31AC3F11-E5EA-4A85-8A3D-8E095A39C27B}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{3D05F64F-71E3-48A5-BF6B-83315BC8AE1F}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{463ABECF-410D-407F-8AF5-0DF35A005CC8}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{494B20CF-282E-4BDD-9F5D-B70CB09D351E}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{49D7563B-2DDB-4831-88C8-768A53833837}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{4DE778FE-F195-4EE3-9DAB-FE446C239221}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{4E223325-C16B-4EEB-AEDC-19AA99A237FA}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{5B25A8DC-1780-4178-A629-6BE8B8DEFAA2}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{6DB17455-4E85-46E7-9D23-E555E4B005AF}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{76F7B787-A67C-4C73-82C7-31F5E3AABC5C}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{8476CE12-AE1F-4198-805C-BA0F9B783F57}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{909489C2-85A6-4322-AA56-D25278649D67}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{B3A47570-0A85-4AEA-8270-529D47899603}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{BCDCB538-01C0-46D1-A6A7-52F4D021C272}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{D106AB5F-A70E-400E-A21B-96208C1D8DBB}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{DAB1D343-1B2A-47F9-B445-93DC50704BFE}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{DCAB8386-4F03-4DBD-A366-D90BC9F68DE6}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{DD42475D-6D46-496A-924E-BD5630B4CBBA}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{F63F6F8B-ACD5-413C-A44B-0409136D26CB}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{FE908CDD-22BB-472A-9870-1A0390E42F36}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{463ABECF-410D-407F-8AF5-0DF35A005CC8}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{25461599-633D-42B1-84FB-7CD68D026E53}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{4EB61BAC-A3B6-4760-9581-655041EF4D69}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{521FDB42-7130-4806-822A-FC5163FAD983}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{534F5323-3569-4F42-919D-1E1CF93E5BF6}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{598FE0E5-E02D-465D-9A9D-37974A28FD42}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{6F8BD55B-E83D-4A47-85BE-81FFA8057A69}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{7DE94008-8AFD-4C70-9728-C6FBFFF6A73E}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{8A1D4361-2C08-4700-A351-3EAA9CBFF5E4}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{9465B4B4-5216-4042-9A2C-754D3BCDC410}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{9AAA1336-C131-4B16-9A86-7BAF3B3B76F8}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{9B2340A0-4068-43D6-B404-32E27217859D}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{9D6AA569-9F30-41AD-885A-346685C74928}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{ABC01078-F197-4B0B-ADBC-CFE684B39C82}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{B3D28DBD-0DFA-40E4-8071-520767BADC7E}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{E225E692-4B47-4777-9BED-4FD7FE257F0E}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{E9957D25-7EB7-42C8-AD32-06AF7776A788}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{084D78A8-B084-4E14-A629-A2C419B0E3D9}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{0CD01D1E-4A1C-489D-93B9-9B6672877C57}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{128C2DA6-2BC0-44C0-B3F6-4EC22E647964}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{18D0F672-18B4-48E6-AD36-6E6BF01DBBC4}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{19692F10-ADD2-4EFF-BE54-E61C62E40D13}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{1C642CED-CA3B-4013-A9DF-CA6CE5FF6503}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{247954F9-9EDC-4E68-8CC3-150C2B89EADF}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{2D363682-561D-4C3A-81C6-F2F82107562A}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{2E629606-312A-482F-9B12-2C4ABF6F0B6D}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{31AC3F11-E5EA-4A85-8A3D-8E095A39C27B}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{3D05F64F-71E3-48A5-BF6B-83315BC8AE1F}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{494B20CF-282E-4BDD-9F5D-B70CB09D351E}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{49D7563B-2DDB-4831-88C8-768A53833837}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{4DE778FE-F195-4EE3-9DAB-FE446C239221}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{4E223325-C16B-4EEB-AEDC-19AA99A237FA}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{5B25A8DC-1780-4178-A629-6BE8B8DEFAA2}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{6DB17455-4E85-46E7-9D23-E555E4B005AF}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{76F7B787-A67C-4C73-82C7-31F5E3AABC5C}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{8476CE12-AE1F-4198-805C-BA0F9B783F57}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{909489C2-85A6-4322-AA56-D25278649D67}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{B3A47570-0A85-4AEA-8270-529D47899603}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{BCDCB538-01C0-46D1-A6A7-52F4D021C272}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{D106AB5F-A70E-400E-A21B-96208C1D8DBB}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{DAB1D343-1B2A-47F9-B445-93DC50704BFE}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{DCAB8386-4F03-4DBD-A366-D90BC9F68DE6}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{DD42475D-6D46-496A-924E-BD5630B4CBBA}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{F63F6F8B-ACD5-413C-A44B-0409136D26CB}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{FE908CDD-22BB-472A-9870-1A0390E42F36}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Clients\StartMenuInternet\Google Chrome" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\{8A69D345-D564-463c-AFF1-A69D9E530F96}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\MediaPlayer\ShimInclusionList\chrome.exe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{5855610A-61B6-3325-AAA6-DED6B90CEF8D}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\GoogleUpdate.exe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\RegisteredApplications" /f /v "Google Chrome" >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\Chrome" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\GoogleChromeElevationService" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\gupdate" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\gupdatem" /f >NUL 2>NUL
+
+CLS
+ECHO.&ECHO 423Down.com
diff --git "a/scripts/chrome/\350\257\264\346\230\216.txt" "b/scripts/chrome/\350\257\264\346\230\216.txt"
new file mode 100644
index 00000000000..675b03b6e94
--- /dev/null
+++ "b/scripts/chrome/\350\257\264\346\230\216.txt"
@@ -0,0 +1,27 @@
+------------------------------------------------------------
+本作品仅供交流体验使用,请在下载后24小时内删除。
+请勿用于商业用途,禁止任何形式二次打包或转载。
+------------------------------------------------------------
+由于原版Chrome不是太好用,所以我做了一个增强版,跟随稳定版更新。
+
+下载地址:https://shuax.com/project/chrome/
+
+增强功能:
+ 双击关闭标签页
+ 保留最后标签页(防止关闭最后一个标签页时关闭浏览器,点X不行)
+ 鼠标悬停标签栏滚动
+ 按住右键时滚轮滚动标签栏
+ 移除flash锁区,移除2020年过期警告(是否加载还是要你自己处理)
+ 移除开发者模式警告
+ 便携设计,程序放在App目录,数据放在Data目录不兼容原版数据,可以重装系统换电脑不丢数据)
+ 移除更新错误警告(因为是绿色版没有自动更新功能)
+
+解压后运行App/chrome.exe即可。
+由于是便携版,不会和其它版本冲突,不想用了可以直接删掉整个文件夹。
+升级只需要替换App文件夹即可。(推荐先把老版本App重命名为App2,然后放入新版App,运行测试无误后可以安全删除App2老版本,如果有问题也方便还原。)
+
+增强功能通过App/chrome++.dll实现,并修改了chrome.exe主程序,有可能会报毒。
+
+鼠标手势推荐使用全局手势软件,比如MouseInc。
+
+软件发现了问题欢迎加QQ群:703641632进行反馈。
diff --git a/scripts/cloudmusic/uninstall.bat b/scripts/cloudmusic/uninstall.bat
new file mode 100644
index 00000000000..00088891395
--- /dev/null
+++ b/scripts/cloudmusic/uninstall.bat
@@ -0,0 +1,56 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im cloudmusic* /t >NUL 2>NUL
+
+ver|findstr "\<6\.[0-9]\.[0-9][0-9]*\> \<10\.[0-9]\.[0-9][0-9]*\>" >NUL&&(
+rd/s/q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\网易云音乐"2>NUL
+rd/s/q "%AppData%\Microsoft\Windows\Start Menu\Programs\网易云音乐"2>NUL
+del /q "%UserProfile%\Desktop\网易云音乐.lnk" >NUL 2>NUL
+del /q "%Public%\Desktop\网易云音乐.lnk" >NUL 2>NUL
+rd/s/q "%ProgramData%\NetEaseWinDA2"2>NUL
+rd/s/q "%LocalAppData%\Netease"2>NUL)
+
+ver|findstr "5\.[0-9]\.[0-9][0-9]*" >NUL&&(
+rd/s/q "%UserProfile%\Local Settings\Application Data\Netease"2>NUL
+rd/s/q "%AllUsersProfile%\Application Data\NetEaseWinDA2"2>NUL
+rd/s/q "%AllUsersProfile%\「开始」菜单\程序\网易云音乐" 2>NUL
+rd/s/q "%UserProfile%\「开始」菜单\程序\网易云音乐" 2>NUL
+del /q "%AllUsersProfile%\桌面\网易云音乐.lnk" >NUL 2>NUL
+del /q "%UserProfile%\桌面\网易云音乐.lnk" >NUL 2>NUL
+)
+
+reg delete "HKLM\SOFTWARE\Netease" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Netease" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\cloudmusic" /f >NUL 2>NUL
+reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /f /v "cloudmusic" >NUL 2>NUL
+reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /f /v "cloudmusic" >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\cloudmusic.exe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CloudMusic" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CloudMusic" /f /reg:32 >NUL 2>NUL
+
+reg delete "HKLM\SOFTWARE\Classes\cloudmusic.aac" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\cloudmusic.ape" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\cloudmusic.cda" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\cloudmusic.cue" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\cloudmusic.flac" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\cloudmusic.m4a" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\cloudmusic.mp3" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\cloudmusic.ncm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\cloudmusic.ogg" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\cloudmusic.wav" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\cloudmusic.wma" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\orpheus" /f >NUL 2>NUL
+
+CLS
+ECHO.&ECHO 423down.com
+
+IF EXIST "Netease" (
+ FOR /F "delims=*" %%a IN ('dir /a/b *.*^|findstr /v /i "Netease$"') DO (
+ RD /S/Q "%%a" 2>NUL & DEL /F/Q "%%a" >NUL 2>NUL)
+ ) ELSE (
+ PUSHD .. & RD /S/Q "%~DP0" >NUL 2>NUL)
+
+CLS
+ECHO.&ECHO 完成
+ECHO.&ECHO Modded by www.423down.com
diff --git a/scripts/create-font-manifest.ps1 b/scripts/create-font-manifest.ps1
new file mode 100644
index 00000000000..644cd4bee1a
--- /dev/null
+++ b/scripts/create-font-manifest.ps1
@@ -0,0 +1,5 @@
+$name = $args[0]
+if ($args.Count -eq 2) {
+ Write-Host 'Please use only one argument'; Break
+}
+Copy-Item "$PSScriptRoot\..\font-manifest-template.json" "$PSScriptRoot\..\bucket\$name.json" -Force
diff --git a/scripts/create-manifest.ps1 b/scripts/create-manifest.ps1
new file mode 100644
index 00000000000..7461993a870
--- /dev/null
+++ b/scripts/create-manifest.ps1
@@ -0,0 +1,5 @@
+$name = $args[0]
+if ($args.Count -eq 2) {
+ Write-Host 'Please use only one argument'; Break
+}
+Copy-Item "$PSScriptRoot\..\template.json" "$PSScriptRoot\..\bucket\$name.json" -Force
diff --git a/scripts/du/du.ps1 b/scripts/du/du.ps1
new file mode 100644
index 00000000000..56597ee4f7d
--- /dev/null
+++ b/scripts/du/du.ps1
@@ -0,0 +1,16 @@
+param(
+ [Parameter(Mandatory)]
+ $Path,
+ [Parameter(Mandatory=$false)]
+ $Depth = 20
+ )
+
+$colItems = (Get-ChildItem $Path | Measure-Object -property length -sum)
+"{0} -- {1:N2} MB" -f $Path, ($colItems.sum / 1MB)
+
+$colItems = (Get-ChildItem $Path -recurse -Depth $Depth | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object)
+foreach ($i in $colItems)
+{
+ $subFolderItems = (Get-ChildItem $i.FullName | Measure-Object -property length -sum)
+ "{0} -- {1:N2} MB" -f $i.FullName, ($subFolderItems.sum / 1MB)
+}
\ No newline at end of file
diff --git a/scripts/eyeleo/langpack.zhcn.xml b/scripts/eyeleo/langpack.zhcn.xml
new file mode 100644
index 00000000000..c77e241cd86
--- /dev/null
+++ b/scripts/eyeleo/langpack.zhcn.xml
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/scripts/fiddle-everywhere/README-321.md b/scripts/fiddle-everywhere/README-321.md
new file mode 100644
index 00000000000..0abb3cadf1e
--- /dev/null
+++ b/scripts/fiddle-everywhere/README-321.md
@@ -0,0 +1,8 @@
+## Fiddle Everywhere 3.2.1 Crack
+
+- `FiddlerBackendSDK.dll`: `resources\app\out\WebServer`
+- `main.304c864f4d0af6e9.js` / `main.157031b9c4f17398.js`: `resources\app\out\WebServer\ClientApp\dist`
+
+> 禁用更新
+>
+> 修改 `resources/app/out/main.js`,搜索 `e.settingsService.get().autoUpdateSettings.disabled` 替换为 `true||e.settingsService.get().autoUpdateSettings.disabled`.
diff --git a/scripts/fiddle-everywhere/README-330.md b/scripts/fiddle-everywhere/README-330.md
new file mode 100644
index 00000000000..dad108f909f
--- /dev/null
+++ b/scripts/fiddle-everywhere/README-330.md
@@ -0,0 +1,5 @@
+## Fiddle Everywhere 3.3.0 Crack
+
+- `main.js`: `resources\app\out`
+- `Fiddler.WebUi.dll` / `FiddlerBackendSDK.dll`: `resources\app\out\WebServer`
+- `main.8068c81c92a7126e.js` / `main.e5bf1b91c3997c53.js`: `resources\app\out\WebServer\ClientApp\dist`
diff --git a/scripts/git/install-context.reg b/scripts/git/install-context.reg
new file mode 100644
index 00000000000..0ea65b9a44b
--- /dev/null
+++ b/scripts/git/install-context.reg
@@ -0,0 +1,51 @@
+Windows Registry Editor Version 5.00
+
+; -----------------------------------------------------------------------------
+; context menu entry 'Git GUI Here'
+; -----------------------------------------------------------------------------
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\background\shell\git_gui]
+@="Git &GUI Here"
+"Icon"="$git_root\\cmd\\git-gui.exe"
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\background\shell\git_gui\command]
+@="\"$git_root\\cmd\\git-gui.exe\" \"--working-dir\" \"%v.\""
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\shell\git_gui]
+@="Git &GUI Here"
+"Icon"="$git_root\\cmd\\git-gui.exe"
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\shell\git_gui\command]
+@="\"$git_root\\cmd\\git-gui.exe\" \"--working-dir\" \"%1\""
+
+[HKEY_CURRENT_USER\Software\Classes\LibraryFolder\background\shell\git_gui]
+@="Git &GUI Here"
+"Icon"="$git_root\\cmd\\git-gui.exe"
+
+[HKEY_CURRENT_USER\Software\Classes\LibraryFolder\background\shell\git_gui\command]
+@="\"$git_root\\cmd\\git-gui.exe\" \"--working-dir\" \"%v.\""
+
+; -----------------------------------------------------------------------------
+; context menu entry 'Git Bash Here'
+; -----------------------------------------------------------------------------
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\background\shell\git_shell]
+@="Git Ba&sh Here"
+"Icon"="$git_root\\git-bash.exe"
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\background\shell\git_shell\command]
+@="\"$git_root\\git-bash.exe\" \"--cd=%v.\""
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\shell\git_shell]
+@="Git Ba&sh Here"
+"Icon"="$git_root\\git-bash.exe"
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\shell\git_shell\command]
+@="\"$git_root\\git-bash.exe\" \"--cd=%1\""
+
+[HKEY_CURRENT_USER\Software\Classes\LibraryFolder\background\shell\git_shell]
+@="Git Ba&sh Here"
+"Icon"="$git_root\\git-bash.exe"
+
+[HKEY_CURRENT_USER\Software\Classes\LibraryFolder\background\shell\git_shell\command]
+@="\"$git_root\\git-bash.exe\" \"--cd=%v.\""
diff --git a/scripts/git/install-file-associations.reg b/scripts/git/install-file-associations.reg
new file mode 100644
index 00000000000..5d3c665064e
--- /dev/null
+++ b/scripts/git/install-file-associations.reg
@@ -0,0 +1,39 @@
+Windows Registry Editor Version 5.00
+
+; -----------------------------------------------------------------------------
+; associate .git* configuration files with the default text editor
+; -----------------------------------------------------------------------------
+
+[HKEY_CURRENT_USER\Software\Classes\.gitattributes]
+@="txtfile"
+"Content Type"="text/plain"
+"PerceivedType"="text"
+
+[HKEY_CURRENT_USER\Software\Classes\.gitignore]
+@="txtfile"
+"Content Type"="text/plain"
+"PerceivedType"="text"
+
+[HKEY_CURRENT_USER\Software\Classes\.gitmodules]
+@="txtfile"
+"Content Type"="text/plain"
+"PerceivedType"="text"
+
+; -----------------------------------------------------------------------------
+; associate '.sh' files to be run with git bash
+; -----------------------------------------------------------------------------
+
+[HKEY_CURRENT_USER\Software\Classes\.sh]
+@="sh_auto_file"
+
+[HKEY_CURRENT_USER\Software\Classes\sh_auto_file]
+@="Shell Script"
+
+[HKEY_CURRENT_USER\Software\Classes\sh_auto_file\DefaultIcon]
+@="%SystemRoot%\\System32\\shell32.dll,-153"
+
+[HKEY_CURRENT_USER\Software\Classes\sh_auto_file\shell\open\command]
+@="\"$git_root\\git-bash.exe\" --no-cd \"%L\" %*"
+
+[HKEY_CURRENT_USER\Software\Classes\sh_auto_file\ShellEx\DropHandler]
+@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"
diff --git a/scripts/git/uninstall-context.reg b/scripts/git/uninstall-context.reg
new file mode 100644
index 00000000000..5b16023125e
--- /dev/null
+++ b/scripts/git/uninstall-context.reg
@@ -0,0 +1,23 @@
+Windows Registry Editor Version 5.00
+
+; -----------------------------------------------------------------------------
+; undo: context menu entry 'Git GUI Here'
+; -----------------------------------------------------------------------------
+
+[-HKEY_CURRENT_USER\Software\Classes\Directory\background\shell\git_gui]
+[-HKEY_CURRENT_USER\Software\Classes\Directory\background\shell\git_gui\command]
+[-HKEY_CURRENT_USER\Software\Classes\Directory\shell\git_gui]
+[-HKEY_CURRENT_USER\Software\Classes\Directory\shell\git_gui\command]
+[-HKEY_CURRENT_USER\Software\Classes\LibraryFolder\background\shell\git_gui]
+[-HKEY_CURRENT_USER\Software\Classes\LibraryFolder\background\shell\git_gui\command]
+
+; -----------------------------------------------------------------------------
+; undo: context menu entry 'Git Bash Here'
+; -----------------------------------------------------------------------------
+
+[-HKEY_CURRENT_USER\Software\Classes\Directory\background\shell\git_shell]
+[-HKEY_CURRENT_USER\Software\Classes\Directory\background\shell\git_shell\command]
+[-HKEY_CURRENT_USER\Software\Classes\Directory\shell\git_shell]
+[-HKEY_CURRENT_USER\Software\Classes\Directory\shell\git_shell\command]
+[-HKEY_CURRENT_USER\Software\Classes\LibraryFolder\background\shell\git_shell]
+[-HKEY_CURRENT_USER\Software\Classes\LibraryFolder\background\shell\git_shell\command]
diff --git a/scripts/git/uninstall-file-associations.reg b/scripts/git/uninstall-file-associations.reg
new file mode 100644
index 00000000000..18799f931d7
--- /dev/null
+++ b/scripts/git/uninstall-file-associations.reg
@@ -0,0 +1,19 @@
+Windows Registry Editor Version 5.00
+
+; -----------------------------------------------------------------------------
+; undo: associate .git* configuration files with the default text editor
+; -----------------------------------------------------------------------------
+
+[-HKEY_CURRENT_USER\Software\Classes\.gitattributes]
+[-HKEY_CURRENT_USER\Software\Classes\.gitignore]
+[-HKEY_CURRENT_USER\Software\Classes\.gitmodules]
+
+; -----------------------------------------------------------------------------
+; undo: associate '.sh' files to be run with git bash
+; -----------------------------------------------------------------------------
+
+[-HKEY_CURRENT_USER\Software\Classes\.sh]
+[-HKEY_CURRENT_USER\Software\Classes\sh_auto_file]
+[-HKEY_CURRENT_USER\Software\Classes\sh_auto_file\DefaultIcon]
+[-HKEY_CURRENT_USER\Software\Classes\sh_auto_file\shell\open\command]
+[-HKEY_CURRENT_USER\Software\Classes\sh_auto_file\ShellEx\DropHandler]
diff --git a/scripts/haoziprename/install.bat b/scripts/haoziprename/install.bat
new file mode 100644
index 00000000000..13453cf6181
--- /dev/null
+++ b/scripts/haoziprename/install.bat
@@ -0,0 +1,19 @@
+@ECHO OFF&PUSHD %~DP0 &TITLE 绿化
+
+>NUL 2>&1 REG.exe query "HKU\S-1-5-19" || (
+ ECHO SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\GetAdmin.vbs"
+ ECHO UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%TEMP%\GetAdmin.vbs"
+ "%TEMP%\GetAdmin.vbs"
+ DEL /f /q "%TEMP%\GetAdmin.vbs" 2>NUL
+ Exit /b
+)
+
+:Add
+md "%APPDATA%\HaoZip">NUL 2>NUL
+copy Config\HaoZip.hzc "%APPDATA%\HaoZip">NUL 2>NUL
+copy Config\HaoZip.hzv "%APPDATA%\HaoZip">NUL 2>NUL
+copy Config\HaoZip.stat "%APPDATA%\HaoZip">NUL 2>NUL
+echo.>"%APPDATA%\HaoZip\update" 2>NUL
+attrib +r "%APPDATA%\HaoZip\update">NUL 2>NUL
+regsvr32 /s HaoZipExt.dll
+exit
diff --git a/scripts/haoziprename/uninstall.bat b/scripts/haoziprename/uninstall.bat
new file mode 100644
index 00000000000..4ac53fa8c1e
--- /dev/null
+++ b/scripts/haoziprename/uninstall.bat
@@ -0,0 +1,17 @@
+@ECHO OFF&PUSHD %~DP0 &TITLE 卸载
+
+>NUL 2>&1 REG.exe query "HKU\S-1-5-19" || (
+ ECHO SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\GetAdmin.vbs"
+ ECHO UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%TEMP%\GetAdmin.vbs"
+ "%TEMP%\GetAdmin.vbs"
+ DEL /f /q "%TEMP%\GetAdmin.vbs" 2>NUL
+ Exit /b
+)
+
+:Remove
+regsvr32 /s /u HaoZipExt.dll
+rd /s /q "%APPDATA%\HaoZip" 2>NUL
+reg delete HKCU\Software\2345.com /f >NUL 2>NUL
+taskkill /f /im explorer.exe
+start explorer
+exit
diff --git a/scripts/hash.sh b/scripts/hash.sh
new file mode 100644
index 00000000000..5b7e2c39ce4
--- /dev/null
+++ b/scripts/hash.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+cd $@
+# DOS to Unix
+vim install.bat -c "set ff=unix" -c ":wq"
+vim uninstall.bat -c "set ff=unix" -c ":wq"
+sha256sum *.bat
+
+# Unix to DOS
+# sed -i 's/$/\r/' $@
+# vim install.bat -c "set ff=dos" -c ":wq"
+# vim uninstall.bat -c "set ff=dos" -c ":wq"
+# sha256sum *.bat
+
+cd ..
diff --git a/scripts/hotkeyp/hotkeyp.htk b/scripts/hotkeyp/hotkeyp.htk
new file mode 100644
index 00000000000..6b024d8ec2e
--- /dev/null
+++ b/scripts/hotkeyp/hotkeyp.htk
@@ -0,0 +1,403 @@
+hotKeys7 67 1
+新建标签页
+
+\Ctrl\T
+
+
+3866625 112 0 0 1 0 27 0 0
+恢复关闭标签页
+
+\Ctrl\Shift\T
+
+
+3866625 112 4 0 1 0 27 0 0
+当前标签页右侧打开新标签页(需要扩展)
+
+\Alt\Shift\6 firefox.exe|chrome.exe|msedge.exe
+
+
+3932161 113 0 0 1 0 74 0 0
+最近标签页切换(需要扩展)
+
+\Alt\X firefox.exe|chrome.exe|msedge.exe
+
+
+3997697 114 0 0 1 0 74 0 0
+复制标签页(需要扩展)
+
+\Alt\Shift\7 firefox.exe|chrome.exe|msedge.exe
+
+
+4063233 115 0 0 1 0 74 0 0
+--------------------------
+
+\Ctrl\W
+
+
+0 0 0 0 1 0 27 0 0
+关闭当前标签页
+
+\Ctrl\W
+
+
+3866625 112 1 0 1 0 27 0 0
+关闭右侧标签页(需要扩展)
+
+\Alt\Shift\0
+
+
+540803073 113 1 0 1 0 27 0 0
+关闭其他标签页(需要扩展)
+
+\Alt\Shift\9
+
+
+540868609 114 1 0 1 0 27 0 0
+--------------------------
+
+\Ctrl\W
+
+
+0 0 0 0 1 0 27 0 0
+关闭窗口(需要二次确认)
+
+
+
+
+1048577 81 2 0 1 8 9 0 0
+Ctrl+9(最后一个标签页)
+
+\Ctrl\9
+
+
+131073 49 6 0 1 0 27 0 0
+
+
+
+
+
+539557889 192 2 0 1 0 101 0 0
+--------------------------
+explorer.exe
+
+
+
+0 0 0 0 1 0 -1 0 0
+
+
+
+
+
+558366721 38 5 0 1 0 13 0 0
+
+
+
+
+
+558891009 40 5 0 1 0 14 0 0
+
+
+
+
+
+558891009 40 7 0 1 0 17 0 0
+--------------------------
+explorer.exe
+
+
+
+0 0 0 0 1 0 -1 0 0
+向上
+
+\Up
+
+
+538378241 73 5 0 1 0 27 0 0
+向下
+
+\Down
+
+
+539295745 75 5 0 1 0 27 0 0
+向左
+
+\Left
+
+
+539230209 74 5 0 1 0 27 0 0
+向右
+
+\Right
+
+
+539361281 76 5 0 1 0 27 0 0
+向左一个单词
+
+\Ctrl\Left
+
+
+538312705 85 5 0 1 0 27 0 0
+向右一个单词
+
+\Ctrl\Right
+
+
+538443777 79 5 0 1 0 27 0 0
+--------------------------
+explorer.exe
+
+
+
+0 0 0 0 1 0 -1 0 0
+向上选择
+
+\Shift\Up
+
+
+538378241 73 7 0 1 0 27 0 0
+向右选择
+
+\Shift\Right
+
+
+539361281 76 7 0 1 0 27 0 0
+向下选择
+
+\Shift\Down
+
+
+539295745 75 7 0 1 0 27 0 0
+向左选择
+
+\Shift\Left
+
+
+539230209 74 7 0 1 0 27 0 0
+向左选择一个单词
+
+\Shift\Ctrl\Left
+
+
+538312705 85 7 0 1 0 27 0 0
+向右选择一个单词
+
+\Shift\Ctrl\Right
+
+
+538443777 79 7 0 1 0 27 0 0
+--------------------------
+explorer.exe
+
+
+
+0 0 0 0 1 0 -1 0 0
+向左删除
+
+\backspace
+
+
+539164673 72 5 0 1 0 27 0 0
+向左删除
+
+\backspace
+
+
+539164673 72 7 0 1 0 27 0 0
+向右删除
+
+\delete
+
+
+539426817 186 5 0 1 0 27 0 0
+向右删除
+
+\delete
+
+
+539426817 186 7 0 1 0 27 0 0
+向右删除
+
+\delete
+
+
+539492353 222 5 0 1 0 27 0 0
+向右删除
+
+\delete
+
+
+539492353 222 7 0 1 0 27 0 0
+--------------------------
+explorer.exe
+
+
+
+0 0 0 0 1 0 -1 0 0
+回车
+
+\enter
+
+
+3735553 32 6 0 1 0 27 0 0
+回车
+
+\enter
+
+
+540606465 32 5 0 1 0 27 0 0
+回车
+
+\enter
+
+
+3735553 229 4 0 1 0 27 0 0
+--------------------------
+explorer.exe
+
+
+
+0 0 0 0 1 0 -1 0 0
+Ditto
+D:\Office\Ditto\Ditto.exe
+
+
+
+537001985 49 5 0 1 0 -1 0 0
+天若OCR文字识别
+D:\Office\天若OCR文字识别\天若OCR文字识别.exe
+
+
+
+537067521 50 5 0 1 0 -1 0 0
+FSCapture
+D:\Internet\RunningCheese Firefox V10\Profiles\V10\chrome\Local\FSCapture\FSCapture.exe
+
+
+
+537133057 51 5 0 1 0 -1 0 0
+ScreenToGif
+D:\Internet\RunningCheese Firefox V10\Profiles\V10\chrome\Local\ScreenToGif.exe
+
+
+
+537198593 52 5 0 1 0 -1 0 0
+欧路词典
+D:\Education\Eudic\eudic.exe
+
+
+
+537264129 53 5 0 1 0 -1 0 0
+--------------------------
+explorer.exe
+
+
+
+0 0 0 0 1 0 -1 0 0
+PPT
+D:\Program Files\Microsoft Office\root\Office16\POWERPNT.EXE
+
+
+
+1048577 81 5 0 1 0 -1 0 0
+Windows To-do
+explorer.exe
+shell:AppsFolder\Microsoft.Todos_8wekyb3d8bbwe!App
+
+
+1114113 87 5 0 1 0 -1 0 0
+Excel
+D:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE
+
+
+
+538050561 69 5 0 1 0 -1 0 0
+RSS
+D:\Program Files\irreader\irreader.exe
+
+
+
+538116097 82 5 0 1 33 -1 0 0
+Typora
+D:\Program Files\Typora\Typora.exe
+
+
+
+538181633 84 5 0 1 0 -1 0 0
+--------------------------
+explorer.exe
+
+
+
+0 0 0 0 1 0 -1 0 0
+Snapshot
+D:\Internet\RunningCheese Firefox V10\Profiles\V10\chrome\Local\Snapshot.exe
+
+
+
+538836993 65 5 0 1 0 -1 0 0
+网易云音乐
+D:\Internet\CloudMusic\cloudmusic.exe
+
+
+
+538902529 83 5 0 1 0 -1 0 0
+IDM
+D:\Internet\IDM\IDMan.exe
+
+
+
+538968065 68 5 0 1 0 -1 0 0
+资源管理器
+
+\win\1
+
+
+539033601 70 5 0 1 0 27 0 0
+邮箱
+D:\Internet\邮箱大师\MailMaster\Application\mailmaster.exe
+
+
+
+539099137 71 5 0 1 1 -1 0 0
+--------------------------
+explorer.exe
+
+
+
+0 0 0 0 1 0 -1 0 0
+Xmind
+D:\Program Files\XMind ZEN\XMind ZEN.exe
+
+
+
+539820033 88 5 0 1 0 -1 0 0
+Sublime Text
+D:\Office\Sublime Text 3\sublime_text.exe
+
+
+
+539885569 67 5 0 1 0 -1 0 0
+WeChat
+D:\Internet\WeChat\WeChat.exe
+
+
+
+539951105 86 5 0 1 0 -1 0 0
+浏览器
+D:\Internet\RunningCheese Firefox V10\Firefox\firefox.exe
+
+
+
+540016641 66 5 0 1 0 -1 0 0
+--------------------------
+explorer.exe
+
+
+
+0 0 0 0 1 0 -1 0 0
+闹钟
+explorer.exe
+shell:AppsFolder\Microsoft.WindowsAlarms_8wekyb3d8bbwe!App
+
+
+0 0 0 0 1 1 -1 0 0
diff --git a/scripts/hotkeyp/readme.md b/scripts/hotkeyp/readme.md
new file mode 100644
index 00000000000..53bbf72b494
--- /dev/null
+++ b/scripts/hotkeyp/readme.md
@@ -0,0 +1,55 @@
+# HotkeyP
+
+## 软件介绍
+
+软件名称:HotkeyP
+
+软件官网:
+http://petr.lastovicka.sweb.cz/others.html#hotkey
+
+使用手册:
+http://petr.lastovicka.sweb.cz/HotkeyP-help.html
+
+使用参考:
+https://mp.weixin.qq.com/s/AlqczP-3DHiG7VKHIXyWPg
+
+PS:软件占用极小,建议加入开机启动。
+
+注意:
+你可以的软件里导入奶酪的配置,即 “hotkeyp\_奶酪配置.htk”
+
+## 使用方法
+
+支持的修饰键包括:Ctrl, Shift, Alt, Win
+
+支持应用程序,文件夹,网页地址,或者内部命令
+
+支持环境变量,比如 %SystemRoot%、%HotkeyP%
+
+勾选“允许运行多实例”的话,软件就会开启多个窗口,如果不勾选的话,则会变成切换模式
+
+## 鼠标快捷键
+
+L、R、M、4、5、Up、Down、Left、 Right
+
+分别对应:
+
+鼠标左键、鼠标右键、鼠标中键、鼠标第四键、鼠标第五键、滚轮向上、滚轮向下、滚轮向左、滚轮向右
+
+## 宏命令
+
+宏命令这样写,比如 Win+S 键写成:\win\s
+
+列表:
+
+\esc, \tab, \backspace, \enter, \space, \left, \right, \up, \down, \ins, \del, \home, \end, \pageup, \pagedown, \f1, \f2, ..., \shift, \rshift, \ctrl, \rctrl, \alt, \ralt, \win, \rwin, \apps, \capslock, \scrolllock, \numlock, \pause, \printscreen, \divide, \multiply, \add, \subtract, \decimal, \0, \1, ..., \num0, \num1, ..., \A, \B, ..., \back, \forward, \refresh, \search, \favorites, \browser, \mail, \power, \volume_down, \volume_up, \mute, \play_pause, \stop, \prev_track, \next_track, \media_select, \launch_app1, \launch_app2, \lbutton, \rbutton, \mbutton, \xbutton1, \xbutton2, \wheelup, \wheeldown, \wheelleft, \wheelright, \doubleclick, \sleep, \rep, \xAB.
+
+## 活动窗口执行按键
+
+如果不想用全局快捷键,而只对某些软件才有效的话,可以用 “活动窗口执行按键” 命令。
+
+参数这样写:
+
+\Alt\Shift\6 firefox.exe|chrome.exe|msedge.exe
+
+前面是按键,后面是生效的软件,| 的意思就“或者”。
diff --git a/scripts/hotkeyp/start-hotkeyp.ps1 b/scripts/hotkeyp/start-hotkeyp.ps1
new file mode 100644
index 00000000000..4b8a9186ba1
--- /dev/null
+++ b/scripts/hotkeyp/start-hotkeyp.ps1
@@ -0,0 +1 @@
+sudo Start-Process "$(scoop prefix hotkeyp)\HotkeyP.exe" -WorkingDirectory "$(scoop prefix hotkeyp)" -WindowStyle Hidden
diff --git a/scripts/idm/idm-custom-settings.reg b/scripts/idm/idm-custom-settings.reg
new file mode 100644
index 00000000000..7a2ddb4b346
--- /dev/null
+++ b/scripts/idm/idm-custom-settings.reg
@@ -0,0 +1,24 @@
+Windows Registry Editor Version 5.00
+
+[HKEY_CURRENT_USER\Software\DownloadManager]
+;选项-常规: 取消勾选“监视基于IE内核的浏览器的点击事件”
+"RunIEMonitor"=dword:00000000
+
+;选项-文件类型: 自定义“自动开始下载下列类型的文件”
+"Extensions"="RAR ZIP 7Z EXE MSI APK MP4 MKV ESD ISO"
+
+;选项-文件类型-下列地址不要自动开始下载: 取消勾选“当您两次取消同一下载事件的时候,显示该对话框以便将下载地址加入排除列表”
+"DontShowDlgOnCancel"=dword:00000001
+
+;选项-下载: 取消勾选“显示下载完成对话框”
+"ComplDlgShowing"=dword:00000000
+
+;选项-下载: 取消勾选“在显示‘下载文件信息’对话框时就开始下载文件”
+"startImmediately"=dword:00000000
+
+;选项-代理服务器: 使用系统设置
+"nProxyMode"=dword:00000002
+
+[HKEY_CURRENT_USER\Software\DownloadManager\DwnlSelPanel]
+;选项-常规-自定义浏览器中的IDM下载浮动条-对于选定的文件: 点选“针对选中的链接不显示下载浮动条”
+"PanelMode"=dword:00000002
diff --git a/scripts/idm/install.bat b/scripts/idm/install.bat
new file mode 100644
index 00000000000..632cc2edcd9
--- /dev/null
+++ b/scripts/idm/install.bat
@@ -0,0 +1,44 @@
+@ECHO OFF&PUSHD %~DP0 &TITLE 绿化
+
+>NUL 2>&1 REG.exe query "HKU\S-1-5-19" || (
+ ECHO SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\GetAdmin.vbs"
+ ECHO UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%TEMP%\GetAdmin.vbs"
+ "%TEMP%\GetAdmin.vbs"
+ DEL /f /q "%TEMP%\GetAdmin.vbs" 2>NUL
+ Exit /b
+)
+
+:Setup
+taskkill /f /im IDM* >NUL 2>NUL
+taskkill /f /im IEMon* >NUL 2>NUL
+
+reg delete "HKLM\SOFTWARE\Internet Download Manager" /f>NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Wow6432Node\Internet Download Manager" /f>NUL 2>NUL
+
+::导入注册信息
+reg add "HKCU\SOFTWARE\DownloadManager" /f /v "FName" /t REG_SZ /d "Tonec" >NUL
+reg add "HKCU\SOFTWARE\DownloadManager" /f /v "LName" /t REG_SZ /d "Inc." >NUL
+reg add "HKCU\SOFTWARE\DownloadManager" /f /v "Email" /t REG_SZ /d "info@tonec.com" >NUL
+reg add "HKCU\SOFTWARE\DownloadManager" /f /v "Serial" /t REG_SZ /d "MJHKU-6DW22-16UZ6-LIQ5T" >NUL
+
+:: Windows All
+reg add "HKCU\Software\DownloadManager" /f /v idmvers >NUL
+reg add "HKCU\Software\DownloadManager" /f /v ToolbarStyle /d "H3M Glossy" >NUL
+reg add "HKCU\Software\DownloadManager" /f /v TipStartUp /t REG_DWORD /d 1 >NUL
+reg add "HKCU\Software\DownloadManager" /f /v LaunchOnStart /t REG_DWORD /d 0 >NUL
+reg add "HKCU\Software\DownloadManager" /f /v startImmediately /t REG_DWORD /d 0 >NUL
+reg add "HKCU\Software\DownloadManager" /f /v FSSettingsChecked /t REG_DWORD /d 1 >NUL
+reg add "HKCU\Software\DownloadManager\FoldersTree" /f /v AFD /t REG_DWORD /d 1 >NUL
+
+Start /Wait /B "" "%~dp0IDMan.exe" /rtr /setlngid 2052 /fulllngfile idm_chn2.lng
+
+:: Windows NT6
+If Exist "%Public%" idmBroker.exe -RegServer
+If Exist "%Public%" Uninstall.exe -instdriv
+
+If Exist "%Public%" Net Start IDMWFP >NUL 2>NUL
+If Exist "%Public%" Rundll32 setupapi.dll,InstallHinfSection DefaultInstall 128 .\idmwfp.inf
+
+:: Windows NT
+If Not Exist "%Public%" Net Start idmtdi >NUL 2>NUL
+If Not Exist "%Public%" Rundll32 setupapi.dll,InstallHinfSection DefaultInstall 128 .\idmtdi.inf
diff --git a/scripts/idm/uninstall.bat b/scripts/idm/uninstall.bat
new file mode 100644
index 00000000000..b23a22d64d3
--- /dev/null
+++ b/scripts/idm/uninstall.bat
@@ -0,0 +1,39 @@
+@ECHO OFF&PUSHD %~DP0 &TITLE 卸载
+
+>NUL 2>&1 REG.exe query "HKU\S-1-5-19" || (
+ ECHO SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\GetAdmin.vbs"
+ ECHO UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%TEMP%\GetAdmin.vbs"
+ "%TEMP%\GetAdmin.vbs"
+ DEL /f /q "%TEMP%\GetAdmin.vbs" 2>NUL
+ Exit /b
+)
+
+:Uninst
+taskkill /f /im IDM* >NUL 2>NUL
+taskkill /f /im IEMon* >NUL 2>NUL
+
+regsvr32 /s /u idmfsa.dll downlWithIDM.dll
+regsvr32 /s /u IDMIECC.dll IDMGetAll.dll IDMShellExt.dll
+If Exist "%WinDir%\SysWOW64" regsvr32 /s /u IDMIECC64.dll
+If Exist "%WinDir%\SysWOW64" regsvr32 /s /u downlWithIDM64.dll
+If Exist "%WinDir%\SysWOW64" regsvr32 /s /u IDMGetAll64.dll
+If Exist "%WinDir%\SysWOW64" regsvr32 /s /u IDMShellExt64.dll
+
+If Exist "%Public%" idmBroker.exe -unRegServer
+If Exist "%Public%" Uninstall.exe -uninstdriv
+
+If Exist "%Public%" Net Stop IDMWFP >NUL 2>NUL
+If Not Exist "%Public%" Net Stop IDMTDI >NUL 2>NUL
+
+If Exist "%Public%" Rundll32 setupapi.dll,InstallHinfSection DefaultUninstall 128 .\idmwfp.inf
+If Not Exist "%Public%" Rundll32 setupapi.dll,InstallHinfSection DefaultUninstall 128 .\idmtdi.inf
+
+rd/s/q "%AppData%\IDM" 2>NUL
+rd/s/q "%ProgramData%\IDM" 2>NUL
+rd/s/q "%AllUsersProfile%\Application Data\IDM" 2>NUL
+
+reg delete "HKLM\SOFTWARE\Internet Download Manager" /f>NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Wow6432Node\Internet Download Manager" /f>NUL 2>NUL
+
+taskkill /f /im explorer.exe >NUL 2>NUL & start explorer
+reg delete "HKCU\Software\DownloadManager" /f>NUL 2>NUL
diff --git a/scripts/install_cudnn.ps1 b/scripts/install_cudnn.ps1
new file mode 100644
index 00000000000..418420464bf
--- /dev/null
+++ b/scripts/install_cudnn.ps1
@@ -0,0 +1,5 @@
+if (!$env:CUDA_PATH) {
+ Write-Error "Environment variable 'CUDA_PATH' not found."
+ return
+}
+sudo Copy-Item -LiteralPath (Get-ChildItem -LiteralPath $dir).FullName -Destination $env:CUDA_PATH -Recurse -Force
diff --git a/scripts/install_keypirinha_plugin.ps1 b/scripts/install_keypirinha_plugin.ps1
new file mode 100644
index 00000000000..88978cf73d3
--- /dev/null
+++ b/scripts/install_keypirinha_plugin.ps1
@@ -0,0 +1,3 @@
+$packageName = '{0}.keypirinha-package' -f ($app -replace '^keypirinha-', '')
+$packageDir = '{0}/../portable/Profile/Packages' -f (PSWinUtil\Find-Path -Name 'keypirinha.exe' -Program -Strict)
+Move-Item -LiteralPath ('{0}/{1}' -f $dir, $packageName) -Destination $packageDir
diff --git a/scripts/install_youtube-dl-animelover1984.ps1 b/scripts/install_youtube-dl-animelover1984.ps1
new file mode 100644
index 00000000000..c19c29e5087
--- /dev/null
+++ b/scripts/install_youtube-dl-animelover1984.ps1
@@ -0,0 +1,15 @@
+python3.exe -m pip install requests mutagen websockets git+https://github.com/animelover1984/youtube-dl
+
+Get-Command -Name "pip.exe" |
+Select-Object -ExpandProperty Source |
+Split-Path -Parent |
+Get-ChildItem -LiteralPath { $_ } -File |
+Where-Object { $_.Name -in "youtube-dl.exe", "youtube-dl-script.py" } |
+ForEach-Object {
+ $aRenameFile = $_
+ $aNewName = $aRenameFile.Name -replace 'youtube-dl', 'youtube-dl-animelover1984'
+
+ Rename-Item -LiteralPath $aRenameFile.FullName -NewName $aNewName
+}
+
+Write-Host "The exe file name is youtube-dl-animelover1984.exe."
diff --git a/scripts/jetbrain-portabler.ps1 b/scripts/jetbrain-portabler.ps1
new file mode 100644
index 00000000000..58188c1a6bd
--- /dev/null
+++ b/scripts/jetbrain-portabler.ps1
@@ -0,0 +1,29 @@
+<#
+.SYNOPSIS
+ Universal portable mode enabler
+ IDE subdirectory is needed.
+.PARAMETER Directory
+ Current '$dir' of application
+.PARAMETER Persist
+ Persist directory of application
+#>
+param([Parameter(Mandatory)][String] $Directory, [Parameter(Mandatory)][String] $Persist)
+
+$properties = Join-Path 'IDE' 'bin\idea.properties'
+
+if (-not (Join-Path $Persist $properties | Test-Path)) {
+ Write-Host 'File' $properties 'does not exists. Creating.' -ForegroundColor Yellow
+
+ $fullProp = Join-path $Directory $properties
+ $currentForward = (Split-Path $Directory | Join-Path -ChildPath 'current') -replace '\\', '/'
+ $profileDir = "$currentForward/profile"
+
+ $CONT = Get-Content $fullProp
+ # Set portable configuration
+ $CONT = $CONT -replace '^#\s*(idea.config.path=).*$', "`$1$profileDir/config"
+ $CONT = $CONT -replace '^#\s*(idea.system.path=).*$', "`$1$profileDir/system"
+ $CONT = $CONT -replace '^#\s*(idea.plugins.path=).*$', '$1${idea.config.path}/plugins'
+ $CONT = $CONT -replace '^#\s*(idea.log.path=).*$', '$1${idea.system.path}/log'
+
+ Set-Content $fullProp $CONT -Encoding Ascii -Force
+}
diff --git a/scripts/kuwo/install.bat b/scripts/kuwo/install.bat
new file mode 100644
index 00000000000..e6de7a09bfd
--- /dev/null
+++ b/scripts/kuwo/install.bat
@@ -0,0 +1,42 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im KwW* >NUL 2>NUL
+taskkill /f /im KwMusic* >NUL 2>NUL
+taskkill /f /im KwWebKit* >NUL 2>NUL
+taskkill /f /im KwService* >NUL 2>NUL
+taskkill /f /im runshelldraw* >NUL 2>NUL
+taskkill /f /im WriteMbox.exe >NUL 2>NUL
+taskkill /f /im KwKnowSong.exe >NUL 2>NUL
+
+rd/s/q "%temp%\KWMUSIC" 2>NUL
+del/f/s/q "%temp%\kuwo*" >NUL 2>NUL
+del/f/s/q "%temp%\KwBindApp*" >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f /v "kwmusic" >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f /v "kwmusic" >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\\Microsoft\Windows\CurrentVersion\Run" /f /v "kwmusic" /reg:32 >NUL 2>NUL
+
+ver|findstr "5\.[0-9]\.[0-9][0-9]*" >NUL && (
+rd /s/q "%AllUsersProfile%\Application Data\kuwodata\kwshow" 2>NUL
+rd /s/q "%AllUsersProfile%\Application Data\kuwodata\kwmusic2013\Update" 2>NUL
+del/f/q "%AllUsersProfile%\Application Data\kuwodata\kwmusic2013\ModuleData\ModMusicTool\conf.txt" >NUL 2>NUL
+md "%AllUsersProfile%\Application Data\kuwodata\kwmusic2013\ModuleData\ModMusicTool" 2>NUL
+echo f|copy /y "Bin\Data\conf.txt" "%AllUsersProfile%\Application Data\kuwodata\kwmusic2013\ModuleData\ModMusicTool" >NUL 2>NUL
+attrib +r "%AllUsersProfile%\Application Data\kuwodata\kwmusic2013\ModuleData\ModMusicTool\conf.txt" 2>NUL
+echo. >"%AllUsersProfile%\Application Data\kuwodata\kwmusic2013\Update" 2>NUL
+echo. >"%AllUsersProfile%\Application Data\kuwodata\kwshow" 2>NUL
+)
+
+ver|findstr "\<6\.[0-9]\.[0-9][0-9]*\> \<10\.[0-9]\.[0-9][0-9]*\>" >NUL && (
+rd /s/q "%ProgramData%\kuwodata\kwshow" 2>NUL
+rd /s/q "%ProgramData%\kuwodata\kwmusic2013\Update" 2>NUL
+del/f/q "%ProgramData%\kuwodata\kwmusic2013\ModuleData\ModMusicTool\conf.txt" >NUL 2>NUL
+md "%ProgramData%\Kuwodata\kwmusic2013\ModuleData\ModMusicTool" 2>NUL
+echo f|copy /y "Bin\Data\conf.txt" "%ProgramData%\Kuwodata\kwmusic2013\ModuleData\ModMusicTool" >NUL 2>NUL
+echo. >"%ProgramData%\kuwodata\kwmusic2013\Update" 2>NUL
+echo. >"%ProgramData%\kuwodata\kwshow" 2>NUL
+)
+
+CLS
+ECHO.&ECHO 完成
+ECHO.&ECHO Modded by www.423down.com
diff --git a/scripts/kuwo/uninstall.bat b/scripts/kuwo/uninstall.bat
new file mode 100644
index 00000000000..120580a9634
--- /dev/null
+++ b/scripts/kuwo/uninstall.bat
@@ -0,0 +1,88 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im KwW* >NUL 2>NUL
+taskkill /f /im KwMusic* >NUL 2>NUL
+taskkill /f /im KwWebKit* >NUL 2>NUL
+taskkill /f /im KwService* >NUL 2>NUL
+taskkill /f /im runshelldraw* >NUL 2>NUL
+taskkill /f /im WriteMbox.exe >NUL 2>NUL
+taskkill /f /im KwKnowSong.exe >NUL 2>NUL
+
+rd/s/q "%temp%\KWMUSIC" 2>NUL
+rd/s/q "%AppData%\kuwodata" 2>NUL
+rd/s/q "%LocalAppData%\kwmusic" 2>NUL
+ver|findstr "5\.[0-9]\.[0-9][0-9]*" >NUL && (
+rd/s/q "%AllUsersProfile%\Application Data\Kuwodata" 2>NUL
+rd/s/q "%UserProfile%\Local Settings\Application Data\kwmusic" 2>NUL
+del/q "%UserProfile%\桌面\酷我音乐.lnk" >NUL 2>NUL
+del/q "%AllUsersProfile%\桌面\酷我音乐.lnk" >NUL 2>NUL
+rd/s/q "%UserProfile%\「开始」菜单\程序\酷我音乐"2>NUL
+rd/s/q "%AllUsersProfile%\「开始」菜单\程序\酷我音乐"2>NUL
+)
+ver|findstr "\<6\.[0-9]\.[0-9][0-9]*\> \<10\.[0-9]\.[0-9][0-9]*\>" >NUL && (
+rd/s/q "%ProgramData%\kuwodata" 2>NUL
+rd/s/q "%UserProfile%\AppData\Local\kwmusic" 2>NUL
+del/q "%Public%\Desktop\酷我音乐.lnk" >NUL 2>NUL
+del/q "%UserProfile%\Desktop\酷我音乐.lnk" >NUL 2>NUL
+rd/s/q "%AppData%\Microsoft\Windows\Start Menu\Programs\酷我音乐"2>NUL
+rd/s/q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\酷我音乐"2>NUL
+)
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f /v "kwmusic" >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f /v "kwmusic" >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f /v "kwmusic" /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KwMusic" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KwMusic" /f /reg:32 >NUL 2>NUL
+
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{C190FFCA-1E3C-4C52-AAFF-01AD4CF394E0}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Directory\shell\kwopen" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Directory\shell\kwplaylist" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kuwo" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Clients\Media\KwMusic" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Clients\Media\KwMusic" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_AAC" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_AC3" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_ape" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_CDA" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_CUE" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_DFF" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_dks" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_DSF" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_FLAC" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_KWM" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_lrc" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_lrcx" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_M4A" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_MP1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_MP2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_MP3" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_OGG" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_OPUS" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_TTA" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_WAV" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_wma" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\kwfile_WV" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_AAC" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_AC3" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_ape" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_CDA" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_CUE" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_DFF" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_DSF" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_FLAC" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_KWM" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_M4A" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_MP1" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_MP2" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_MP3" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_OGG" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_OPUS" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_TTA" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_WAV" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_wma" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\kwfile_WV" /f >NUL 2>NUL
+
+for %%a in (c d e f h i j k l m n o) do rd/s/q "%%a:\KwDownload\temp"2>NUL
+
+CLS
+ECHO.&ECHO Modded by www.423down.com
diff --git a/scripts/ludashi/uninstall.bat b/scripts/ludashi/uninstall.bat
new file mode 100644
index 00000000000..314102cd3b1
--- /dev/null
+++ b/scripts/ludashi/uninstall.bat
@@ -0,0 +1,31 @@
+@ECHO OFF&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im computerz_cn.exe >NUL 2>NUL
+taskkill /f /im ComputerZService.exe >NUL 2>NUL
+taskkill /f /im BenchmarkLauncher* /t >NUL 2>NUL
+taskkill /f /im Display3DEx.exe >NUL 2>NUL
+
+rd/s/q "%AppData%\lds" 2>NUL
+rd/s/q "%AppData%\DrvMgr"2>NUL
+rd/s/q "%AppData%\Ludashi"2>NUL
+
+reg delete "HKCU\Software\Ludashi" /f >NUL 2>NUL
+reg delete "HKCU\Software\QiLu Inc." /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\ldssrv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Ludashi" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\ComMaster" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\ComputerZ" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\LiveUpdate360" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\360Safe\Liveup" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Wow6432Node\ldssrv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Wow6432Node\Ludashi" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Wow6432Node\ComMaster" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Wow6432Node\ComputerZ" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Wow6432Node\LiveUpdate360" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Wow6432Node\360Safe\Liveup" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\services\HpSvc" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\services\ComputerZ_x64" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\services\HardwareProtect" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ComputerZ_CN.exe" /f >NUL 2>NUL
+
+ECHO.&ECHO 清除完成 &TIMEOUT /t 2 >NUL&EXIT
diff --git a/scripts/manifest.ejs b/scripts/manifest.ejs
new file mode 100644
index 00000000000..3960c6fdb90
--- /dev/null
+++ b/scripts/manifest.ejs
@@ -0,0 +1,33 @@
+{
+ "homepage": "http://nsis.sourceforge.net/",
+ "license": "Zlib",
+ "version": "<%= version %>",
+ "url": "https://downloads.sourceforge.net/project/nsis/NSIS%20<%= majorVersion %>/<%= version %>/nsis-<%= version %>.zip",
+ "bin": [
+ "makensis.exe",
+ "nsis.exe"
+ ],
+ "hash": <%- JSON.stringify(hashes) %>,
+ "extract_dir": "nsis-<%= version %>",
+ "env_set": {
+ "NSIS_HOME": "$dir",
+ "NSISDIR": "$dir"
+ },
+ "checkver": {
+ "url": "http://nsis.sourceforge.net/Download",
+ "re": "\\/rn\\/v([\\d.]+)\""
+ },
+ "autoupdate": {
+ "url": "https://downloads.sourceforge.net/project/nsis/NSIS%20$majorVersion/$version/nsis-$version.zip",
+ "extract_dir": "nsis-$version"
+ },
+ "persist": [
+ "nsisconf.nsh"
+ ],
+ "shortcuts": [
+ [
+ "NSIS.exe",
+ "NSIS"
+ ]
+ ]
+}
\ No newline at end of file
diff --git "a/scripts/msedge/\346\270\205\347\220\206.bat" "b/scripts/msedge/\346\270\205\347\220\206.bat"
new file mode 100644
index 00000000000..68d4da60f3c
--- /dev/null
+++ "b/scripts/msedge/\346\270\205\347\220\206.bat"
@@ -0,0 +1,186 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im Edge* /t >NUL 2>NUL
+taskkill /f /im msedge* /t >NUL 2>NUL
+taskkill /f /im TabPlus.exe >NUL 2>NUL
+taskkill /f /im MyChrome.exe >NUL 2>NUL
+
+::如有就停止更新相关系统服务
+sc stop edgeupdate >NUL 2>NUL
+sc delete edgeupdate >NUL 2>NUL
+sc stop edgeupdatem >NUL 2>NUL
+sc delete edgeupdatem >NUL 2>NUL
+sc stop MicrosoftEdgeElevationService >NUL 2>NUL
+sc delete MicrosoftEdgeElevationService >NUL 2>NUL
+
+::移除更新触发器相关计划任务
+del/f/q "%Windir%\System32\Tasks\MicrosoftEdgeUpdate*" >NUL 2>NUL
+schtasks.exe /delete /tn "MicrosoftEdgeUpdateTaskMachineUA" /f >NUL 2>NUL
+schtasks.exe /delete /tn "MicrosoftEdgeUpdateTaskMachineCore" /f >NUL 2>NUL
+
+::移除相关残留的临时缓存数据
+rd/s/q "%ProgramFiles(x86)%\Microsoft\temp" 2>NUL
+rd/s/q "%ProgramFiles%\Microsoft\EdgeUpdate" 2>NUL
+rd/s/q "%ProgramFiles(x86)%\Microsoft\EdgeUpdate" 2>NUL
+rd/s/q "%LocalAppData%\Microsoft\Edge"2>NUL
+rd/s/q "%LocalAppData%\Microsoft\EdgeUpdate"2>NUL
+rd/s/q "%ProgramData%\Microsoft\EdgeUpdate" 2>NUL
+
+::移除桌面和开始菜单快捷方式
+del /q "%Public%\Desktop\*Edge*.lnk" >NUL 2>NUL
+del /q "%Public%\Desktop\MyChrome.lnk" >NUL 2>NUL
+del /q "%UserProfile%\Desktop\*Edge*.lnk" >NUL 2>NUL
+del /q "%UserProfile%\Desktop\MyChrome.lnk" >NUL 2>NUL
+del /q "%AppData%\Microsoft\Windows\Start Menu\Programs\*Edge*.lnk"2>NUL
+del /q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\*Edge*.lnk"2>NUL
+rd/s/q "%AppData%\Microsoft\Windows\Start Menu\Programs\Microsoft Edge"2>NUL
+rd/s/q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\Microsoft Edge"2>NUL
+
+::清除相关残留的注册表键值项
+reg delete "HKCU\Software\Microsoft\Edge" /f >NUL 2>NUL
+reg delete "HKLM\Software\Microsoft\Edge" /f >NUL 2>NUL
+reg delete "HKCU\Software\Microsoft\EdgeUpdate" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MSEdgeHTM" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MSEdgePDF" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\EdgeUpdate" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\EdgeUpdate" /f /reg:32 >NUL 2>NUL
+reg delete "HKEY_USERS\.DEFAULT\Software\Microsoft\EdgeUpdate" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f /v "Microsoft Edge Update" >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\Edge" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\MicrosoftEdgeElevationService" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\edgeupdate" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\edgeupdatem" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\EventLog\System\Microsoft Edge Etw" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge" /f /reg:32 >NUL 2>NUL
+
+reg delete "HKLM\SOFTWARE\Classes\AppID\MicrosoftEdgeUpdate.exe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Clients\StartMenuInternet\Microsoft Edge" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\RegisteredApplications" /f /v "Microsoft Edge" >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\MediaPlayer\ShimInclusionList\msedge.exe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\EnterpriseMode" /f /v "MSEdgePath" >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\{9459C573-B17A-45AE-9F64-1857B5D58CEE}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\MicrosoftEdgeUpdate.exe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{3a5f2396-5c8f-4f1f-9b67-6cca6c990e61}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts" /f /v "MSEdgeHTM_microsoft-edge">NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts" /f /v "AppX7rm9drdg8sk7vqndwj3sdjw11x96jc0y_microsoft-edge" >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules" /f /v "{939AE992-0357-4820-9A8E-A241A31B92E6}">NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Internet Explorer\Low Rights\ElevationPolicy\{c9abcf16-8dc2-4a95-bae3-24fd98f2ed29}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{96D7FFC2-30A4-3179-8B2A-E56E7B046992}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Tracing\MicrosoftEdgeUpdate_RASAPI32" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.htm\OpenWithProgIds" /f /v "MSEdgeHTM" >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.html\OpenWithProgIds" /f /v "MSEdgeHTM" >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.svg\OpenWithProgIds" /f /v "MSEdgeHTM" >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.xht\OpenWithProgIds" /f /v "MSEdgeHTM" >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.xhtml\OpenWithProgIds" /f /v "MSEdgeHTM" >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{1FCBE96C-1697-43AF-9140-2897C7C69767}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{628ACE20-B77A-456F-A88D-547DB6CEEDD5}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{A6B716CB-028B-404D-B72C-50E153DD68DA}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{CECDDD22-2E72-4832-9606-A9B0E5E344B2}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{1FCBE96C-1697-43AF-9140-2897C7C69767}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{59B4762A-A6A9-43BF-A4E3-1BC20DA752D8}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{628ACE20-B77A-456F-A88D-547DB6CEEDD5}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{A2F5CB38-265F-4A02-9D1E-F25B664968AB}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{E6C4E813-77B3-4180-BEFF-28CE1D402FFE}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{177CAE89-4AD6-42F4-A458-00EC3389E3FE}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{195A2EB3-21EE-43CA-9F23-93C2C9934E2E}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{1B9063E4-3882-485E-8797-F28A0240782F}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{2603C88B-F971-4167-9DE1-871EE4A3DC84}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{2EC826CB-5478-4533-9015-7580B3B5E03A}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{3A49F783-1C7D-4D35-8F63-5C1C206B9B6E}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{3E102DC6-1EDB-46A1-8488-61F71B35ED5F}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{450CF5FF-95C4-4679-BECA-22680389ECB9}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{5F9C80B5-9E50-43C9-887C-7C6412E110DF}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{6DFFE7FE-3153-4AF1-95D8-F8FCCA97E56B}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{79E0C401-B7BC-4DE5-8104-71350F3A9B67}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{7B3B7A69-7D88-4847-A6BC-90E246A41F69}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{7E29BE61-5809-443F-9B5D-CF22156694EB}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{837E40DA-EB1B-440C-8623-0F14DF158DC0}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{99F8E195-1042-4F89-A28C-89CDB74A14AE}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{9A6B447A-35E2-4F6B-A87B-5DEEBBFDAD17}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{A5135E58-384F-4244-9A5F-30FA9259413C}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{A6556DFF-AB15-4DC3-A890-AB54120BEAEC}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{AB4F4A7E-977C-4E23-AD8F-626A491715DF}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{C06EE550-7248-488E-971E-B60C0AB3A6E4}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{C20433B3-0D4B-49F6-9B6C-6EE0FAE07837}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{C853632E-36CA-4999-B992-EC0D408CF5AB}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{C9C2B807-7731-4F34-81B7-44FF7779522B}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{D9AA3288-4EA7-4E67-AE60-D18EADCB923D}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{DDD4B5D4-FD54-497C-8789-0830F29A60EE}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{E4518371-7326-4865-87F8-D9D3F3B287A3}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{E55B90F1-DA33-400B-B09E-3AFF7D46BD83}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{FCE48F77-C677-4012-8A1A-54D2E2BC07BD}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{FEA2518F-758F-4B95-A59F-97FCEEF1F5D0}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.CoreClass" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.CoreClass.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.CoreMachineClass" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.CoreMachineClass.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.CredentialDialogMachine" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.CredentialDialogMachine.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.OnDemandCOMClassMachine" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.OnDemandCOMClassMachine.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.OnDemandCOMClassMachineFallback" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.OnDemandCOMClassMachineFallback.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.OnDemandCOMClassSvc" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.OnDemandCOMClassSvc.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.ProcessLauncher" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.ProcessLauncher.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.Update3COMClassService" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.Update3COMClassService.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.Update3WebMachine" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.Update3WebMachine.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.Update3WebMachineFallback" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.Update3WebMachineFallback.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.Update3WebSvc" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MicrosoftEdgeUpdate.Update3WebSvc.1.0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{C9C2B807-7731-4F34-81B7-44FF7779522B}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{08D832B9-D2FD-481F-98CF-904D00DF63CC}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{2E1DD7EF-C12D-4F8E-8AD8-CF8CC265BAD0}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{492E1C30-A1A2-4695-87C8-7A8CAD6F936F}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{59B4762A-A6A9-43BF-A4E3-1BC20DA752D8}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{5F6A18BB-6231-424B-8242-19E5BB94F8ED}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{8F09CD6C-5964-4573-82E3-EBFF7702865B}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{A2F5CB38-265F-4A02-9D1E-F25B664968AB}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{A6B716CB-028B-404D-B72C-50E153DD68DA}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{CECDDD22-2E72-4832-9606-A9B0E5E344B2}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{D1E8B1A6-32CE-443C-8E2E-EBA90C481353}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{E421557C-0628-43FB-BF2B-7C9F8A4D067C}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{E6C4E813-77B3-4180-BEFF-28CE1D402FFE}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{EA92A799-267E-4DF5-A6ED-6A7E0684BB8A}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{FF419FF9-90BE-4D9F-B410-A789F90E5A7C}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{177CAE89-4AD6-42F4-A458-00EC3389E3FE}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{195A2EB3-21EE-43CA-9F23-93C2C9934E2E}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{1B9063E4-3882-485E-8797-F28A0240782F}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{2603C88B-F971-4167-9DE1-871EE4A3DC84}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{2EC826CB-5478-4533-9015-7580B3B5E03A}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{3A49F783-1C7D-4D35-8F63-5C1C206B9B6E}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{3E102DC6-1EDB-46A1-8488-61F71B35ED5F}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{450CF5FF-95C4-4679-BECA-22680389ECB9}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{5F9C80B5-9E50-43C9-887C-7C6412E110DF}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{6DFFE7FE-3153-4AF1-95D8-F8FCCA97E56B}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{79E0C401-B7BC-4DE5-8104-71350F3A9B67}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{7B3B7A69-7D88-4847-A6BC-90E246A41F69}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{7E29BE61-5809-443F-9B5D-CF22156694EB}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{837E40DA-EB1B-440C-8623-0F14DF158DC0}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{99F8E195-1042-4F89-A28C-89CDB74A14AE}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{9A6B447A-35E2-4F6B-A87B-5DEEBBFDAD17}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{A5135E58-384F-4244-9A5F-30FA9259413C}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{A6556DFF-AB15-4DC3-A890-AB54120BEAEC}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{AB4F4A7E-977C-4E23-AD8F-626A491715DF}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{C06EE550-7248-488E-971E-B60C0AB3A6E4}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{C20433B3-0D4B-49F6-9B6C-6EE0FAE07837}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{C853632E-36CA-4999-B992-EC0D408CF5AB}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{D9AA3288-4EA7-4E67-AE60-D18EADCB923D}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{DDD4B5D4-FD54-497C-8789-0830F29A60EE}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{E4518371-7326-4865-87F8-D9D3F3B287A3}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{E55B90F1-DA33-400B-B09E-3AFF7D46BD83}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{FCE48F77-C677-4012-8A1A-54D2E2BC07BD}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{FEA2518F-758F-4B95-A59F-97FCEEF1F5D0}" /f /reg:32 >NUL 2>NUL
+
+CLS
+ECHO.&ECHO 423Down.com
diff --git "a/scripts/msedge/\350\257\264\346\230\216.txt" "b/scripts/msedge/\350\257\264\346\230\216.txt"
new file mode 100644
index 00000000000..3eaef02fa64
--- /dev/null
+++ "b/scripts/msedge/\350\257\264\346\230\216.txt"
@@ -0,0 +1,30 @@
+------------------------------------------------------------
+本作品仅供交流体验使用,请在下载后24小时内删除。
+请勿用于商业用途,禁止任何形式二次打包或转载。
+------------------------------------------------------------
+这是基于 Chromium 的新版 Edge,和 Win10 自带 Edge 完全独立。
+
+由于原版Edge不是太好用,所以我做了一个增强版,看心情更新。
+
+下载地址:https://shuax.com/project/edge/
+
+增强功能:
+ 双击关闭标签页(有一丝丝延迟,正常的!)
+ 保留最后标签页(防止关闭最后一个标签页时关闭浏览器,点X不行)
+ 鼠标悬停标签栏滚动
+ 按住右键时滚轮滚动标签栏
+ 移除flash锁区,移除2020年过期警告(是否加载还是要你自己选择)
+ 移除管理员运行警告
+ 移除开发者模式警告
+ 便携设计,程序放在App目录,数据放在Data目录(兼容原版数据,但重装系统换电脑会丢数据)
+ 移除更新错误警告(因为是绿色版没有自动更新功能)
+
+解压后运行App/msedge.exe即可。
+由于是便携版,不会和其它版本冲突,不想用了可以直接删掉整个文件夹。
+升级只需要覆盖App文件夹即可。(推荐先把老版本App重命名为App2,然后放入新版App,运行测试无误后可以安全删除App2老版本,如果有问题也方便还原。)
+
+增强功能通过App/edge++.dll实现,并修改了msedge.exe主程序,有可能会报毒。
+
+鼠标手势推荐使用全局手势软件,比如MouseInc。
+
+对软件有什么建议,或者发现了问题欢迎加QQ群:838372446进行反馈。
diff --git a/scripts/oraclejdk.ps1 b/scripts/oraclejdk.ps1
new file mode 100644
index 00000000000..6ae2125f014
--- /dev/null
+++ b/scripts/oraclejdk.ps1
@@ -0,0 +1,13 @@
+param($dir)
+
+# Second extraction
+$output = 7z x $dir\tools.zip "-o$dir"
+rm $dir\tools.zip
+
+# Convert .pack to .jar, and removes .pack
+ls "$dir" -recurse | ? name -match '^[^_].*?\.(?i)pack$' | % {
+ $name = $_.fullname -replace '\.(?i)pack$', ''
+ $pack = "$name.pack"
+ $jar = "$name.jar"
+ & "$dir\bin\unpack200.exe" "-r" "$pack" "$jar"
+}
diff --git a/scripts/portable.ps1 b/scripts/portable.ps1
new file mode 100644
index 00000000000..ff09fb46b47
--- /dev/null
+++ b/scripts/portable.ps1
@@ -0,0 +1,29 @@
+<#
+.SYNOPSIS
+ Universal portable mode enabler
+ IDE subdirectory is needed.
+.PARAMETER Directory
+ Current '$dir' of application
+.PARAMETER Persist
+ Persist directory of application
+#>
+param([Parameter(Mandatory)][String] $Directory, [Parameter(Mandatory)][String] $Persist)
+
+$properties = Join-Path 'IDE' 'bin\idea.properties'
+
+if (!(Join-Path $Persist $properties | Test-Path)) {
+ Write-Host "File $properties does not exists. Creating." -ForegroundColor 'Yellow'
+
+ $fullProp = Join-Path $Directory $properties
+ $currentForward = (Split-Path $Directory | Join-Path -ChildPath 'current') -replace '\\', '/'
+ $profileDir = "$currentForward/profile"
+
+ $CONT = Get-Content $fullProp
+ # Set portable configuration
+ $CONT = $CONT -replace '^#\s*(idea.config.path=).*$', "`$1$profileDir/config"
+ $CONT = $CONT -replace '^#\s*(idea.system.path=).*$', "`$1$profileDir/system"
+ $CONT = $CONT -replace '^#\s*(idea.plugins.path=).*$', '$1${idea.config.path}/plugins'
+ $CONT = $CONT -replace '^#\s*(idea.log.path=).*$', '$1${idea.system.path}/log'
+
+ Set-Content -LiteralPath $fullProp -Value $CONT -Encoding 'Ascii' -Force
+}
diff --git a/scripts/potplayer/potplayer64-settings.reg b/scripts/potplayer/potplayer64-settings.reg
new file mode 100644
index 00000000000..9c88790ad29
--- /dev/null
+++ b/scripts/potplayer/potplayer64-settings.reg
@@ -0,0 +1,82 @@
+Windows Registry Editor Version 5.00
+
+[HKEY_CURRENT_USER\Software\Daum\PotPlayerMini64]
+
+[HKEY_CURRENT_USER\Software\Daum\PotPlayerMini64\Settings]
+;基本——不使用自动更新
+"CheckAutoUpdate"=dword:00000000
+;基本——取消“预先下载更新文件”
+"AutoDownloadFile"=dword:00000000
+;基本——全选“最小化后暂停/还原时播放”
+"PauseOnMin"=dword:00000001
+;基本——基于屏幕中心区域调整窗口尺寸
+"MoveSizeByCenter"=dword:00000001
+;基本——取消“使用窗体吸附功能”
+"UseMagWindow"=dword:00000000
+;基本——关闭时还原为默认尺寸
+"DefSizeOnClose"=dword:00000001
+;基本——启始——播放器启动后——窗口位置“默认位置”
+"StartCenterPos"=dword:00000003
+;基本——皮肤/配色——弹出式菜单“系统菜单”
+"SkinPopupMenuStyle"=dword:00000001
+;基本——简索——取消“播放文件夹里的所有文件”、“播放文件夹里的所有文件(含子目录)”、“收藏夹”、“当前播放列表”、“最近播放”
+"SO_FolderOpen"=dword:00000000
+"SO_FolderOpenSub"=dword:00000000
+"SO_Fav"=dword:00000000
+"SO_Playlist"=dword:00000000
+"SO_History"=dword:00000000
+;基本——消息——屏显消息字体设置
+"MessageFontName"="微软雅黑"
+"MessageFontSize"=dword:0000000c
+"MessageTextColor"=dword:ff00ffff
+"MessageOutlineColor"=dword:c8ff8000
+;播放——播放结束后关闭
+"CloseOnComplete"=dword:00000001
+;播放——取消“在进度条上显示书签/章节标记”
+"DisplayBookmark"=dword:00000000
+;播放——列表——取消“记忆近期播放名单/URL地址”
+"SavePlayList"=dword:00000000
+;字幕——取消“VMR/EVR中平滑输出字幕”
+"UseCaptionBinFilter"=dword:00000000
+;字幕——最大分辨率“屏幕分辨率”
+"CaptionMaxRes"=dword:00000001
+;字幕——字幕缓冲量“0”
+"CaptionQueueSize"=dword:00000000
+;字幕——语言/同步/其他——首选语言“清空”
+"PrefCapLang"=""
+;字幕——语言/同步/其他——取消“记忆用户的语言选择”
+"SaveCaptionSel"=dword:00000000
+;滤镜——内置图像处理滤镜设置——激活条件“不使用”
+"VideoTransformUseMode"=dword:00000002
+;滤镜——源滤镜/分离器——内置源滤镜/分离器设置——取消“自动加载媒体内所带字体”
+"InstallEmbeddedFont"=dword:00000000
+;滤镜——视频解码器——内置解码器/DXVA设置——使用硬件加速(DXVA)
+"IntDXVAUseMode"=dword:00000001
+;滤镜——视频解码器——内置解码器/DXVA设置——解码器——H.265/HEVC“FFmpeg64.dll”
+;【注: 此设置需要FFmpeg64.dll存在。实现效果: 可切换“内置FFmpeg HEVC H/W 解码器”(如果支持,且开启DXVA的前提下)∕“FFmpeg64.dll”(不支持内置FFmpeg HEVC H/W 解码器,或没有开启DXVA的前提下)】
+"IntH265_0"=dword:00000001
+;声音——语言/同步/其他——取消“记忆用户的语言/流选择”
+"SaveAudioSel"=dword:00000000
+;存档——采集类文件夹——截图: 条件允许时以播放目录存档
+"VideoCaptureFolderSelf"=dword:00000001
+;存档——采集类文件夹——视频录制: 条件允许时以播放目录存档
+"MovieCaptureFolderSelf"=dword:00000001
+;存档——采集类文件夹——声音录制: 条件允许时以播放目录存档
+"AudioCaptureFolderSelf"=dword:00000001
+;关联——取消“显示播放列表菜单”
+"FileLinkEnqueue"=dword:00000000
+;关联——取消“显示播放菜单”
+"FileLinkPlay"=dword:00000000
+;右键菜单“播放——章节/书签——将书签保存在视频文件夹内”
+"BookmarkSaveExternal"=dword:00000001
+;右键菜单“视频——图像截取——创建缩略图——保存到影片所在文件夹中”
+"ThumbnailSameDir"=dword:00000001
+;右键菜单“视频——图像截取——创建缩略图——如有字幕则输出”
+"ThumbnailCaption"=dword:00000001
+;右键菜单“视频——图像截取——以播放时间命名文件”
+"VideoCaptureTime"=dword:00000001
+;右键菜单“视频——图像截取——同时截取字幕(如果有)”
+"CaptureWithCaption"=dword:00000001
+;预设自定义尺寸为1680×945(按9切换)
+"UserDefSizeX"=dword:00000690
+"UserDefSizeY"=dword:000003b1
diff --git a/scripts/python/pypi-mirror.ps1 b/scripts/python/pypi-mirror.ps1
new file mode 100644
index 00000000000..deac992bb24
--- /dev/null
+++ b/scripts/python/pypi-mirror.ps1
@@ -0,0 +1,103 @@
+#!/usr/bin/env pwsh -c
+
+<#
+.DESCRIPTION
+ Pypi mirror.
+
+.PARAMETER mirror
+ The mirror to use.
+ * tuna (default)
+ * ustc
+ * ali
+ * tencent
+ * huawei
+ * 163
+ * douban
+
+.PARAMETER clear
+ Clear the mirror.
+
+.PARAMETER help
+ Show help.
+
+.Example
+ > pypi-mirror.ps1 -mirror tuna
+ > pypi-mirror.ps1 -clear
+#>
+
+param(
+ [Alias('m')]
+ [ValidateSet('tuna', 'ustc', 'ali', 'tencent', 'huawei', '163', 'douban')]
+ [string]$mirror = 'tuna',
+
+ [Alias('c')]
+ [switch]$clear,
+
+ [Alias('h')]
+ [switch]$help
+)
+
+if ($help) {
+ Write-Host @'
+Usage: pypi-mirror.ps1 [OPTION]
+
+Optional options:
+ -m, --mirror
+ The mirror to use.
+ * tuna (default)
+ * ustc
+ * ali
+ * tencent
+ * huawei
+ * 163
+ * douban
+ -c, --clear
+ Clear the mirror.
+ -h, --help
+ Show help.
+
+.Example
+ > pypi-mirror.ps1 -mirror tuna
+ > pypi-mirror.ps1 -clear
+'@
+ exit 0
+}
+
+if ($mirror) {
+ if ($mirror -eq 'tuna') {
+ $mirror_url = 'https://pypi.tuna.tsinghua.edu.cn/simple'
+ $index_url = 'pypi.tuna.tsinghua.edu.cn'
+ } elseif ($mirror -eq 'ustc') {
+ $mirror_url = 'https://mirrors.ustc.edu.cn/pypi/web/simple'
+ $index_url = 'mirrors.ustc.edu.cn'
+ } elseif ($mirror -eq 'ali') {
+ $mirror_url = 'https://mirrors.aliyun.com/pypi/simple/'
+ $index_url = 'mirrors.aliyun.com'
+ } elseif ($mirror -eq 'tencent') {
+ $mirror_url = 'https://mirrors.cloud.tencent.com/pypi/simple'
+ $index_url = 'mirrors.cloud.tencent.com'
+ } elseif ($mirror -eq 'huawei') {
+ $mirror_url = 'https://repo.huaweicloud.com/repository/pypi/simple'
+ $index_url = 'repo.huaweicloud.com'
+ } elseif ($mirror -eq '163') {
+ $mirror_url = 'https://mirrors.163.com/pypi/simple/'
+ $index_url = 'mirrors.163.com'
+ } elseif ($mirror -eq 'douban') {
+ $mirror_url = 'http://pypi.douban.com/simple/'
+ $index_url = 'pypi.douban.com'
+ } else {
+ Write-Host 'Unknown mirror.'
+ exit 1
+ }
+
+ python -m pip install --trusted-host https://${index_url} -i ${mirror_url} --upgrade pip
+ pip config set global.index-url ${mirror_url}
+ pip config set global.trusted-host ${index_url}
+ pip config set global.timeout 120
+}
+
+if ($clear) {
+ pip config set global.index-url https://pypi.org/simple
+ pip config set global.trusted-host pypi.org
+ pip config set global.timeout 120
+}
diff --git a/scripts/qq/install.bat b/scripts/qq/install.bat
new file mode 100644
index 00000000000..8942223dbbf
--- /dev/null
+++ b/scripts/qq/install.bat
@@ -0,0 +1,102 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im QQSetupEx.exe >NUL 2>NUL
+taskkill /f /im QQProtect.exe >NUL 2>NUL
+taskkill /f /im TXPlatform.exe >NUL 2>NUL
+taskkill /f /im QQExternal.exe >NUL 2>NUL
+taskkill /f /im QQScLauncher.exe >NUL 2>NUL
+taskkill /f /im QQGuild.exe /t >NUL 2>NUL
+taskkill /f /im QQApp.exe >NUL 2>NUL
+taskkill /f /im QQ.exe /t >NUL 2>NUL
+
+::注册网页关联、表情包类型、下载组件等协议
+if exist Bin\TXPlatform.exe Bin\TXPlatform.exe /RegServer
+if exist Bin\AppCom.dll regsvr32 /s Bin\AppCom.dll
+if exist Bin\Common.dll regsvr32 /s Bin\Common.dll
+if exist Bin\KernelUtil.dll regsvr32 /s Bin\KernelUtil.dll
+if exist Bin\TXPFProxy.dll regsvr32 /s Bin\TXPFProxy.dll
+if exist Bin\CPHelper.dll regsvr32 /s Bin\CPHelper.dll
+if exist Bin\Timwp.dll regsvr32 /s Bin\Timwp.dll
+if exist Bin\DownloadProxyPS.dll regsvr32 /s Bin\DownloadProxyPS.dll
+if exist Bin\QQExternal.exe Bin\QQExternal.exe /SetupRegister
+
+::注册腾讯软件运行库组件
+if exist Bin\TXSSO regsvr32 /s Bin\TXSSO\Bin\SSOLUIControl.dll
+if exist Bin\TXSSO regsvr32 /s Bin\TXSSO\Bin\npSSOAxCtrlForPTLogin.dll
+
+::注册浏览器快速登陆组件
+if exist Bin\TXSSO\Npchrome regsvr32 /s Bin\TXSSO\Npchrome\npactivex.dll
+
+::注册群共享微云上传组件
+regsvr32 /s Plugin\Com.Tencent.NetDisk\Bin\QQDisk\Bin\TXFTNActiveX.dll
+
+::清除注册组件及相关残留数据
+rd/s/q "%AppData%\od" 2>NUL
+del/f/q "%tmp%\*.tvl">NUL 2>NUL
+del/f/q "%tmp%\*.tsd">NUL 2>NUL
+del/f/q "%tmp%\ts*.dat">NUL 2>NUL
+del/f/q "%tmp%\QQSa*.exe">NUL 2>NUL
+rd/s/q "%AppData%\qq_guild"2>NUL
+rd/s/q "%AppData%\Tencent\OD" 2>NUL
+rd/s/q "%AppData%\Tencent\QQ" 2>NUL
+rd/s/q "%AppData%\Tencent\IM" 2>NUL
+rd/s/q "%AppData%\Tencent\Logs"2>NUL
+rd/s/q "%AppData%\Tencent\TXSSO"2>NUL
+rd/s/q "%AppData%\Tencent\QTalk"2>NUL
+rd/s/q "%AppData%\Tencent\libsdk"2>NUL
+rd/s/q "%AppData%\Tencent\beacon"2>NUL
+rd/s/q "%AppData%\Tencent\QQLite"2>NUL
+rd/s/q "%AppData%\QQAppAssistant"2>NUL
+rd/s/q "%AppData%\Tencent\Common"2>NUL
+rd/s/q "%AppData%\Tencent\SafeBas"2>NUL
+rd/s/q "%AppData%\Tencent\QQPCMGR"2>NUL
+rd/s/q "%APPDATA%\Tencent\QQDoctor"2>NUL
+rd/s/q "%AppData%\Tencent\QQTempSys"2>NUL
+rd/s/q "%AppData%\Tencent\Tencentdl"2>NUL
+rd/s/q "%AppData%\Tencent\DeskUpdate"2>NUL
+rd/s/q "%AppData%\Tencent\QQDownload"2>NUL
+rd/s/q "%AppData%\Tencent\QQ\QQProtect"2>NUL
+rd/s/q "%AppData%\Tencent\AndroidAssist"2>NUL
+rd/s/q "%AppData%\Tencent\AndroidServer"2>NUL
+rd/s/q "%AppData%\Tencent\QQPhoneManager"2>NUL
+rd/s/q "%AppData%\Tencent\QQ\commonf_inst"2>NUL
+rd/s/q "%AppData%\Tencent\QQPhoneAssistant"2>NUL
+rd/s/q "%AppData%\Tencent\QQ\QQAntiPhishing"2>NUL
+del/f/q "%AppData%\Tencent\QQCall*.exe">NUL 2>NUL
+rd/s/q "%LocalAppData%\Tencent\QQGuild"2>NUL
+rd/s/q "%LocalAppData%\qq_guild-updater"2>NUL
+rd/s/q "%LocalAppData%\Tencent\MiniBrowser"2>NUL
+rd/s/q "%Public%\Documents\Tencent"2>NUL
+for /f "skip=2 tokens=3 " %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v personal') do (
+for /f "delims=*" %%j in ('echo %%i') do rd /s /q "%%j\Tencent Files\All Users\QQ\Misc\OperateFace" >NUL 2>NUL)
+
+IF NOT EXIST "%ProgramW6432%" (
+::标记软件检测路径(安装视频留言和影音播放等组件下载需要)
+reg add "HKLM\Software\Tencent\QQ2009" /f /v "Install" /d "%~dp0\" >NUL 2>NUL
+::标记软件版本号(企业类型网页会话需要,CRM组件也需要保留)
+reg add "HKLM\Software\Tencent\QQ2009" /f /v "version" /d "59.11.0.28774.0" >NUL 2>NUL
+reg add "HKLM\Software\Tencent\QQ2009" /f /v "rversion" /d "0.27236.0.28774.0" >NUL 2>NUL
+) ELSE (
+reg add "HKLM\Software\Tencent\QQ2009" /f /v "Install" /d "%~dp0\" /reg:32 >NUL 2>NUL
+reg add "HKLM\Software\Tencent\QQ2009" /f /v "version" /d "59.11.0.28774.0" /reg:32 >NUL 2>NUL
+reg add "HKLM\Software\Tencent\QQ2009" /f /v "rversion" /d "0.27236.0.28774.0" /reg:32 >NUL 2>NUL
+)
+::标记QQ频道检测路径
+reg add "HKCU\SOFTWARE\Tencent\QQGuild" /f /v "KeepShortcuts" /d "true" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Tencent\QQGuild" /f /v "ShortcutName" /d "QQGuild" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Tencent\QQGuild" /f /v "DisplayVersion" /d "1.3.14-bk.4022" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Tencent\QQGuild" /f /v "InstallLocation" /d "%LocalAppData%\Tencent\QQGuild\1.3.14-bk.4022" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Tencent\QQGuild" /f /v "Executable" /d "%LocalAppData%\Local\Tencent\QQGuild\1.3.14-bk.4022\QQGuild.exe" >NUL 2>NUL
+
+::解决Windows 7或更高版开启UAC用户账户控制清空下数据保存位置更改失败问题
+ver|findstr "\<6\.[0-9]\.[0-9][0-9]*\> \<10\.[0-9]\.[0-9][0-9]*\>" >NUL && (
+SET Data=^& echo
+if not exist "%Public%\Documents\Tencent\QQ\UserDataInfo.ini" md "%Public%\Documents\Tencent\QQ" 2>NUL
+if not exist "%Public%\Documents\Tencent\QQ\UserDataInfo.ini" echo.%Data%>>"%Public%\Documents\Tencent\QQ\UserDataInfo.ini" 2>NUL
+)
+
+::创建桌面快捷方式
+::mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\腾讯QQ.lnk""):b.TargetPath=""%~sdp0Bin\QQScLauncher.exe"":b.WorkingDirectory=""%~sdp0Bin"":b.Save:close")
+
+ECHO.&ECHO 完成 &TIMEOUT /t 3 >NUL&EXIT
diff --git a/scripts/qq/uninstall.bat b/scripts/qq/uninstall.bat
new file mode 100644
index 00000000000..104514253b1
--- /dev/null
+++ b/scripts/qq/uninstall.bat
@@ -0,0 +1,175 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im QQSetupEx.exe >NUL 2>NUL
+taskkill /f /im QQProtect.exe >NUL 2>NUL
+taskkill /f /im TXPlatform.exe >NUL 2>NUL
+taskkill /f /im QQExternal.exe >NUL 2>NUL
+taskkill /f /im GVStarter.exe >NUL 2>NUL
+taskkill /f /im QQScLauncher.exe >NUL 2>NUL
+taskkill /f /im QQGuild.exe /t >NUL 2>NUL
+taskkill /f /im QQApp.exe >NUL 2>NUL
+taskkill /f /im QQ.exe /t >NUL 2>NUL
+
+::卸载相关组件
+regsvr32 /s /u Bin\TXSSO\Bin\SSOCommon.dll
+regsvr32 /s /u Bin\TXSSO\Npchrome\npactivex.dll
+regsvr32 /s /u Bin\TXSSO\Bin\npSSOAxCtrlForPTLogin.dll
+if exist Bin\Timwp.dll regsvr32 /s /u Bin\Timwp.dll
+if exist Bin\AppCom.dll regsvr32 /s /u Bin\AppCom.dll
+if exist Bin\CPHelper.dll regsvr32 /s /u Bin\CPHelper.dll
+if exist Bin\TXPFProxy.dll regsvr32 /s /u Bin\TXPFProxy.dll
+if exist Bin\KernelUtil.dll regsvr32 /s /u Bin\KernelUtil.dll
+if exist Bin\TXPlatform.exe Bin\TXPlatform.exe /UnregServer
+if exist Bin\DownloadProxyPS.dll regsvr32 /s /u Bin\DownloadProxyPS.dll
+regsvr32 /s /u Plugin\Com.Tencent.NetDisk\Bin\QQDisk\Bin\TXFTNActiveX.dll
+
+if exist "%AppData%\Tencent\QQ\QQAntiPhishing\AccountProtect.dll" (
+regsvr32 /s /u "%AppData%\Tencent\QQ\QQAntiPhishing\AccountProtect.dll"
+)
+IF NOT EXIST "%ProgramW6432%" (
+if exist ShellExt\QQShellExt.dll regsvr32 /s /u ShellExt\QQShellExt.dll
+if exist "%ProgramFiles%\Tencent\QzoneMusic\QzoneMusic.exe" "%ProgramFiles%\Tencent\QzoneMusic\QzoneMusic.exe" /UnRegServer
+if exist "%ProgramFiles%\Tencent\QzoneMusic\QzoneMusicUninst.exe" "%ProgramFiles%\Tencent\QzoneMusic\zoneMusicUninst.exe" /S
+if exist "%CommonProgramFiles%\Tencent\Npchrome\npactivex.dll" regsvr32 /s /u "%CommonProgramFiles%\Tencent\Npchrome\npactivex.dll"
+rd /s/q "%CommonProgramFiles%\Tencent\QQDownload"2>NUL
+rd /s/q "%CommonProgramFiles%\Tencent\Npchrome"2>NUL
+rd /s/q "%CommonProgramFiles%\Tencent\TXFTN"2>NUL
+rd /s/q "%ProgramFiles%\Tencent\QzoneMusic"2>NUL
+del /f/q "%WinDir%\System32\TXGYMail*.dll" >NUL 2>NUL
+) ELSE (
+if exist ShellExt\QQShellExt64.dll regsvr32 /s /u ShellExt\QQShellExt64.dll
+if exist "%ProgramFiles(x86)%\Tencent\QzoneMusic\QzoneMusic.exe" "%ProgramFiles(x86)%\Tencent\QzoneMusic\QzoneMusic.exe" /UnRegServer
+if exist "%ProgramFiles(x86)%\Tencent\QzoneMusic\QzoneMusicUninst.exe" "%ProgramFiles(x86)%\Tencent\QzoneMusic\zoneMusicUninst.exe" /S
+if exist "%ProgramFiles(x86)%\Tencent\Qzone\npQQPhotoDrawEx.dll" regsvr32 /s /u "%ProgramFiles(x86)%\Tencent\Qzone\npQQPhotoDrawEx.dll"
+if exist "%CommonProgramFiles(x86)%\Tencent\Npchrome\npactivex.dll" regsvr32 /s /u "%CommonProgramFiles(x86)%\Tencent\Npchrome\npactivex.dll"
+rd /s/q "%CommonProgramFiles(x86)%\Tencent\QQDownload"2>NUL
+rd /s/q "%CommonProgramFiles(x86)%\Tencent\Npchrome"2>NUL
+rd /s/q "%CommonProgramFiles(x86)%\Tencent\TXFTN"2>NUL
+rd /s/q "%ProgramFiles(x86)%\Tencent\QzoneMusic"2>NUL
+rd /s/q "%ProgramFiles(x86)%\Tencent\Qzone"2>NUL
+del /f/q "%WinDir%\SysWOW64\TXGYMail*.dll" >NUL 2>NUL
+)
+
+::清除卸载组件及相关残留数据
+rd/s/q "%AppData%\od" 2>NUL
+del/f/q "%tmp%\*.tvl">NUL 2>NUL
+del/f/q "%tmp%\*.tsd">NUL 2>NUL
+del/f/q "%tmp%\ts*.dat">NUL 2>NUL
+del/f/q "%tmp%\QQSa*.exe">NUL 2>NUL
+rd/s/q "%AppData%\qq_guild"2>NUL
+rd/s/q "%AppData%\Tencent\OD" 2>NUL
+rd/s/q "%AppData%\Tencent\QQ" 2>NUL
+rd/s/q "%AppData%\Tencent\IM" 2>NUL
+rd/s/q "%AppData%\Tencent\Logs"2>NUL
+rd/s/q "%AppData%\Tencent\TXSSO"2>NUL
+rd/s/q "%AppData%\Tencent\QTalk"2>NUL
+rd/s/q "%AppData%\Tencent\beacon"2>NUL
+rd/s/q "%AppData%\Tencent\libsdk"2>NUL
+rd/s/q "%AppData%\Tencent\QQLite"2>NUL
+rd/s/q "%AppData%\QQAppAssistant"2>NUL
+rd/s/q "%AppData%\Tencent\Common"2>NUL
+rd/s/q "%AppData%\Tencent\SafeBas"2>NUL
+rd/s/q "%AppData%\Tencent\QQPCMGR"2>NUL
+rd/s/q "%APPDATA%\Tencent\QQDoctor"2>NUL
+rd/s/q "%AppData%\Tencent\QQTempSys"2>NUL
+rd/s/q "%AppData%\Tencent\Tencentdl"2>NUL
+rd/s/q "%AppData%\Tencent\DeskUpdate"2>NUL
+rd/s/q "%AppData%\Tencent\QQDownload"2>NUL
+rd/s/q "%AppData%\Tencent\QQ\QQProtect"2>NUL
+rd/s/q "%AppData%\Tencent\AndroidAssist"2>NUL
+rd/s/q "%AppData%\Tencent\AndroidServer"2>NUL
+rd/s/q "%AppData%\Tencent\QQPhoneManager"2>NUL
+rd/s/q "%AppData%\Tencent\QQ\commonf_inst"2>NUL
+rd/s/q "%AppData%\Tencent\QQPhoneAssistant"2>NUL
+rd/s/q "%AppData%\Tencent\QQ\QQAntiPhishing"2>NUL
+del/f/q "%AppData%\Tencent\QQCall*.exe">NUL 2>NUL
+rd /s/q "%ProgramData%\Tencent\OD" 2>NUL
+rd/s/q "%LocalAppData%\Tencent\QQGuild"2>NUL
+rd/s/q "%LocalAppData%\qq_guild-updater"2>NUL
+rd/s/q "%LocalAppData%\Tencent\MiniBrowser"2>NUL
+
+::清除桌面和开始菜单快捷方式
+ver|findstr "5\.[0-9]\.[0-9][0-9]*" >NUL && (
+del/q "%UserProfile%\桌面\腾讯QQ.lnk" >NUL 2>NUL
+del/q "%AllUsersProfile%\桌面\腾讯QQ.lnk" >NUL 2>NUL
+rd/s/q "%UserProfile%\「开始」菜单\程序\TencentVideoMPlayer"2>NUL
+rd/s/q "%AllUsersProfile%\「开始」菜单\程序\TencentVideoMPlayer"2>NUL
+rd/s/q "%UserProfile%\「开始」菜单\程序\腾讯软件\腾讯QQ"2>NUL
+rd/s/q "%AllUsersProfile%\「开始」菜单\程序\腾讯软件\腾讯QQ"2>NUL )
+ver|findstr "\<6\.[0-9]\.[0-9][0-9]*\> \<10\.[0-9]\.[0-9][0-9]*\>" >NUL && (
+del/q "%Public%\Desktop\腾讯QQ.lnk" >NUL 2>NUL
+del/q "%UserProfile%\Desktop\腾讯QQ.lnk" >NUL 2>NUL
+rd/s/q "%AppData%\Microsoft\Windows\Start Menu\Programs\TencentVideoMPlayer"2>NUL
+rd/s/q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\TencentVideoMPlayer"2>NUL
+rd/s/q "%AppData%\Microsoft\Windows\Start Menu\Programs\腾讯软件\腾讯QQ"2>NUL
+rd/s/q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\腾讯软件\腾讯QQ"2>NUL )
+
+::清除系统程序卸载项
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\QQ" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\QQ" /f /reg:32 >NUL 2>NUL
+
+::清除相关注册表键值
+reg delete "HKLM\SOFTWARE\Classes\.eif" /F >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.eip" /F >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.kipx" /F >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\KIPX.File" /F >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\EMOTION.File" /F >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\EMOTION.Package" /F >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\DownloadProxy.EXE" /F >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\DownloadProxy.Downloader" /F >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\DownloadProxy.Downloader.1" /F >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\QQ" /F >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\Report" /F >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\Plugin" /F >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\QQ2009" /F >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Tencent\QQGuild" /F >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\TodayDo" /F >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\QQProtect" /F>NUL 2>NUL
+reg delete "HKCU\Software\Tencent\PlatForm_Type_List" /F >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\PLATFORM_CLSID_LIST" /F >NUL 2>NUL
+reg delete "HKCU\Software\Classes\EMOTION.File" /F >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\THEMEX.Package" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\EMOTION.Package" /F >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\AndroidAssistant" /F>NUL 2>NUL
+reg delete "HKEY_USERS\.DEFAULT\Software\Tencent\QQ2009" /F>NUL 2>NUL
+reg delete "HKLM\Software\Classes\QQPet" /F>NUL 2>NUL
+reg delete "HKLM\Software\Tencent\QQ2009" /F >NUL 2>NUL
+reg delete "HKLM\Software\Classes\Tencent" /F >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\QQPet" /F /reg:32 >NUL 2>NUL
+reg delete "HKLM\Software\Tencent\QQ2009" /F /reg:32 >NUL 2>NUL
+reg delete "HKLM\Software\Classes\Tencent" /F /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Tencent\PlatForm_Type_List" /F>NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Tencent\QQPhotoDrawEx" /F /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Tencent\BackupDownloader" /F /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Tencent\PlatForm_Type_List" /F /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Tencent\QQPhotoDrawEx" /F>NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Tencent\BackupDownloader" /F>NUL 2>NUL
+reg delete "HKLM\SOFTWARE\encent\PlatForm_Type_List" /F>NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Tracing\QQ_RASAPI32" /F>NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Tracing\QQ_RASAPI32" /F /reg:32 >NUL 2>NUL
+rd/s/q "%AppData%\Tencent\Logs"2>NUL
+rd/s/q "%AppData%\Tencent\QQ" 2>NUL
+
+::删除软件以及当前用户数据
+@REM rd/s/q "%Public%\Documents\Tencent"2>NUL
+@REM FOR /F "skip=2 tokens=3 " %%i IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v personal') DO (
+@REM FOR /F "delims=*" %%j IN ('ECHO;%%i') DO RD /S/Q "%%j\Tencent Files" >NUL 2>NUL)
+@REM RD /S/Q "%AppData%\Tencent\Users" >NUL 2>NUL
+@REM IF EXIST ShellExt DEL /F/Q "ShellExt\*.*" >NUL 2>NUL
+@REM IF EXIST ShellExt\QQShellExt.dll ren ShellExt\QQShellExt.dll "QQShellExt.dll.%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+@REM IF EXIST ShellExt\QQShellExt64.dll ren ShellExt\QQShellExt64.dll "QQShellExt64.dll.%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+@REM PUSHD .. & RD /S/Q "%~DP0" >NUL 2>NUL
+
+::删除软件保留当前用户数据
+IF EXIST ShellExt DEL /F/Q "ShellExt\*.*" >NUL 2>NUL
+IF EXIST ShellExt\QQShellExt.dll ren ShellExt\QQShellExt.dll "QQShellExt.dll.%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+IF EXIST ShellExt\QQShellExt64.dll ren ShellExt\QQShellExt64.dll "QQShellExt64.dll.%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+IF EXIST "users" (
+FOR /F "delims=*" %%a IN ('dir /a/b *.*^|findstr /v /i "users$"') DO (
+RD /S/Q "%%a" >NUL 2>NUL & DEL /F/Q "%%a" >NUL 2>NUL)
+) ELSE (
+IF EXIST ShellExt DEL /F/Q "ShellExt\*.*" >NUL 2>NUL
+IF EXIST ShellExt\QQShellExt.dll ren ShellExt\QQShellExt.dll "QQShellExt.dll.%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+IF EXIST ShellExt\QQShellExt64.dll ren ShellExt\QQShellExt64.dll "QQShellExt64.dll.%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+PUSHD .. & RD /S/Q "%~DP0" >NUL 2>NUL)
diff --git a/scripts/qqmusic/install.bat b/scripts/qqmusic/install.bat
new file mode 100644
index 00000000000..49c86735483
--- /dev/null
+++ b/scripts/qqmusic/install.bat
@@ -0,0 +1,44 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im QQMusic* >NUL 2>NUL
+taskkill /f /im QMWeiyun.exe >NUL 2>NUL
+taskkill /f /im qmbrowser.exe >NUL 2>NUL
+taskkill /f /im QMSystemEQ.exe >NUL 2>NUL
+taskkill /f /im QMDriverHelper* >NUL 2>NUL
+taskkill /f /im StartDesktopProjection* >NUL 2>NUL
+
+::注册腾讯软件运行库组件
+regsvr32 /s TXSSO\Bin\SSOCommon.dll
+regsvr32 /s TXSSO\Bin\SSOLUIControl.dll
+regsvr32 /s TXSSO\Bin\npSSOAxCtrlForPTLogin.dll
+
+::注册浏览器快速登陆组件
+regsvr32 /s QQMusic_Login.dll
+
+::注册相关组件
+QQMusicSvr.exe /RegServer
+QQMusicAgent.exe /regqmfiles
+QQMusicAgent.exe /prefetch "%~dp0\"
+QQMusicAgent.exe /collecthardwareinfo
+QQMusicAgent.exe /CheckDirect2D
+QQMusicAgent.exe /CheckDirect3D9ForMVPlay
+QQMusicAgent.exe /writehardwareinfo
+
+::设置默认播放器
+::QQMusicAgent.exe /regqmfiles
+::QQMusicAgent.exe /regmediafiles
+
+::清除注册组件残留文件
+rd/s/q "%TEMP%\QQMusicInstaller"2>NUL
+rd/s/q "%AppData%\Tencent\Logs"2>NUL
+del/f/q "%AppData%\Tencent\QQMusic\updateinfo.ini"2>NUL
+
+::软件路径检测键值
+IF NOT EXIST "%ProgramW6432%" (
+reg add "HKLM\Software\Tencent\QQMusic" /f /v "Install" /d "%~dp0\" >NUL
+) ELSE (
+reg add "HKLM\Software\Tencent\QQMusic" /f /v "Install" /d "%~dp0\" /reg:32 >NUL
+)
+
+ECHO.&ECHO Done.
diff --git a/scripts/qqmusic/uninstall.bat b/scripts/qqmusic/uninstall.bat
new file mode 100644
index 00000000000..0bcf20039eb
--- /dev/null
+++ b/scripts/qqmusic/uninstall.bat
@@ -0,0 +1,105 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im QQMusic* >NUL 2>NUL
+taskkill /f /im QMWeiyun.exe >NUL 2>NUL
+taskkill /f /im QMSystemEQ.exe >NUL 2>NUL
+taskkill /f /im QMDriverHelper* >NUL 2>NUL
+taskkill /f /im StartDesktopProjection* >NUL 2>NUL
+
+::卸载组件
+regsvr32 /s /u QQMusic_Login.dll
+regsvr32 /s /u TXSSO\Bin\SSOCommon.dll
+regsvr32 /s /u TXSSO\Bin\SSOLUIControl.dll
+regsvr32 /s /u TXSSO\Bin\npSSOAxCtrlForPTLogin.dll
+start /wait QQMusicSvr.exe /UnRegServer
+start /wait QQMusicAgent.exe /unregmediafilesForUninstall
+
+::清除残留
+rd/s/q "%AppData%\Tencent\Logs"2>NUL
+rd/s/q "%AppData%\Tencent\QQMusic"2>NUL
+rd/s/q "%AppData%\Macromedia\Flash Player\#SharedObjects\MHPJELSJ\imgcache.qq.com"2>NUL
+
+::清除桌面和开始菜单快捷方式
+ver|findstr "5\.[0-9]\.[0-9][0-9]*" >NUL && (
+del/q "%UserProfile%\桌面\QQ音乐.lnk" >NUL 2>NUL
+del/q "%AllUsersProfile%\桌面\QQ音乐.lnk" >NUL 2>NUL
+rd/s/q "%UserProfile%\「开始」菜单\程序\TencentVideoMPlayer"2>NUL
+rd/s/q "%AllUsersProfile%\「开始」菜单\程序\TencentVideoMPlayer"2>NUL
+rd/s/q "%UserProfile%\「开始」菜单\程序\腾讯软件\QQ音乐"2>NUL
+rd/s/q "%AllUsersProfile%\「开始」菜单\程序\腾讯软件\QQ音乐"2>NUL )
+ver|findstr "\<6\.[0-9]\.[0-9][0-9]*\> \<10\.[0-9]\.[0-9][0-9]*\>" >NUL && (
+del/q "%Public%\Desktop\QQ音乐.lnk" >NUL 2>NUL
+del/q "%UserProfile%\Desktop\QQ音乐.lnk" >NUL 2>NUL
+rd/s/q "%AppData%\Microsoft\Windows\Start Menu\Programs\TencentVideoMPlayer"2>NUL
+rd/s/q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\TencentVideoMPlayer"2>NUL
+rd/s/q "%AppData%\Microsoft\Windows\Start Menu\Programs\腾讯软件\QQ音乐"2>NUL
+rd/s/q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\腾讯软件\QQ音乐"2>NUL )
+
+::清除系统程序卸载项
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\QQMusic" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\QQMusic" /f /reg:32 >NUL 2>NUL
+
+::清除注册表
+reg delete "HKCU\Software\Tencent\QQMusic" /F>NUL 2>NUL
+reg delete "HKLM\Software\Tencent\QQMusic" /F>NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Tencent\Components" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Tencent\QQMusic" /f /reg:32 >NUL 2>NUL
+
+reg delete "HKCU\Software\Classes\.mflac" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.mgg" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.qmc0" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.qmc2" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.qmc3" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.qmc4" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.qmc6" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.qmc8" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.qmcflac" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.qsc3" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.tkm" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\QQMusic.mflac" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\QQMusic.mgg" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\QQMusic.qmc0" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\QQMusic.qmc2" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\QQMusic.qmc3" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\QQMusic.qmc4" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\QQMusic.qmc6" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\QQMusic.qmc8" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\QQMusic.qmcflac" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\QQMusic.qsc3" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\QQMusic.tkm" /f >NUL 2>NUL
+
+reg delete "HKLM\SOFTWARE\Classes\.mflac" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.mgg" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.qmc0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.qmc2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.qmc3" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.qmc4" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.qmc6" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.qmc8" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.qmcflac" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.qsc3" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.tkm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Applications\DiagTools.exe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Applications\QQMusicUninst.exe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\QQMusic.mflac" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\QQMusic.mgg" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\QQMusic.qmc0" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\QQMusic.qmc2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\QQMusic.qmc3" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\QQMusic.qmc4" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\QQMusic.qmc6" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\QQMusic.qmc8" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\QQMusic.qmcflac" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\QQMusic.qsc3" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\QQMusic.tkm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION" /v "QQMusic.exe" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION" /v "QQMusicIE.exe" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DISABLE_NAVIGATION_SOUNDS" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Internet Explorer\ProtocolExecute\tencent" /f >NUL 2>NUL
+
+ECHO.&ECHO Done.
+ECHO.&ECHO Modded by www.423down.com
+
+for %%a in (C D E F G H I G K L M N O P Q R S T U V W X Y Z) do rd /s/q "%%a:\QQMusicCache" >NUL 2>NUL
+PUSHD .. & RD /S/Q "%~DP0" >NUL 2>NUL
diff --git a/scripts/shared.mjs b/scripts/shared.mjs
new file mode 100644
index 00000000000..e2c87430206
--- /dev/null
+++ b/scripts/shared.mjs
@@ -0,0 +1,28 @@
+import * as hash from 'hash-wasm';
+
+// via https://codeburst.io/javascript-async-await-with-foreach-b6ba62bbf404
+const asyncForEach = async (array, callback) => {
+ for (let index = 0; index < array.length; index++) {
+ await callback(array[index], index, array);
+ }
+}
+
+async function getHash(blob) {
+ const data = new Uint8Array(blob)
+ const sha1 = await hash.sha1(data);
+ const sha256 = await hash.sha256(data);
+ const sha512 = await hash.sha512(data);
+
+ const hashes = [
+ `sha1:${sha1}`,
+ `sha256:${sha256}`,
+ `sha512:${sha512}`
+ ];
+
+ return hashes;
+ }
+
+export {
+ asyncForEach,
+ getHash
+};
\ No newline at end of file
diff --git a/scripts/sunshine/install-service.bat b/scripts/sunshine/install-service.bat
new file mode 100644
index 00000000000..f6fc23e2467
--- /dev/null
+++ b/scripts/sunshine/install-service.bat
@@ -0,0 +1,24 @@
+@echo off
+
+set SERVICE_NAME=sunshinesvc
+set SERVICE_BIN="%~dp0\tools\sunshinesvc.exe"
+set SERVICE_START_TYPE=auto
+
+rem Check if sunshinesvc already exists
+sc qc %SERVICE_NAME% > nul 2>&1
+if %ERRORLEVEL%==0 (
+ rem Stop the existing service if running
+ net stop %SERVICE_NAME%
+
+ rem Reconfigure the existing service
+ set SC_CMD=config
+) else (
+ rem Create a new service
+ set SC_CMD=create
+)
+
+rem Run the sc command to create/reconfigure the service
+sc %SC_CMD% %SERVICE_NAME% binPath= %SERVICE_BIN% start= %SERVICE_START_TYPE%
+
+rem Start the new service
+net start %SERVICE_NAME%
diff --git a/scripts/sunshine/uninstall-service.bat b/scripts/sunshine/uninstall-service.bat
new file mode 100644
index 00000000000..c188790460d
--- /dev/null
+++ b/scripts/sunshine/uninstall-service.bat
@@ -0,0 +1,7 @@
+@echo off
+
+set SERVICE_NAME=sunshinesvc
+
+net stop %SERVICE_NAME%
+
+sc delete %SERVICE_NAME%
diff --git a/scripts/tachidesk-server/tachidesk-debug.ps1 b/scripts/tachidesk-server/tachidesk-debug.ps1
new file mode 100644
index 00000000000..6654b8bb149
--- /dev/null
+++ b/scripts/tachidesk-server/tachidesk-debug.ps1
@@ -0,0 +1,5 @@
+$currentdir = (Get-Item -Path ".\").FullName
+Set-Location $PSScriptRoot
+$out = ".\Tachidesk Debug Launcher.bat"
+Start-Process $out -NoNewWindow
+Set-Location $currentdir
diff --git a/scripts/tachidesk-server/tachidesk-electron.ps1 b/scripts/tachidesk-server/tachidesk-electron.ps1
new file mode 100644
index 00000000000..b197db3c2c9
--- /dev/null
+++ b/scripts/tachidesk-server/tachidesk-electron.ps1
@@ -0,0 +1,5 @@
+$currentdir = (Get-Item -Path ".\").FullName
+Set-Location $PSScriptRoot
+$out = ".\Tachidesk Electron Launcher.bat"
+Start-Process $out -NoNewWindow
+Set-Location $currentdir
diff --git a/scripts/tachidesk-server/tachidesk.ps1 b/scripts/tachidesk-server/tachidesk.ps1
new file mode 100644
index 00000000000..1e17f156272
--- /dev/null
+++ b/scripts/tachidesk-server/tachidesk.ps1
@@ -0,0 +1,5 @@
+$currentdir = (Get-Item -Path ".\").FullName
+Set-Location $PSScriptRoot
+$out = ".\Tachidesk Browser Launcher.bat"
+Start-Process $out -NoNewWindow
+Set-Location $currentdir
diff --git a/scripts/test.mjs b/scripts/test.mjs
new file mode 100644
index 00000000000..9f57ee8854a
--- /dev/null
+++ b/scripts/test.mjs
@@ -0,0 +1,44 @@
+// Dependencies
+import { asyncForEach, getHash } from './shared.mjs';
+import { stable, prerelease } from './versions.mjs';
+import fs from 'fs/promises';
+import isCI from 'is-ci';
+import MFH from 'make-fetch-happen';
+import path from 'path';
+import test from 'ava';
+
+const fetch = MFH.defaults({
+ cacheManager: '.cache'
+});
+
+const __dirname = path.resolve(path.dirname(''));
+
+const allVersions = [...stable.v2, ...prerelease.v3, ...stable.v3];
+
+// TODO: test all versions
+asyncForEach(allVersions, async version => {
+ const major = version[0];
+ const directory = (/\d(a|b|rc)\d*$/.test(version) === true) ? `NSIS%20${major}%20Pre-release` : `NSIS%20${major}`;
+ const url = isCI
+ ? `https://downloads.sourceforge.net/project/nsis/${directory}/${version}/nsis-${version}.zip`
+ : `https://netcologne.dl.sourceforge.net/project/nsis/${directory}/${version}/nsis-${version}.zip`;
+
+ await test(`NSIS v${version}`, async t => {
+ let response = await fetch(url);
+
+ if (!response.ok) {
+ t.log(response.statusText);
+ t.pass('Skipping Test');
+ }
+
+ const manifest = await fs.readFile(path.join(__dirname, 'bucket', `nsis-${version}.json`), 'utf8');
+ const hashes = JSON.parse(manifest).hash;
+ const sha512 = hashes.filter(item => item.startsWith('sha512:'))[0];
+
+ const hash = (await getHash(await response.arrayBuffer())).filter(item => item.startsWith('sha512:'))[0];
+ const [, actual] = hash.split(':');
+ const [, expected] = sha512.split(':');
+
+ t.is(actual, expected);
+ });
+});
diff --git a/scripts/tete009/tmemutil.ini b/scripts/tete009/tmemutil.ini
new file mode 100644
index 00000000000..076731cb9ab
--- /dev/null
+++ b/scripts/tete009/tmemutil.ini
@@ -0,0 +1,57 @@
+; http://www1.plala.or.jp/tete009/en-US/software.html#TMOZFAQ_INI
+; https://sourceforge.net/p/libportable/wiki
+; SafeEx --Security Enhancements ( 0 Disabled; 1 Enabled )
+; Portable --Portable Mode ( 0 Disabled; 1 Enabled )
+; EnableWhiteList --Enable Process White List ( 0 Disabled; 1 Enabled )
+; CreateCrashDump --Create DMP file when crashing ( 0 Disabled; 1 Enabled )
+; Bosskey --Whether to enable the boss key ( 0 Disabled; 1 Enabled )
+; ProcessAffinityMask --Process balance ( 0 Disabled; 1 Enabled )
+[General]
+SafeEx=0
+Portable=1
+EnableWhiteList=0
+PortableDataPath=../Profiles
+CreateCrashDump=0
+CrashDumpType=0
+GdiBatchLimit=0
+ProcessAffinityMask=0
+Bosskey=1
+ProxyExe=1
+DisableScan=0
+OnTabs=0
+Update=1
+DisDedicate=1
+
+; Support for environment variables
+; TmpDataPath --Custom Temp File Directory
+; NpluginPath --Custom Plugin Path
+; VimpPentaHome --Vimperator/Pentadactyl's home Directory
+[Env]
+; MOZ_NO_REMOTE=1
+TmpDataPath=../Cache
+NpluginPath=../Firefox/Plugins
+TmpDataPath=
+VimpPentaHome=
+
+; Process white list (should be no more than 16), support wildcard
+; (;) is the comment symbol.
+[whitelist]
+Path1=%ProgramFiles%\Internet Explorer\iexplore.exe
+; Path2=c:\windows\system32\cmd.exe
+; Path3=*xThunder.exe
+; Path4=*opentext22.dll
+; Path5=*WordStrokeHelper32.dll
+; Path6=*AM32-*.dll
+; Path7=../local/goagent.exe
+; Path8=
+; Path9=
+; Path10=
+
+; When Bosskey=1, the section is in effect. If the keys following set is wrong or no set,
+; the default boss key is Ctrl+Shift+~
+; Hotkey Settings must be the Decimal format of Virtual Key Codes, divided by "+"
+; for example, 02+192 is on behalf of Ctrl+~,02+04+188 is on behalf of Ctrl+Shift+,
+[attach]
+CpuUse=25
+; Hotkey=02+192
+; ExPath="%windir%\system32\cscript.exe ../run.vbs,0"
diff --git a/scripts/thunder11/install.bat b/scripts/thunder11/install.bat
new file mode 100644
index 00000000000..45bbb6d7e9d
--- /dev/null
+++ b/scripts/thunder11/install.bat
@@ -0,0 +1,178 @@
+@ECHO OFF
+REG QUERY "HKU\S-1-5-19">NUL 2>&1 || (
+reg add "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /f /v "%~dp0Program\Thunder.exe" /d "~ RUNASADMIN" >NUL 2>NUL
+)
+REG QUERY "HKU\S-1-5-19">NUL 2>&1 || (powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+ver|findstr "5\.[0-9]\.[0-9][0-9]*" > NUL && (
+ECHO.&ECHO 当前版本不支持WinXP &PAUSE>NUL&EXIT)
+
+taskkill /f /im XMP.exe >NUL 2>NUL
+taskkill /f /im XLLiveUD* >NUL 2>NUL
+taskkill /f /im Thunder* /T >NUL 2>NUL
+taskkill /f /im xlbrowsershell* >NUL 2>NUL
+taskkill /f /im DownloadSDKServer* >NUL 2>NUL
+
+::删除相关残留文件
+rd/s/q "%TEMP%\Xmp"2>NUL
+rd/s/q "%TEMP%\xlwfp"2>NUL
+rd/s/q "%TEMP%\Xunlei"2>NUL
+rd/s/q "%TEMP%\Thunder"2>NUL
+rd/s/q "%TEMP%\XLLiveUD"2>NUL
+rd/s/q "%TEMP%\XLNonIESvr"2>NUL
+rd/s/q "%TEMP%\ThunderLiveUD"2>NUL
+rd/s/q "%TEMP%\ThunderInstall"2>NUL
+rd/s/q "%TEMP%\Thunder Network"2>NUL
+rd/s/q "%AppData%\迅雷" 2>NUL
+rd/s/q "%AppData%\迅雷X" 2>NUL
+rd/s/q "%AppData%\迅雷11" 2>NUL
+rd/s/q "%AppData%\thunder"2>NUL
+rd/s/q "%AppData%\thunderx"2>NUL
+rd/s/q "%AppData%\XLGameBox"2>NUL
+rd/s/q "%AppData%\迅雷播放组件" 2>NUL
+rd/s/q "%AppData%\Thunder Network"2>NUL
+rd/s/q "%ProgramData%\USOShared"2>NUL
+rd/s/q "%ProgramData%\USOPrivate"2>NUL
+rd/s/q "%ProgramData%\Thunder Network"2>NUL
+rd/s/q "%PUBLIC%\Documents\Thunder Network"2>NUL
+rd/s/q "%CommonProgramW6432%\Thunder Network"2>NUL
+del/q "%ProgramData%\APlayerCodecs3.exe" >NUL 2>NUL
+rd/s/q "%CommonProgramFiles(x86)%\Thunder Network"2>NUL
+rd/s/q "%UserProfile%\AppData\LocalLow\XunLei"2>NUL
+rd/s/q "%UserProfile%\AppData\LocalLow\XunleiBHO"2>NUL
+del/q "%UserProfile%\AppData\APlayerCodecs3.exe" >NUL 2>NUL
+rd/s/q "%UserProfile%\AppData\LocalLow\Thunder Network"2>NUL
+del/q "%AppData%\Microsoft\Windows\Libraries\迅雷下载.library-ms" >NUL 2>NUL
+
+::允许防火墙入站规则
+netsh advfirewall firewall add rule name="Thunder" dir=in action=allow program="%~dp0Program\Thunder.exe" >NUL 2>NUL
+netsh advfirewall firewall add rule name="DownloadSDKServer" dir=in action=allow program="%~dp0Program\resources\bin\SDK\DownloadSDKServer.exe" >NUL 2>NUL
+
+::阻止后台P2P偷偷上传
+rd/s/q "%PUBLIC%\Thunder Network"2>NUL
+md "%PUBLIC%\Thunder Network\cid_store.dat" 2>NUL
+md "%PUBLIC%\Thunder Network\tp_common_info.dat" 2>NUL
+md "%PUBLIC%\Thunder Network\emule_upload_list.dat" 2>NUL
+
+::迅雷所在位置检测标记
+IF NOT EXIST "%ProgramW6432%" (
+reg add "HKLM\SOFTWARE\Thunder Network\ThunderOem\thunder_backwnd" /f /v "dir" /d "%~dp0\" >NUL 2>NUL
+reg add "HKLM\SOFTWARE\Thunder Network\ThunderOem\thunder_backwnd" /f /v "instdir" /d "%~dp0\" >NUL 2>NUL
+reg add "HKLM\SOFTWARE\Thunder Network\ThunderOem\thunder_backwnd" /f /v "Path" /d "%~dp0Program\Thunder.exe" >NUL 2>NUL
+) ELSE (
+reg add "HKLM\SOFTWARE\Thunder Network\ThunderOem\thunder_backwnd" /f /v "dir" /d "%~dp0\" /reg:32 >NUL 2>NUL
+reg add "HKLM\SOFTWARE\Thunder Network\ThunderOem\thunder_backwnd" /f /v "instdir" /d "%~dp0\" /reg:32 >NUL 2>NUL
+reg add "HKLM\SOFTWARE\Thunder Network\ThunderOem\thunder_backwnd" /f /v "Path" /d "%~dp0Program\Thunder.exe" /reg:32 >NUL 2>NUL
+)
+
+::注册IE浏览器或基于IE内核程序关联组件
+regsvr32 /s "%~dp0BHO\ThunderAgent.dll"
+regsvr32 /s "%~dp0BHO\ThunderAgent64.dll"
+regsvr32 /s "%~dp0Program\np_tdieplat.dll"
+reg add "HKCU\Software\Thunder Network\BHOEnum" /f /v "Thunder7" /d "%~dp0BHO\" >NUL 2>NUL
+
+::迅雷播放组件相关键值
+reg add "HKCU\SOFTWARE\Thunder Network\Xmp" /f /v "XmpCodecsState" /t REG_DWORD /d "4" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Thunder Network\APlayer" /f /v "XmpCodecsState" /t REG_DWORD /d "4" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Thunder Network\APlayer" /f /v "XmpCodecsUpdateState" /t REG_DWORD /d "4" >NUL 2>NUL
+
+::Chrme, firefox扩展检测识别路径键值项
+reg delete "HKLM\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.xunlei.thunder" /f /reg:32 >NUL 2>NUL
+reg add "HKLM\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.xunlei.thunder" /f /ve /d "%~dp0Program\com.xunlei.thunder.json" >NUL 2>NUL
+IF NOT EXIST "%ProgramW6432%" (
+reg add "HKLM\SOFTWARE\MozillaPlugins\@xunlei.com/npxunlei;version=1.0.0.2" /f /v "path" /d "%~dp0Program\npxunlei.dll" >NUL 2>NUL
+) ELSE (
+reg add "HKLM\SOFTWARE\MozillaPlugins\@xunlei.com/npxunlei;version=1.0.0.2" /f /v "path" /d "%~dp0Program\npxunlei.dll" /reg:32 >NUL 2>NUL
+)
+
+::添加网页右键菜单下载项
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷离线下载" /f /ve /d "%~dp0BHO\OfflineDownload.htm" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷离线下载" /f /v "Contexts" /t REG_DWORD /d "34" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷离线下载" /f /v "Name" /d "xl_offlinedownload" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷下载" /f /ve /d "%~dp0BHO\geturl.htm" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷下载" /f /v "Contexts" /t REG_DWORD /d "34" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷下载" /f /v "Name" /d "xl_geturl" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷下载全部链接" /f /ve /d "%~dp0BHO\GetAllUrl.htm" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷下载全部链接" /f /v "Contexts" /t REG_DWORD /d "243" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷下载全部链接" /f /v "Name" /d "xl_getallurl" >NUL 2>NUL
+
+::关联相关的文件类型协议
+
+reg add "HKCR\.downlist" /f /ve /d "Xunlei.LSTFile.6" >NUL 2>NUL
+reg add "HKCR\.td" /f /ve /d "Xunlei.TDFile.6" >NUL 2>NUL
+reg add "HKCR\.thunderskin" /f /ve /d "Xunlei.ThunderSkin.6" >NUL 2>NUL
+reg add "HKCR\.torrent" /f /ve /d "Xunlei.Bittorrent.6" >NUL 2>NUL
+reg add "HKCR\.xlb" /f /ve /d "Xunlei.XLB.6" >NUL 2>NUL
+reg add "HKCR\.xltd" /f /ve /d "Xunlei.TDFile.6" >NUL 2>NUL
+reg add "HKCR\ed2k" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCR\ed2k\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:ed2k" >NUL 2>NUL
+reg add "HKCR\magnet" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCR\magnet\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:magnet" >NUL 2>NUL
+reg add "HKCR\thunder" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCR\thunder\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:thunder" >NUL 2>NUL
+reg add "HKCR\thunderx" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCR\thunderx\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:thunderx" >NUL 2>NUL
+reg add "HKCR\xlb" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCR\xlb\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:xlb" >NUL 2>NUL
+reg add "HKCR\Xunlei.Bittorrent.6" /f /ve /d "BT种子文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.Bittorrent.6\DefaultIcon" /f /ve /d "%~dp0Program\TorrentFile.ico" >NUL 2>NUL
+reg add "HKCR\Xunlei.Bittorrent.6\Shell\Open" /f /ve /d "使用迅雷下载该BT文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.Bittorrent.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+reg add "HKCR\Xunlei.LSTFile.6" /f /ve /d "迅雷专有下载文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.LSTFile.6\DefaultIcon" /f /ve /d "%~dp0Program\XLDownloadList.ico" >NUL 2>NUL
+reg add "HKCR\Xunlei.LSTFile.6\Shell\Open" /f /ve /d "使用迅雷下载该任务列表文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.LSTFile.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+reg add "HKCR\Xunlei.TDFile.6" /f /ve /d "迅雷临时数据文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.TDFile.6\DefaultIcon" /f /ve /d "%~dp0Program\XLTempFile.ico" >NUL 2>NUL
+reg add "HKCR\Xunlei.TDFile.6\Shell\Open" /f /ve /d "使用迅雷下载未完成文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.TDFile.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+reg add "HKCR\Xunlei.ThunderSkin.6" /f /ve /d "迅雷X皮肤文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.ThunderSkin.6\DefaultIcon" /f /ve /d "%~dp0Program\thunderskin.ico" >NUL 2>NUL
+reg add "HKCR\Xunlei.ThunderSkin.6\Shell\Open" /f /ve /d "为迅雷X应用该皮肤" >NUL 2>NUL
+reg add "HKCR\Xunlei.ThunderSkin.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+reg add "HKCR\Xunlei.XLB.6" /f /ve /d "迅雷下载合集文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.XLB.6\DefaultIcon" /f /ve /d "%~dp0Program\DownloadCollection.ico" >NUL 2>NUL
+reg add "HKCR\Xunlei.XLB.6\Shell\Open" /f /ve /d "使用迅雷查看该下载合集文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.XLB.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+
+
+reg add "HKCU\Software\Classes\.downlist" /f /ve /d "Xunlei.LSTFile.6" >NUL 2>NUL
+reg add "HKCU\Software\Classes\.td" /f /ve /d "Xunlei.TDFile.6" >NUL 2>NUL
+reg add "HKCU\Software\Classes\.thunderskin" /f /ve /d "Xunlei.ThunderSkin.6" >NUL 2>NUL
+reg add "HKCU\Software\Classes\.torrent" /f /ve /d "Xunlei.Bittorrent.6" >NUL 2>NUL
+reg add "HKCU\Software\Classes\.xlb" /f /ve /d "Xunlei.XLB.6" >NUL 2>NUL
+reg add "HKCU\Software\Classes\.xltd" /f /ve /d "Xunlei.TDFile.6" >NUL 2>NUL
+reg add "HKCU\Software\Classes\ed2k" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCU\Software\Classes\ed2k\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:ed2k" >NUL 2>NUL
+reg add "HKCU\Software\Classes\magnet" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCU\Software\Classes\magnet\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:magnet" >NUL 2>NUL
+reg add "HKCU\Software\Classes\thunder" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCU\Software\Classes\thunder\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:thunder" >NUL 2>NUL
+reg add "HKCU\Software\Classes\thunderx" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCU\Software\Classes\thunderx\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:thunderx" >NUL 2>NUL
+reg add "HKCU\Software\Classes\xlb" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCU\Software\Classes\xlb\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:xlb" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.Bittorrent.6" /f /ve /d "BT种子文件" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.Bittorrent.6\DefaultIcon" /f /ve /d "%~dp0Program\TorrentFile.ico" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.Bittorrent.6\Shell\Open" /f /ve /d "使用迅雷下载该BT文件" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.Bittorrent.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.LSTFile.6" /f /ve /d "迅雷专有下载文件" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.LSTFile.6\DefaultIcon" /f /ve /d "%~dp0Program\XLDownloadList.ico" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.LSTFile.6\Shell\Open" /f /ve /d "使用迅雷下载该任务列表文件" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.LSTFile.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.TDFile.6" /f /ve /d "迅雷临时数据文件" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.TDFile.6\DefaultIcon" /f /ve /d "%~dp0Program\XLTempFile.ico" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.TDFile.6\Shell\Open" /f /ve /d "使用迅雷下载未完成文件" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.TDFile.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.ThunderSkin.6" /f /ve /d "迅雷X皮肤文件" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.ThunderSkin.6\DefaultIcon" /f /ve /d "%~dp0Program\thunderskin.ico" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.ThunderSkin.6\Shell\Open" /f /ve /d "为迅雷X应用该皮肤" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.ThunderSkin.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.XLB.6" /f /ve /d "迅雷下载合集文件" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.XLB.6\DefaultIcon" /f /ve /d "%~dp0Program\DownloadCollection.ico" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.XLB.6\Shell\Open" /f /ve /d "使用迅雷查看该下载合集文件" >NUL 2>NUL
+reg add "HKCU\Software\Classes\Xunlei.XLB.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+
+ASSOC .=. >NUL 2>NUL
+
+ECHO.&ECHO 完成 &TIMEOUT /t 2 >NUL&EXIT
diff --git a/scripts/thunder11/uninstall.bat b/scripts/thunder11/uninstall.bat
new file mode 100644
index 00000000000..0ba3895da68
--- /dev/null
+++ b/scripts/thunder11/uninstall.bat
@@ -0,0 +1,304 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im XMP.exe >NUL 2>NUL
+taskkill /f /im XLLiveUD* >NUL 2>NUL
+taskkill /f /im Thunder* /T >NUL 2>NUL
+taskkill /f /im xlbrowsershell* >NUL 2>NUL
+taskkill /f /im DownloadSDKServer* >NUL 2>NUL
+
+::卸载IE浏览器或IE内核程序关联组件
+regsvr32 /s /u BHO\ThunderAgent.dll
+regsvr32 /s /u BHO\ThunderAgent64.dll
+regsvr32 /s /u Program\np_tdieplat.dll
+start /wait Program\Thunder.exe -unassociate:all -unregprotocol:all
+
+::删除防火墙入站规则
+netsh advfirewall firewall delete rule name="Thunder" dir=in program="%~dp0Program\Thunder.exe" >NUL 2>NUL
+netsh advfirewall firewall delete rule name="DownloadSDKServer" dir=in program="%~dp0Program\resources\bin\SDK\DownloadSDKServer.exe" >NUL 2>NUL
+
+::清除系统后台残留文件
+rd/s/q "%TEMP%\Xmp"2>NUL
+rd/s/q "%TEMP%\xlwfp"2>NUL
+rd/s/q "%TEMP%\Xunlei"2>NUL
+rd/s/q "%TEMP%\Thunder"2>NUL
+rd/s/q "%TEMP%\XLLiveUD"2>NUL
+rd/s/q "%TEMP%\XLNonIESvr"2>NUL
+rd/s/q "%TEMP%\ThunderLiveUD"2>NUL
+rd/s/q "%TEMP%\ThunderInstall"2>NUL
+rd/s/q "%TEMP%\Thunder Network"2>NUL
+rd/s/q "%AppData%\迅雷" 2>NUL
+rd/s/q "%AppData%\迅雷X" 2>NUL
+rd/s/q "%AppData%\迅雷11" 2>NUL
+rd/s/q "%AppData%\thunder"2>NUL
+rd/s/q "%AppData%\thunderx"2>NUL
+rd/s/q "%AppData%\XLGameBox"2>NUL
+rd/s/q "%AppData%\迅雷播放组件" 2>NUL
+rd/s/q "%AppData%\Thunder Network"2>NUL
+rd/s/q "%ProgramData%\USOShared"2>NUL
+rd/s/q "%ProgramData%\USOPrivate"2>NUL
+rd/s/q "%ProgramData%\Thunder Network"2>NUL
+rd/s/q "%CommonProgramW6432%\Thunder Network" 2>NUL
+rd/s/q "%CommonProgramFiles(x86)%\Thunder Network"2>NUL
+rd/s/q "%UserProfile%\AppData\LocalLow\XunLei"2>NUL
+rd/s/q "%UserProfile%\AppData\LocalLow\XunleiBHO"2>NUL
+rd/s/q "%UserProfile%\AppData\LocalLow\Thunder Network"2>NUL
+del /q "%UserProfile%\AppData\APlayerCodecs3.exe" >NUL 2>NUL
+del /q "%ProgramData%\APlayerCodecs3.exe" >NUL 2>NUL
+rd/s/q "%PUBLIC%\Thunder Network"2>NUL
+rd/s/q "%PUBLIC%\Documents\Thunder Network"2>NUL
+
+::清除迅雷目录残留文件
+del "Thunder.lnk " >NUL 2>NUL
+del "Program\stat.dat" >NUL 2>NUL
+del "Program\detect_stat.dat" >NUL 2>NUL
+del "Program\latest_thunder_stat.xml" >NUL 2>NUL
+del "Program\resources\bin\TBC\xlbrowser.ini" >NUL 2>NUL
+rd /s /q "Program\resources\bin\TBC\Data"2>NUL
+
+::清除桌面和开始菜单快捷方式
+del /q "%Public%\Desktop\迅雷.lnk" >NUL 2>NUL
+del /q "%UserProfile%\Desktop\迅雷.lnk" >NUL 2>NUL
+rd/s/q "%AppData%\Microsoft\Windows\Start Menu\Programs\迅雷软件"2>NUL
+rd/s/q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\迅雷软件"2>NUL
+del /q "%AppData%\Microsoft\Windows\Libraries\迅雷下载.library-ms" >NUL 2>NUL
+
+::清除注册表相关残留键值
+reg delete "HKCU\Software\Thunder Network" /f >NUL 2>NUL
+reg delete "HKLM\Software\Thunder Network" /f >NUL 2>NUL
+reg delete "HKLM\Software\Thunder Network" /f /reg:32 >NUL 2>NUL
+
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\thunder" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\thunder" /f /reg:32 >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\MozillaPlugins\@xunlei.com/npxunlei;version=1.0.0.2" /f >NUL 2>NUL
+reg delete "HKLM\Software\MozillaPlugins\@xunlei.com/npxunlei;version=1.0.0.2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\MozillaPlugins\@xunlei.com/npxunlei;version=1.0.0.2" /f >NUL 2>NUL
+reg delete "HKLM\Software\MozillaPlugins\@xunlei.com/npxunlei;version=1.0.0.2" /f /reg:32 >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Mozilla\NativeMessagingHosts\com.xunlei.thunder" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Mozilla\NativeMessagingHosts\com.xunlei.thunder" /f >NUL 2>NUL
+reg delete "HKCU\Software\Google\Chrome\NativeMessagingHosts\com.xunlei.thunder" /f >NUL 2>NUL
+reg delete "HKLM\Software\Google\Chrome\NativeMessagingHosts\com.xunlei.thunder" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.xunlei.thunder" /f /reg:32 >NUL 2>NUL
+reg delete "HKCU\Software\Microsoft\Internet Explorer\MenuExt\使用迅雷下载" /f >NUL 2>NUL
+reg delete "HKCU\Software\Microsoft\Internet Explorer\MenuExt\使用迅雷下载全部链接" /f >NUL 2>NUL
+reg delete "HKCUHKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷离线下载" /f >NUL 2>NUL
+reg delete "HKCUHKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷下载" /f >NUL 2>NUL
+reg delete "HKCUHKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷下载全部链接" /f >NUL 2>NUL
+
+reg delete "HKLM\SOFTWARE\Classes\APlayer3.Player" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\APlayer3.Player.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\APlayerUI.Player" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\APlayerUI.Player.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\AXmpLite" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{06A28264-EF0A-48E5-AD42-1327E5328955}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{99DC6162-65E4-476E-87CE-9E5944D323E2}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{AD13FB62-BF1B-4434-9BC3-20678B5287DE}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\ShlExt.DLL" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\UserAgent.DLL" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\XunleiBHO64.DLL" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{002AE4F2-96AB-4dfa-AE2E-605217F8A84C}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{002AE4F2-96AB-4dfa-AE2E-605217F8A84C}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{004B0726-A010-4abf-8556-FCDB7F1FCA1E}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{0119CCC1-8EAC-43E9-AA7D-87F64B44AA4D}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{67486EAA-ED7F-4F84-82EB-26F23F57D690}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{889D2FEB-5411-4565-8998-1DD2C5261283}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{8F556DA3-987D-47b0-AA88-EB8D52FE1B9A}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{2C543E47-732B-4EDE-8AC9-C3D27C861FAA}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{559BAA6F-E3FE-4B0B-90D7-2C0BFA5145F1}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{7BD58878-F0AE-406B-B5CE-871C4E01B237}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{CF1FC792-7F5C-4DB0-A00A-D209F5FFBD16}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MiniXmpShlExt.ContextMenuExt" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MiniXmpShlExt.ContextMenuExt.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Thunder.MyComputerIcon" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Thunder.MyComputerIcon.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{01560F06-CEE2-46FF-8997-308A366175E9}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{1957CD06-E83F-477D-AD1A-5F6B8C30C561}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{26D657AE-A466-4F44-AB1D-5CFFFADBED97}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{32648605-550A-40FA-8F3B-90470FF9EE1F}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{5E1356B8-3AD9-48AF-AA80-D76E5415E81B}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{64A3A559-FFBB-49BA-A947-C6104804D644}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{97830570-35FE-4195-83DE-30E79B718713}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{A9757030-96F6-485E-A8AB-5B5137462472}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\UserAgent.Thunder59Agent" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\UserAgent.Thunder59Agent.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{1E935CBE-2951-48FE-93C8-4B7F1E5AA14E}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{22F1FF40-C53F-4360-A70E-F06540CB986B}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{23A860E9-0C41-4E01-9206-D3FC0E413645}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{485463B7-8FB2-4B3B-B29B-8B919B0EACCE}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{485463B7-8FB2-4B3B-B29B-8B919B0EACCE}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{6EE9CD3E-A386-4DAE-9737-A759DBF927AE}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{A1E760B9-78EE-4570-909A-19ABF149F31E}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{A63DEB30-9A77-492C-A380-3CA64A53C9EF}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{A9332148-C691-4B9D-91FC-B9C461DBE9DD}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{C46DFF24-22C0-4C8F-87D0-5CADE3C2ADD6}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{DE05CF4A-7B0A-4775-B5E5-396244938679}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{F19169FA-7EB8-45EB-8800-0D1F7C88F553}" /f /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{2C543E47-732B-4EDE-8AC9-C3D27C861FAA}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{559BAA6F-E3FE-4B0B-90D7-2C0BFA5145F1}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{7BD58878-F0AE-406B-B5CE-871C4E01B237}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{C46DFF24-22C0-4C8F-87D0-5CADE3C2ADD6}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{CF1FC792-7F5C-4DB0-A00A-D209F5FFBD16}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{F19169FA-7EB8-45EB-8800-0D1F7C88F553}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.3g2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.3gp" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.3gp2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.3gpp" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.aac" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ac3" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.acc" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.aiff" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.amr" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.amv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ape" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.asf" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ass" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.au" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.avi" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.bik" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.cda" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.csf" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.divx" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.dts" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.dvd" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.evo" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.f4v" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.f5v" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.flac" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.flv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.hflv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.hlv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.hmkv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.hmp4" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.letv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m1a" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m1v" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m2a" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m2p" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m2ts" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m2v" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m4a" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m4b" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m4p" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m4r" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m4v" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mid" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.midi" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mk5" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mka" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mkv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mod" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mov" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mp2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mp2v" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mp3" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mp4" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mp5" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpa" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpc" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpeg" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpeg1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpeg2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpeg4" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpg" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpv2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mts" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.oga" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ogg" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ogm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ogv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ogx" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.pmp" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.psb" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.pva" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.qt" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ra" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ram" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.rm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.rmvb" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.rpm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.rt" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.scm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.smi" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.smil" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.srt" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ssa" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.sub" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.sup" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.swf" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.tp" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.tpr" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ts" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.tta" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.usf" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.vob" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.vp6" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.wav" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.wm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.wma" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.wmp" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.wmv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.wv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.xlmv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Clients\Media\XMPLite" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\{004B0726-A010-4ABF-8556-FCDB7F1FCA1E}" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Class\{5DEB2780-5239-47C2-AEB7-B8BD9BEB3F80}" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Class\{9FB5F2D4-203E-41D2-932F-6DE145F9756C}" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\XLGuard" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\XLServicePlatform" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\XLWFP" /f >NUL 2>NUL
+
+reg delete "HKCU\CLSID\{004B0726-A010-4abf-8556-FCDB7F1FCA1E}" /f >NUL 2>NUL
+reg delete "HKCU\CLSID\{DE05CF4A-7B0A-4775-B5E5-396244938679}" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\.downlist" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.td" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.thunderskin" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.torrent" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.xlb" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\.xltd" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\ed2k" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\magnet" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\thunder" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\thunderx" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\xlb" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\Xunlei.Bittorrent.6" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\Xunlei.LSTFile.6" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\Xunlei.TDFile.6" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\Xunlei.ThunderSkin.6" /f >NUL 2>NUL
+reg delete "HKCU\Software\Classes\Xunlei.XLB.6" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.torrent\OpenWithProgids" /f /v "Xunlei.Bittorrent.6" >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.xltd\OpenWithList" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.xltd\OpenWithProgids" /v "Xunlei.TDFile.6" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Mozilla\NativeMessagingHosts\com.xunlei.thunder" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\MozillaPlugins\@xunlei.com" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Thunder Network" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Ext\Stats\{002AE4F2-96AB-4dfa-AE2E-605217F8A84C}" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Ext\Stats\{485463B7-8FB2-4B3B-B29B-8B919B0EACCE}" /f >NUL 2>NUL
+
+reg delete "HKCR\.td" /f >NUL 2>NUL
+reg delete "HKCR\xlb" /f >NUL 2>NUL
+reg delete "HKCR\.xlb" /f >NUL 2>NUL
+reg delete "HKCR\.xltd" /f >NUL 2>NUL
+reg delete "HKCR\ed2k" /f >NUL 2>NUL
+reg delete "HKCR\magnet" /f >NUL 2>NUL
+reg delete "HKCR\thunder" /f >NUL 2>NUL
+reg delete "HKCR\thunderx" /f >NUL 2>NUL
+reg delete "HKCR\.torrent" /f >NUL 2>NUL
+reg delete "HKCR\.downlist" /f >NUL 2>NUL
+reg delete "HKCR\.thunderskin" /f >NUL 2>NUL
+reg delete "HKCR\ThunderSkin.6" /f >NUL 2>NUL
+reg delete "HKCR\Xunlei.XLB.6" /f >NUL 2>NUL
+reg delete "HKCR\Xunlei.TDFile.6" /f >NUL 2>NUL
+reg delete "HKCR\Xunlei.LSTFile.6" /f >NUL 2>NUL
+reg delete "HKCR\Xunlei.Bittorrent.6" /f >NUL 2>NUL
+reg delete "HKCR\Xunlei.ThunderSkin.6" /f >NUL 2>NUL
+
+reg delete "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /f /v "%~dp0Program\Thunder.exe" >NUL 2>NUL
+
+CLS
+ECHO.&ECHO 423down.com
+
+DEL /F/Q "%~dp0BHO\ThunderAgent*.dll" >NUL 2>NUL
+IF EXIST "%~dp0BHO\ThunderAgent.dll" ren "%~dp0BHO\ThunderAgent.dll" "ThunderAgent.dll.%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+IF EXIST "%~dp0BHO\ThunderAgent64.dll" ren "%~dp0BHO\ThunderAgent64.dll" "ThunderAgent64.dll.%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+PUSHD .. & RD /S/Q "%~DP0" 2>NUL
diff --git a/scripts/thunderx/install.bat b/scripts/thunderx/install.bat
new file mode 100644
index 00000000000..9d230d53991
--- /dev/null
+++ b/scripts/thunderx/install.bat
@@ -0,0 +1,130 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+ver|findstr "5\.[0-9]\.[0-9][0-9]*" > NUL && (
+ECHO.&ECHO 当前版本不支持WinXP &PAUSE>NUL&EXIT)
+
+taskkill /f /im XMP.exe >NUL 2>NUL
+taskkill /f /im XLLiveUD* >NUL 2>NUL
+taskkill /f /im Thunder* /T >NUL 2>NUL
+taskkill /f /im xlbrowsershell* >NUL 2>NUL
+taskkill /f /im DownloadSDKServer* >NUL 2>NUL
+
+::清除相关残留文件
+rd/s/q "%TEMP%\Xmp"2>NUL
+rd/s/q "%TEMP%\xlwfp"2>NUL
+rd/s/q "%TEMP%\Xunlei"2>NUL
+rd/s/q "%TEMP%\Thunder"2>NUL
+rd/s/q "%TEMP%\XLLiveUD"2>NUL
+rd/s/q "%TEMP%\XLNonIESvr"2>NUL
+rd/s/q "%TEMP%\ThunderLiveUD"2>NUL
+rd/s/q "%TEMP%\ThunderInstall"2>NUL
+rd/s/q "%TEMP%\Thunder Network"2>NUL
+rd/s/q "%AppData%\迅雷" 2>NUL
+rd/s/q "%AppData%\迅雷X" 2>NUL
+rd/s/q "%AppData%\迅雷11" 2>NUL
+rd/s/q "%AppData%\thunder"2>NUL
+rd/s/q "%AppData%\thunderx"2>NUL
+rd/s/q "%AppData%\XLGameBox"2>NUL
+rd/s/q "%AppData%\迅雷播放组件" 2>NUL
+rd/s/q "%AppData%\Thunder Network"2>NUL
+rd/s/q "%ProgramData%\USOShared"2>NUL
+rd/s/q "%ProgramData%\USOPrivate"2>NUL
+rd/s/q "%ProgramData%\Thunder Network"2>NUL
+rd/s/q "%PUBLIC%\Documents\Thunder Network"2>NUL
+rd/s/q "%CommonProgramW6432%\Thunder Network"2>NUL
+del/q "%ProgramData%\APlayerCodecs3.exe" >NUL 2>NUL
+rd/s/q "%CommonProgramFiles(x86)%\Thunder Network"2>NUL
+rd/s/q "%UserProfile%\AppData\LocalLow\XunLei"2>NUL
+rd/s/q "%UserProfile%\AppData\LocalLow\XunleiBHO"2>NUL
+del/q "%UserProfile%\AppData\APlayerCodecs3.exe" >NUL 2>NUL
+rd/s/q "%UserProfile%\AppData\LocalLow\Thunder Network"2>NUL
+del/q "%AppData%\Microsoft\Windows\Libraries\迅雷下载.library-ms" >NUL 2>NUL
+
+::允许防火墙入站规则
+netsh advfirewall firewall add rule name="Thunder" dir=in action=allow program="%~dp0Program\Thunder.exe" >NUL 2>NUL
+netsh advfirewall firewall add rule name="DownloadSDKServer" dir=in action=allow program="%~dp0Program\resources\bin\SDK\DownloadSDKServer.exe" >NUL 2>NUL
+
+::阻止后台P2P偷偷上传
+rd/s/q "%PUBLIC%\Thunder Network"2>NUL
+md "%PUBLIC%\Thunder Network\cid_store.dat" 2>NUL
+md "%PUBLIC%\Thunder Network\tp_common_info.dat" 2>NUL
+md "%PUBLIC%\Thunder Network\emule_upload_list.dat" 2>NUL
+
+::迅雷所在路径检测键值
+IF NOT EXIST "%ProgramW6432%" (
+reg add "HKLM\SOFTWARE\Thunder Network\ThunderOem\thunder_backwnd" /f /v "dir" /d "%~dp0\" >NUL 2>NUL
+reg add "HKLM\SOFTWARE\Thunder Network\ThunderOem\thunder_backwnd" /f /v "instdir" /d "%~dp0\" >NUL 2>NUL
+reg add "HKLM\SOFTWARE\Thunder Network\ThunderOem\thunder_backwnd" /f /v "Path" /d "%~dp0Program\Thunder.exe" >NUL 2>NUL
+) ELSE (
+reg add "HKLM\SOFTWARE\Wow6432Node\Thunder Network\ThunderOem\thunder_backwnd" /f /v "dir" /d "%~dp0\" >NUL 2>NUL
+reg add "HKLM\SOFTWARE\Wow6432Node\Thunder Network\ThunderOem\thunder_backwnd" /f /v "instdir" /d "%~dp0\" >NUL 2>NUL
+reg add "HKLM\SOFTWARE\Wow6432Node\Thunder Network\ThunderOem\thunder_backwnd" /f /v "Path" /d "%~dp0Program\Thunder.exe" >NUL 2>NUL
+)
+
+::注册IE浏览器或基于IE内核程序关联组件
+regsvr32 /s "%~dp0BHO\ThunderAgent.dll"
+regsvr32 /s "%~dp0BHO\ThunderAgent64.dll"
+regsvr32 /s "%~dp0Program\np_tdieplat.dll"
+
+::Chrme, firefox扩展检测识别路径键值项
+reg delete "HKLM\SOFTWARE\Wow6432Node\Google\Chrome\NativeMessagingHosts\com.xunlei.thunder" /f >NUL 2>NUL
+reg add "HKLM\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.xunlei.thunder" /f /ve /d "%~dp0Program\com.xunlei.thunder.json" >NUL 2>NUL
+IF NOT EXIST "%ProgramW6432%" (
+reg add "HKLM\SOFTWARE\MozillaPlugins\@xunlei.com/npxunlei;version=1.0.0.2" /f /v "path" /d "%~dp0Program\npxunlei.dll" >NUL 2>NUL
+) ELSE (
+reg add "HKLM\SOFTWARE\Wow6432Node\MozillaPlugins\@xunlei.com/npxunlei;version=1.0.0.2" /f /v "path" /d "%~dp0Program\npxunlei.dll" >NUL 2>NUL
+)
+
+::添加网页右键菜单下载项
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\使用迅雷下载" /f /ve /d "%~dp0BHO\geturl.htm" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\使用迅雷下载" /f /v "Contexts" /t REG_DWORD /d "0x00000022" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\使用迅雷下载全部链接" /f /ve /d "%~dp0BHO\getAllurl.htm" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\使用迅雷下载全部链接" /f /v "Contexts" /t REG_DWORD /d "0x000000f3" >NUL 2>NUL
+
+::关联相关的文件类型协议
+reg add "HKCR\ed2k" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCR\ed2k\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:ed2k" >NUL 2>NUL
+reg add "HKCR\magnet" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCR\magnet\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:magnet" >NUL 2>NUL
+reg add "HKCR\thunder" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCR\thunder\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:thunder" >NUL 2>NUL
+reg add "HKCR\thunderx" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCR\thunderx\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:thunderx" >NUL 2>NUL
+
+reg add "HKCR\.torrent" /f /ve /d "Xunlei.Bittorrent.6" >NUL 2>NUL
+reg add "HKCR\Xunlei.Bittorrent.6" /f /ve /d "BT种子文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.Bittorrent.6\DefaultIcon" /f /ve /d "%~dp0Program\TorrentFile.ico" >NUL 2>NUL
+reg add "HKCR\Xunlei.Bittorrent.6\Shell\Open" /f /ve /d "使用迅雷下载该BT文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.Bittorrent.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+
+reg add "HKCR\.downlist" /f /ve /d "Xunlei.LSTFile.6" >NUL 2>NUL
+reg add "HKCR\Xunlei.LSTFile.6" /f /ve /d "迅雷专有下载文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.LSTFile.6\DefaultIcon" /f /ve /d "%~dp0Program\XLDownloadList.ico" >NUL 2>NUL
+reg add "HKCR\Xunlei.LSTFile.6\Shell\Open" /f /ve /d "使用迅雷下载该任务列表文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.LSTFile.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+
+reg add "HKCR\.td" /f /ve /d "Xunlei.TDFile.6" >NUL 2>NUL
+reg add "HKCR\.xltd" /f /ve /d "Xunlei.TDFile.6" >NUL 2>NUL
+reg add "HKCR\Xunlei.TDFile.6" /f /ve /d "迅雷临时数据文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.TDFile.6\DefaultIcon" /f /ve /d "%~dp0Program\XLTempFile.ico" >NUL 2>NUL
+reg add "HKCR\Xunlei.TDFile.6\Shell\Open" /f /ve /d "使用迅雷下载未完成文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.TDFile.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+
+reg add "HKCR\.xlb" /f /ve /d "Xunlei.XLB.6" >NUL 2>NUL
+reg add "HKCR\xlb" /f /v "URL Protocol" /d "" >NUL 2>NUL
+reg add "HKCR\Xunlei.XLB.6" /f /ve /d "迅雷下载合集文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.XLB.6\DefaultIcon" /f /ve /d "%~dp0Program\DownloadCollection.ico" >NUL 2>NUL
+reg add "HKCR\Xunlei.XLB.6\Shell\Open" /f /ve /d "使用迅雷查看该下载合集文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.XLB.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+reg add "HKCR\xlb\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\" -StartType:xlb" >NUL 2>NUL
+
+reg add "HKCR\.thunderskin" /f /ve /d "Xunlei.ThunderSkin.6" >NUL 2>NUL
+reg add "HKCR\Xunlei.ThunderSkin.6" /f /ve /d "迅雷X皮肤文件" >NUL 2>NUL
+reg add "HKCR\Xunlei.ThunderSkin.6\DefaultIcon" /f /ve /d "%~dp0Program\thunderskin.ico" >NUL 2>NUL
+reg add "HKCR\Xunlei.ThunderSkin.6\Shell\Open" /f /ve /d "为迅雷X应用该皮肤" >NUL 2>NUL
+reg add "HKCR\Xunlei.ThunderSkin.6\Shell\Open\command" /f /ve /d "\"%~dp0Program\Thunder.exe\" \"%%1\"" >NUL 2>NUL
+
+ASSOC .=. >NUL 2>NUL
+
+ECHO.&ECHO 完成 &TIMEOUT /t 2 >NUL&EXIT
diff --git a/scripts/thunderx/uninstall.bat b/scripts/thunderx/uninstall.bat
new file mode 100644
index 00000000000..1be49b8a3be
--- /dev/null
+++ b/scripts/thunderx/uninstall.bat
@@ -0,0 +1,298 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im XMP.exe >NUL 2>NUL
+taskkill /f /im XLLiveUD* >NUL 2>NUL
+taskkill /f /im Thunder* /T >NUL 2>NUL
+taskkill /f /im xlbrowsershell* >NUL 2>NUL
+taskkill /f /im DownloadSDKServer* >NUL 2>NUL
+
+::卸载IE浏览器或IE内核程序关联组件
+regsvr32 /s /u BHO\ThunderAgent.dll
+regsvr32 /s /u BHO\ThunderAgent64.dll
+regsvr32 /s /u Program\np_tdieplat.dll
+start /wait Program\Thunder.exe -unassociate:all -unregprotocol:all
+
+::删除防火墙入站规则
+netsh advfirewall firewall delete rule name="Thunder" dir=in program="%~dp0Program\Thunder.exe" >NUL 2>NUL
+netsh advfirewall firewall delete rule name="DownloadSDKServer" dir=in program="%~dp0Program\resources\bin\SDK\DownloadSDKServer.exe" >NUL 2>NUL
+
+::清除系统后台残留文件
+rd/s/q "%TEMP%\Xmp"2>NUL
+rd/s/q "%TEMP%\xlwfp"2>NUL
+rd/s/q "%TEMP%\Xunlei"2>NUL
+rd/s/q "%TEMP%\Thunder"2>NUL
+rd/s/q "%TEMP%\XLLiveUD"2>NUL
+rd/s/q "%TEMP%\XLNonIESvr"2>NUL
+rd/s/q "%TEMP%\ThunderLiveUD"2>NUL
+rd/s/q "%TEMP%\ThunderInstall"2>NUL
+rd/s/q "%TEMP%\Thunder Network"2>NUL
+rd/s/q "%AppData%\迅雷" 2>NUL
+rd/s/q "%AppData%\迅雷X" 2>NUL
+rd/s/q "%AppData%\迅雷11" 2>NUL
+rd/s/q "%AppData%\thunder"2>NUL
+rd/s/q "%AppData%\thunderx"2>NUL
+rd/s/q "%AppData%\XLGameBox"2>NUL
+rd/s/q "%AppData%\迅雷播放组件" 2>NUL
+rd/s/q "%AppData%\Thunder Network"2>NUL
+rd/s/q "%ProgramData%\USOShared"2>NUL
+rd/s/q "%ProgramData%\USOPrivate"2>NUL
+rd/s/q "%ProgramData%\Thunder Network"2>NUL
+rd/s/q "%CommonProgramW6432%\Thunder Network" 2>NUL
+rd/s/q "%CommonProgramFiles(x86)%\Thunder Network"2>NUL
+rd/s/q "%UserProfile%\AppData\LocalLow\XunLei"2>NUL
+rd/s/q "%UserProfile%\AppData\LocalLow\XunleiBHO"2>NUL
+rd/s/q "%UserProfile%\AppData\LocalLow\Thunder Network"2>NUL
+del /q "%UserProfile%\AppData\APlayerCodecs3.exe" >NUL 2>NUL
+del /q "%ProgramData%\APlayerCodecs3.exe" >NUL 2>NUL
+rd/s/q "%PUBLIC%\Thunder Network"2>NUL
+rd/s/q "%PUBLIC%\Documents\Thunder Network"2>NUL
+
+::清除迅雷目录残留文件
+del "Thunder.lnk " >NUL 2>NUL
+del "Program\stat.dat" >NUL 2>NUL
+del "Program\detect_stat.dat" >NUL 2>NUL
+del "Program\latest_thunder_stat.xml" >NUL 2>NUL
+del "Program\resources\bin\TBC\xlbrowser.ini" >NUL 2>NUL
+rd /s /q "Program\resources\bin\TBC\Data"2>NUL
+
+::清除桌面和开始菜单快捷方式
+del /q "%Public%\Desktop\迅雷.lnk" >NUL 2>NUL
+del /q "%UserProfile%\Desktop\迅雷.lnk" >NUL 2>NUL
+rd/s/q "%AppData%\Microsoft\Windows\Start Menu\Programs\迅雷软件"2>NUL
+rd/s/q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\迅雷软件"2>NUL
+del /q "%AppData%\Microsoft\Windows\Libraries\迅雷下载.library-ms" >NUL 2>NUL
+
+::清除注册表相关残留键值
+reg delete "HKCU\Software\Thunder Network" /f >NUL 2>NUL
+reg delete "HKLM\Software\Thunder Network" /f >NUL 2>NUL
+reg delete "HKLM\Software\Wow6432Node\Thunder Network" /f >NUL 2>NUL
+
+reg delete "HKLM\SOFTWARE\Classes\.td" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xlb" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.xlb" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.xltd" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\ed2k" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\magnet" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\thunder" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\thunderx" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.torrent" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.downlist" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.thunderskin" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\ThunderSkin.6" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Xunlei.XLB.6" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Xunlei.TDFile.6" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Xunlei.LSTFile.6" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Xunlei.Bittorrent.6" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Xunlei.ThunderSkin.6" /f >NUL 2>NUL
+
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\thunder" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\thunder" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\MozillaPlugins\@xunlei.com/npxunlei;version=1.0.0.2" /f >NUL 2>NUL
+reg delete "HKLM\Software\MozillaPlugins\@xunlei.com/npxunlei;version=1.0.0.2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\MozillaPlugins\@xunlei.com/npxunlei;version=1.0.0.2" /f >NUL 2>NUL
+reg delete "HKLM\Software\Wow6432Node\MozillaPlugins\@xunlei.com/npxunlei;version=1.0.0.2" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Mozilla\NativeMessagingHosts\com.xunlei.thunder" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Mozilla\NativeMessagingHosts\com.xunlei.thunder" /f >NUL 2>NUL
+reg delete "HKCU\Software\Google\Chrome\NativeMessagingHosts\com.xunlei.thunder" /f >NUL 2>NUL
+reg delete "HKLM\Software\Google\Chrome\NativeMessagingHosts\com.xunlei.thunder" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\WOW6432Node\Google\Chrome\NativeMessagingHosts\com.xunlei.thunder" /f >NUL 2>NUL
+reg delete "HKCU\Software\Microsoft\Internet Explorer\MenuExt\使用迅雷下载" /f >NUL 2>NUL
+reg delete "HKCU\Software\Microsoft\Internet Explorer\MenuExt\使用迅雷下载全部链接" /f >NUL 2>NUL
+
+reg delete "HKLM\SOFTWARE\Classes\APlayer3.Player" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\APlayer3.Player.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\APlayerUI.Player" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\APlayerUI.Player.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\AXmpLite" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{06A28264-EF0A-48E5-AD42-1327E5328955}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{99DC6162-65E4-476E-87CE-9E5944D323E2}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\{AD13FB62-BF1B-4434-9BC3-20678B5287DE}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\ShlExt.DLL" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\UserAgent.DLL" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\AppID\XunleiBHO64.DLL" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{002AE4F2-96AB-4dfa-AE2E-605217F8A84C}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{002AE4F2-96AB-4dfa-AE2E-605217F8A84C}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{004B0726-A010-4abf-8556-FCDB7F1FCA1E}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{0119CCC1-8EAC-43E9-AA7D-87F64B44AA4D}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{67486EAA-ED7F-4F84-82EB-26F23F57D690}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{889D2FEB-5411-4565-8998-1DD2C5261283}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\CLSID\{8F556DA3-987D-47b0-AA88-EB8D52FE1B9A}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{2C543E47-732B-4EDE-8AC9-C3D27C861FAA}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{559BAA6F-E3FE-4B0B-90D7-2C0BFA5145F1}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{7BD58878-F0AE-406B-B5CE-871C4E01B237}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Interface\{CF1FC792-7F5C-4DB0-A00A-D209F5FFBD16}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MiniXmpShlExt.ContextMenuExt" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\MiniXmpShlExt.ContextMenuExt.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Thunder.MyComputerIcon" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Thunder.MyComputerIcon.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{01560F06-CEE2-46FF-8997-308A366175E9}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{1957CD06-E83F-477D-AD1A-5F6B8C30C561}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{26D657AE-A466-4F44-AB1D-5CFFFADBED97}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{32648605-550A-40FA-8F3B-90470FF9EE1F}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{5E1356B8-3AD9-48AF-AA80-D76E5415E81B}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{64A3A559-FFBB-49BA-A947-C6104804D644}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{97830570-35FE-4195-83DE-30E79B718713}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\TypeLib\{A9757030-96F6-485E-A8AB-5B5137462472}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\UserAgent.Thunder59Agent" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\UserAgent.Thunder59Agent.1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{1E935CBE-2951-48FE-93C8-4B7F1E5AA14E}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{22F1FF40-C53F-4360-A70E-F06540CB986B}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{23A860E9-0C41-4E01-9206-D3FC0E413645}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{485463B7-8FB2-4B3B-B29B-8B919B0EACCE}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{485463B7-8FB2-4B3B-B29B-8B919B0EACCE}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{6EE9CD3E-A386-4DAE-9737-A759DBF927AE}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{A1E760B9-78EE-4570-909A-19ABF149F31E}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{A63DEB30-9A77-492C-A380-3CA64A53C9EF}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{A9332148-C691-4B9D-91FC-B9C461DBE9DD}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{C46DFF24-22C0-4C8F-87D0-5CADE3C2ADD6}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{DE05CF4A-7B0A-4775-B5E5-396244938679}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{F19169FA-7EB8-45EB-8800-0D1F7C88F553}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\Interface\{2C543E47-732B-4EDE-8AC9-C3D27C861FAA}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\Interface\{559BAA6F-E3FE-4B0B-90D7-2C0BFA5145F1}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\Interface\{7BD58878-F0AE-406B-B5CE-871C4E01B237}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\Interface\{C46DFF24-22C0-4C8F-87D0-5CADE3C2ADD6}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\Interface\{CF1FC792-7F5C-4DB0-A00A-D209F5FFBD16}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\Wow6432Node\Interface\{F19169FA-7EB8-45EB-8800-0D1F7C88F553}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.3g2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.3gp" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.3gp2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.3gpp" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.aac" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ac3" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.acc" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.aiff" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.amr" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.amv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ape" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.asf" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ass" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.au" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.avi" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.bik" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.cda" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.csf" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.divx" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.dts" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.dvd" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.evo" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.f4v" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.f5v" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.flac" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.flv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.hflv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.hlv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.hmkv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.hmp4" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.letv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m1a" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m1v" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m2a" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m2p" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m2ts" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m2v" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m4a" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m4b" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m4p" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m4r" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.m4v" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mid" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.midi" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mk5" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mka" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mkv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mod" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mov" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mp2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mp2v" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mp3" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mp4" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mp5" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpa" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpc" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpe" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpeg" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpeg1" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpeg2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpeg4" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpg" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mpv2" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.mts" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.oga" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ogg" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ogm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ogv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ogx" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.pmp" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.psb" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.pva" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.qt" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ra" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ram" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.rm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.rmvb" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.rpm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.rt" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.scm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.smi" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.smil" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.srt" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ssa" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.sub" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.sup" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.swf" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.tp" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.tpr" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.ts" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.tta" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.usf" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.vob" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.vp6" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.wav" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.wm" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.wma" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.wmp" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.wmv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.wv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\xmplite.xlmv" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Clients\Media\XMPLite" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\{004B0726-A010-4ABF-8556-FCDB7F1FCA1E}" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Class\{5DEB2780-5239-47C2-AEB7-B8BD9BEB3F80}" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Class\{9FB5F2D4-203E-41D2-932F-6DE145F9756C}" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\XLGuard" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\XLServicePlatform" /f >NUL 2>NUL
+reg delete "HKLM\SYSTEM\CurrentControlSet\Services\XLWFP" /f >NUL 2>NUL
+
+reg delete "HKCU\CLSID\{004B0726-A010-4abf-8556-FCDB7F1FCA1E}" /f >NUL 2>NUL
+reg delete "HKCU\CLSID\{DE05CF4A-7B0A-4775-B5E5-396244938679}" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\.thunderskin" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\xlb" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\.xlb" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\.xltd" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\bittorrent" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\ed2k" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\magnet" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\thunder" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\thunderx" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\Xunlei.Bittorrent.6" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\Xunlei.LSTFile.6" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\Xunlei.TDFile.6" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\Xunlei.ThunderSkin.6" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\Xunlei.XLB.6" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷离线下载" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷下载" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt\&使用&迅雷下载全部链接" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.torrent\OpenWithProgids" /v "Xunlei.Bittorrent.6" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.xltd\OpenWithList" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.xltd\OpenWithProgids" /v "Xunlei.TDFile.6" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Mozilla\NativeMessagingHosts\com.xunlei.thunder" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\MozillaPlugins\@xunlei.com" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Thunder Network" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Ext\Stats\{002AE4F2-96AB-4dfa-AE2E-605217F8A84C}" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Ext\Stats\{485463B7-8FB2-4B3B-B29B-8B919B0EACCE}" /f >NUL 2>NUL
+
+
+DEL /F/Q "%~dp0BHO\ThunderAgent*.dll" >NUL 2>NUL
+IF EXIST "%~dp0BHO\ThunderAgent.dll" ren "%~dp0BHO\ThunderAgent.dll" "ThunderAgent.dll.%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+IF EXIST "%~dp0BHO\ThunderAgent64.dll" ren "%~dp0BHO\ThunderAgent64.dll" "ThunderAgent64.dll.%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+PUSHD .. & RD /S/Q "%~DP0" 2>NUL
diff --git a/scripts/tim/install.bat b/scripts/tim/install.bat
new file mode 100644
index 00000000000..bb670711ca3
--- /dev/null
+++ b/scripts/tim/install.bat
@@ -0,0 +1,74 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im TIM.exe /t >NUL 2>NUL
+taskkill /f /im TIMApp.exe >NUL 2>NUL
+taskkill /f /im QQProtect.exe >NUL 2>NUL
+taskkill /f /im TXPlatform.exe >NUL 2>NUL
+taskkill /f /im QQExternal.exe >NUL 2>NUL
+taskkill /f /im QQScLauncher.exe >NUL 2>NUL
+
+::注册腾讯软件运行库组件
+if exist Bin\TXSSO regsvr32 /s Bin\TXSSO\Bin\SSOLUIControl.dll
+if exist Bin\TXSSO regsvr32 /s Bin\TXSSO\Bin\npSSOAxCtrlForPTLogin.dll
+
+::注册浏览器快速登陆组件
+if exist Bin\TXSSO\Npchrome regsvr32 /s Bin\TXSSO\Npchrome\npactivex.dll
+
+::注册群共享微云上传组件
+regsvr32 /s Plugin\Com.Tencent.NetDisk\Bin\QQDisk\Bin\TXFTNActiveX.dll
+
+::注册网页关联、表情包类型、下载组件等协议
+if exist Bin\Timwp.dll regsvr32 /s Bin\Timwp.dll
+if exist Bin\AppCom.dll regsvr32 /s Bin\AppCom.dll
+if exist Bin\TXPFProxy.dll regsvr32 /s Bin\TXPFProxy.dll
+if exist Bin\KernelUtil.dll regsvr32 /s Bin\KernelUtil.dll
+if exist Bin\TXPlatform.exe Bin\TXPlatform.exe /RegServer
+if exist Bin\QQExternal.exe Bin\QQExternal.exe /SetupRegister
+if exist Bin\DownloadProxyPS.dll regsvr32 /s Bin\DownloadProxyPS.dll
+
+::清除注册组件及相关残留数据
+rd/s/q "%AppData%\Tencent\TIM" 2>NUL
+rd/s/q "%AppData%\Tencent\Logs" 2>NUL
+rd/s/q "%AppData%\Tencent\TXSSO" 2>NUL
+rd/s/q "%AppData%\Tencent\QTalk"2>NUL
+rd/s/q "%AppData%\Tencent\libsdk"2>NUL
+rd/s/q "%AppData%\Tencent\QQLite"2>NUL
+rd/s/q "%AppData%\QQAppAssistant"2>NUL
+rd/s/q "%AppData%\Tencent\Common"2>NUL
+rd/s/q "%AppData%\Tencent\libsdk"2>NUL
+rd/s/q "%AppData%\Tencent\beacon"2>NUL
+rd/s/q "%AppData%\Tencent\SafeBas"2>NUL
+rd/s/q "%AppData%\Tencent\QQPCMGR"2>NUL
+rd/s/q "%APPDATA%\Tencent\QQDoctor"2>NUL
+rd/s/q "%AppData%\Tencent\QQTempSys"2>NUL
+rd/s/q "%AppData%\Tencent\Tencentdl" 2>NUL
+rd/s/q "%AppData%\Tencent\DeskUpdate"2>NUL
+rd/s/q "%AppData%\Tencent\QQDownload" 2>NUL
+rd/s/q "%AppData%\Tencent\QQ\QQProtect" 2>NUL
+rd/s/q "%AppData%\Tencent\AndroidAssist"2>NUL
+rd/s/q "%AppData%\Tencent\AndroidServer"2>NUL
+rd/s/q "%AppData%\Tencent\QQPhoneManager"2>NUL
+rd/s/q "%AppData%\Tencent\QQ\commonf_inst" 2>NUL
+rd/s/q "%AppData%\Tencent\QQPhoneAssistant"2>NUL
+rd/s/q "%AppData%\Tencent\QQ\QQAntiPhishing" 2>NUL
+del/f/q "%AppData%\Tencent\QQCall*.exe">NUL 2>NUL
+
+IF NOT EXIST "%ProgramW6432%" (
+::标记软件检测路径(安装视频留言和影音播放等组件下载需要)
+reg add "HKLM\Software\Tencent\TIM" /f /v "Install" /d "%~dp0\" >NUL 2>NUL
+::标记软件版本号(企业类型网页会话需要,CRM组件也需要保留)
+reg add "HKLM\Software\Tencent\TIM" /f /v "version" /d "56.57.0.22051.0" >NUL 2>NUL
+) else (
+reg add "HKLM\Software\Tencent\TIM" /f /v "Install" /d "%~dp0\" /reg:32 >NUL 2>NUL
+reg add "HKLM\Software\Tencent\TIM" /f /v "version" /d "56.57.0.22051.0" /reg:32 >NUL 2>NUL
+)
+
+::解决Windows 7或更高版在开启UAC用户账户控制情况下更改数据保存位置失败问题
+ver|findstr "\<6\.[0-9]\.[0-9][0-9]*\> \<10\.[0-9]\.[0-9][0-9]*\>" >NUL && (
+SET Data=^& echo
+if not exist "%Public%\Documents\Tencent\QQ\UserDataInfo.ini" md "%Public%\Documents\Tencent\QQ" 2>NUL
+if not exist "%Public%\Documents\Tencent\QQ\UserDataInfo.ini" echo.%Data%>>"%Public%\Documents\Tencent\QQ\UserDataInfo.ini" 2>NUL
+)
+
+ECHO.&ECHO 完成 &TIMEOUT /t 3 >NUL&EXIT
diff --git a/scripts/tim/uninstall.bat b/scripts/tim/uninstall.bat
new file mode 100644
index 00000000000..893d049b2e2
--- /dev/null
+++ b/scripts/tim/uninstall.bat
@@ -0,0 +1,124 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im TIM.exe /t >NUL 2>NUL
+taskkill /f /im TIMApp.exe >NUL 2>NUL
+taskkill /f /im QQProtect.exe >NUL 2>NUL
+taskkill /f /im TXPlatform.exe >NUL 2>NUL
+taskkill /f /im QQExternal.exe >NUL 2>NUL
+taskkill /f /im GVStarter.exe >NUL 2>NUL
+taskkill /f /im QQScLauncher.exe >NUL 2>NUL
+
+::卸载相关组件
+regsvr32 /s /u Bin\TXSSO\Bin\SSOLUIControl.dll
+regsvr32 /s /u Bin\TXSSO\Npchrome\npactivex.dll
+regsvr32 /s /u Bin\TXSSO\Bin\npSSOAxCtrlForPTLogin.dll
+if exist Bin\Timwp.dll regsvr32 /s /u Bin\Timwp.dll
+if exist Bin\AppCom.dll regsvr32 /s /u Bin\AppCom.dll
+if exist Bin\CPHelper.dll regsvr32 /s /u Bin\CPHelper.dll
+if exist Bin\TXPFProxy.dll regsvr32 /s /u Bin\TXPFProxy.dll
+if exist Bin\KernelUtil.dll regsvr32 /s /u Bin\KernelUtil.dll
+if exist Bin\TXPlatform.exe Bin\TXPlatform.exe /UnregServer
+if exist Bin\DownloadProxyPS.dll regsvr32 /s /u Bin\DownloadProxyPS.dll
+regsvr32 /s /u Plugin\Com.Tencent.NetDisk\Bin\QQDisk\Bin\TXFTNActiveX.dll
+
+if exist "%AppData%\Tencent\QQ\QQAntiPhishing\AccountProtect.dll" (
+regsvr32 /s /u "%AppData%\Tencent\QQ\QQAntiPhishing\AccountProtect.dll"
+)
+IF NOT EXIST "%ProgramW6432%" (
+if exist ShellExt\QQShellExt.dll regsvr32 /s /u ShellExt\QQShellExt.dll
+if exist "%CommonProgramFiles%\Tencent\Npchrome\npactivex.dll" regsvr32 /s /u "%CommonProgramFiles%\Tencent\Npchrome\npactivex.dll"
+rd /s/q "%CommonProgramFiles%\Tencent\QQDownload"2>NUL
+rd /s/q "%CommonProgramFiles%\Tencent\Npchrome"2>NUL
+rd /s/q "%CommonProgramFiles%\Tencent\TXFTN"2>NUL
+) ELSE (
+if exist ShellExt\QQShellExt64.dll regsvr32 /s /u ShellExt\QQShellExt64.dll
+if exist "%CommonProgramFiles(x86)%\Tencent\Npchrome\npactivex.dll" regsvr32 /s /u "%CommonProgramFiles(x86)%\Tencent\Npchrome\npactivex.dll"
+rd /s/q "%CommonProgramFiles(x86)%\Tencent\QQDownload"2>NUL
+rd /s/q "%CommonProgramFiles(x86)%\Tencent\Npchrome"2>NUL
+rd /s/q "%CommonProgramFiles(x86)%\Tencent\TXFTN"2>NUL
+)
+
+::清除卸载组件及相关残留数据
+rd/s/q "%AppData%\od" 2>NUL
+del/q "bc_*.db" >NUL 2>NUL
+del/q "Bin\bc_*.db" >NUL 2>NUL
+del/q "Bin\beacon_*.log" >NUL 2>NUL
+rd/s/q "%AppData%\Tencent\TIM" 2>NUL
+rd/s/q "%AppData%\Tencent\Logs" 2>NUL
+rd/s/q "%AppData%\Tencent\TXSSO" 2>NUL
+rd/s/q "%AppData%\Tencent\QTalk"2>NUL
+rd/s/q "%AppData%\Tencent\libsdk"2>NUL
+rd/s/q "%AppData%\Tencent\QQLite"2>NUL
+rd/s/q "%AppData%\QQAppAssistant"2>NUL
+rd/s/q "%AppData%\Tencent\Common"2>NUL
+rd/s/q "%AppData%\Tencent\SafeBas"2>NUL
+rd/s/q "%AppData%\Tencent\QQPCMGR"2>NUL
+rd/s/q "%APPDATA%\Tencent\QQDoctor"2>NUL
+rd/s/q "%AppData%\Tencent\QQTempSys"2>NUL
+rd/s/q "%AppData%\Tencent\Tencentdl"2>NUL
+rd/s/q "%AppData%\Tencent\DeskUpdate"2>NUL
+rd/s/q "%AppData%\Tencent\QQDownload"2>NUL
+rd/s/q "%AppData%\Tencent\QQ\QQProtect"2>NUL
+rd/s/q "%AppData%\Tencent\AndroidAssist"2>NUL
+rd/s/q "%AppData%\Tencent\AndroidServer"2>NUL
+rd/s/q "%AppData%\Tencent\QQPhoneManager"2>NUL
+rd/s/q "%AppData%\Tencent\QQ\commonf_inst"2>NUL
+rd/s/q "%AppData%\Tencent\QQPhoneAssistant"2>NUL
+rd/s/q "%AppData%\Tencent\QQ\QQAntiPhishing"2>NUL
+del/f/q "%AppData%\Tencent\QQCall*.exe">NUL 2>NUL
+rd/s/q "%Public%\Documents\Tencent"2>NUL
+rd/s/q "%ProgramData%\Tencent\OD"2>NUL
+
+::清除桌面和开始菜单快捷方式
+ver|findstr "5\.[0-9]\.[0-9][0-9]*" >NUL && (
+del/q "%UserProfile%\桌面\腾讯TIM.lnk" >NUL 2>NUL
+del/q "%AllUsersProfile%\桌面\腾讯TIM.lnk" >NUL 2>NUL
+rd/s/q "%UserProfile%\「开始」菜单\程序\腾讯软件\腾讯TIM"2>NUL
+rd/s/q "%AllUsersProfile%\「开始」菜单\程序\腾讯软件\腾讯TIM"2>NUL )
+ver|findstr "\<6\.[0-9]\.[0-9][0-9]*\> \<10\.[0-9]\.[0-9][0-9]*\>" >NUL && (
+del/q "%Public%\Desktop\腾讯TIM.lnk" >NUL 2>NUL
+del/q "%UserProfile%\Desktop\腾讯TIM.lnk" >NUL 2>NUL
+rd/s/q "%AppData%\Microsoft\Windows\Start Menu\Programs\腾讯软件\腾讯TIM"2>NUL
+rd/s/q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\腾讯软件\腾讯TIM"2>NUL )
+
+::清除系统程序卸载项
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TIM" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TIM" /f /reg:32 >NUL 2>NUL
+
+::清除相关注册表键值
+reg delete "HKCU\Software\Tencent\TIM" /f >NUL 2>NUL
+reg delete "HKLM\Software\Tencent\TIM" /f >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\Plugin" /F >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\TodayDo" /F >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\QQProtect" /F>NUL 2>NUL
+reg delete "HKCU\Software\Tencent\PlatForm_Type_List" /F >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\PLATFORM_CLSID_LIST" /F >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\EMOTION.File" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\THEMEX.Package" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Classes\EMOTION.Package" /f >NUL 2>NUL
+reg delete "HKCU\Software\Tencent\AndroidAssistant" /F>NUL 2>NUL
+reg delete "HKEY_USERS\.DEFAULT\Software\Tencent\QQProtect" /f >NUL 2>NUL
+reg delete "HKLM\Software\Classes\Tencent" /F /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Tencent\PlatForm_Type_List" /F>NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Tencent\QQPhotoDrawEx" /F /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Tencent\BackupDownloader" /F /reg:32 >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Tencent\PlatForm_Type_List" /F /reg:32 >NUL 2>NUL
+reg delete "HKEY_USERS\.DEFAULT\Software\Tencent\bugReport\QQProtect" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Tencent\bugReport\TIM" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Tencent\bugReport\QQUrlMgr" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Internet Explorer\Low Rights\ElevationPolicy\{BB32E0A4-AC96-4e85-8B8F-D7A90FDF715D}" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Internet Explorer\Low Rights\ElevationPolicy\{BB32E0A4-AC96-4e85-8B8F-D7A90FDF715D}" /f /reg:32 >NUL 2>NUL
+
+
+ IF EXIST ShellExt DEL /F/Q "ShellExt\*.*" >NUL 2>NUL
+ IF EXIST ShellExt\QQShellExt.dll ren ShellExt\QQShellExt.dll "QQShellExt.dll.%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+ IF EXIST ShellExt\QQShellExt64.dll ren ShellExt\QQShellExt64.dll "QQShellExt64.dll.%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+ IF EXIST "users" (
+ FOR /F "delims=*" %%a IN ('dir /a/b *.*^|findstr /v /i "users$"') DO (
+ RD /S/Q "%%a" >NUL 2>NUL & DEL /F/Q "%%a" >NUL 2>NUL)
+ ) ELSE (
+ IF EXIST ShellExt DEL /F/Q "ShellExt\*.*" >NUL 2>NUL
+ IF EXIST ShellExt\QQShellExt.dll ren ShellExt\QQShellExt.dll "QQShellExt.dll.%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+ IF EXIST ShellExt\QQShellExt64.dll ren ShellExt\QQShellExt64.dll "QQShellExt64.dll.%time:~0,2%%time:~3,2%%time:~6,2%.tmp" >NUL 2>NUL
+ PUSHD .. & RD /S/Q "%~DP0" >NUL 2>NUL)
diff --git a/scripts/uniextract2/disable-warning.ps1 b/scripts/uniextract2/disable-warning.ps1
new file mode 100644
index 00000000000..2e9ae9d6546
--- /dev/null
+++ b/scripts/uniextract2/disable-warning.ps1
@@ -0,0 +1,6 @@
+# This is to disable the warning popup when the app/command is executed for the first time.
+$cont = Get-Content "$dir\UniExtract.ini"
+if ($cont -match 'warnexecute=1') {
+ $cont = $cont.Replace('warnexecute=1', 'warnexecute=0')
+ $cont | Set-Content "$dir\UniExtract.ini"
+}
\ No newline at end of file
diff --git a/scripts/uniextract2_fixed/disable-warning.ps1 b/scripts/uniextract2_fixed/disable-warning.ps1
new file mode 100644
index 00000000000..2e9ae9d6546
--- /dev/null
+++ b/scripts/uniextract2_fixed/disable-warning.ps1
@@ -0,0 +1,6 @@
+# This is to disable the warning popup when the app/command is executed for the first time.
+$cont = Get-Content "$dir\UniExtract.ini"
+if ($cont -match 'warnexecute=1') {
+ $cont = $cont.Replace('warnexecute=1', 'warnexecute=0')
+ $cont | Set-Content "$dir\UniExtract.ini"
+}
\ No newline at end of file
diff --git a/scripts/uninstall_cudnn.ps1 b/scripts/uninstall_cudnn.ps1
new file mode 100644
index 00000000000..eb82c71bf7e
--- /dev/null
+++ b/scripts/uninstall_cudnn.ps1
@@ -0,0 +1,10 @@
+if (!$env:CUDA_PATH) {
+ Write-Error "Environment variable 'CUDA_PATH' not found."
+ return
+}
+$cudnnFiles = Get-ChildItem -LiteralPath $env:CUDA_PATH -File -Recurse | Where-Object {
+ $_.Name -like 'cudnn64.*.dll' -or
+ $_.Name -like 'cudnn.h' -or
+ $_.Name -like 'cudnn.lib'
+}
+sudo Remove-Item -LiteralPath $cudnnFiles -Force
diff --git a/scripts/uninstall_keypirinha_plugin.ps1 b/scripts/uninstall_keypirinha_plugin.ps1
new file mode 100644
index 00000000000..d566c83f47d
--- /dev/null
+++ b/scripts/uninstall_keypirinha_plugin.ps1
@@ -0,0 +1,3 @@
+$packageName = '{0}.keypirinha-package' -f ($app -replace '^keypirinha-', '')
+$packageDir = '{0}/../portable/Profile/Packages' -f (PSWinUtil\Find-Path -Name 'keypirinha.exe' -Program -Strict)
+Remove-Item -LiteralPath ('{0}/{1}' -f $packageDir, $packageName)
diff --git a/scripts/uninstall_youtube-dl-animelover1984.ps1 b/scripts/uninstall_youtube-dl-animelover1984.ps1
new file mode 100644
index 00000000000..bf92f02c48e
--- /dev/null
+++ b/scripts/uninstall_youtube-dl-animelover1984.ps1
@@ -0,0 +1,8 @@
+pip uninstall youtube-dl -y
+
+Get-Command -Name "pip.exe" |
+Select-Object -ExpandProperty Source |
+Split-Path -Parent |
+Get-ChildItem -LiteralPath { $_ } -File |
+Where-Object { $_.Name -in "youtube-dl-animelover1984.exe", "youtube-dl-animelover1984-script.py" } |
+Remove-Item -LiteralPath { $_.FullName }
diff --git a/scripts/versions.mjs b/scripts/versions.mjs
new file mode 100644
index 00000000000..7d1226dd71b
--- /dev/null
+++ b/scripts/versions.mjs
@@ -0,0 +1,85 @@
+export const stable = {
+ "v2": [
+ "2.08",
+ "2.09",
+ "2.10",
+ "2.11",
+ "2.12",
+ "2.13",
+ "2.14",
+ "2.15",
+ "2.16",
+ "2.17",
+ "2.18",
+ "2.19",
+ "2.20",
+ "2.21",
+ "2.22",
+ "2.23",
+ "2.24",
+ "2.25",
+ "2.26",
+ "2.27",
+ "2.28",
+ "2.29",
+ "2.30",
+ "2.31",
+ "2.32",
+ "2.33",
+ "2.34",
+ "2.35",
+ "2.36",
+ "2.37",
+ "2.38",
+ "2.39",
+ "2.40",
+ "2.41",
+ "2.42",
+ "2.43",
+ "2.44",
+ "2.45",
+ "2.46",
+ "2.47",
+ "2.48",
+ "2.49",
+ "2.50",
+ "2.51"
+ ],
+ "v3": [
+ "3.0",
+ "3.01",
+ "3.02",
+ "3.02.1",
+ "3.03",
+ "3.04",
+ "3.05",
+ "3.06",
+ "3.06.1",
+ "3.07",
+ "3.08"
+ ],
+ "unavailable": [
+ "2.0",
+ "2.01",
+ "2.02",
+ "2.03",
+ "2.04",
+ "2.05",
+ "2.06",
+ "2.07"
+ ]
+};
+
+export const prerelease = {
+ "v3": [
+ "3.0rc2",
+ "3.0rc1",
+ "3.0b3",
+ "3.0b2",
+ "3.0b1",
+ "3.0b0",
+ "3.0a2",
+ "3.0a1",
+ "3.0a0"
+ ]
+};
\ No newline at end of file
diff --git a/scripts/vscode-install-context-it.reg b/scripts/vscode-install-context-it.reg
new file mode 100644
index 00000000000..97a003d1538
--- /dev/null
+++ b/scripts/vscode-install-context-it.reg
@@ -0,0 +1,19 @@
+Windows Registry Editor Version 5.00
+
+[HKEY_CURRENT_USER\Software\Classes\*\shell\Apri con &Code]
+@="Apri con &Code"
+"Icon"="$code"
+[HKEY_CURRENT_USER\Software\Classes\*\shell\Apri con &Code\command]
+@="\"$code\" \"%1\""
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\shell\Apri con &Code]
+@="Apri con &Code"
+"Icon"="$code"
+[HKEY_CURRENT_USER\Software\Classes\Directory\shell\Apri con &Code\command]
+@="\"$code\" \"%1\""
+
+[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\Apri con &Code]
+@="Apri con &Code"
+"Icon"="$code"
+[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\Apri con &Code\command]
+@="\"$code\" \"%V\""
diff --git a/scripts/vscode-uninstall-context-it.reg b/scripts/vscode-uninstall-context-it.reg
new file mode 100644
index 00000000000..cd8191d01c2
--- /dev/null
+++ b/scripts/vscode-uninstall-context-it.reg
@@ -0,0 +1,8 @@
+Windows Registry Editor Version 5.00
+
+[-HKEY_CURRENT_USER\Software\Classes\*\shell\Apri con &Code]
+[-HKEY_CURRENT_USER\Software\Classes\*\shell\Apri con &Code\command]
+[-HKEY_CURRENT_USER\Software\Classes\Directory\shell\Apri con &Code]
+[-HKEY_CURRENT_USER\Software\Classes\Directory\shell\Apri con &Code\command]
+[-HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\Apri con &Code]
+[-HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\Apri con &Code\command]
diff --git a/scripts/vulkan/install-vk-layers.ps1 b/scripts/vulkan/install-vk-layers.ps1
new file mode 100644
index 00000000000..46c957e26b1
--- /dev/null
+++ b/scripts/vulkan/install-vk-layers.ps1
@@ -0,0 +1,15 @@
+if ($global -and (-not $is_admin)) {
+ Write-Host "ERROR write registries for global installation needs admin rights!" -ForegroundColor DarkRed
+ exit 1
+}
+
+$reg_root = if ($global) { [Microsoft.Win32.Registry]::LocalMachine } else { [Microsoft.Win32.Registry]::CurrentUser }
+$vk_explicit_reg_path = 'SOFTWARE\Khronos\Vulkan\ExplicitLayers'
+$vk_explicit_reg = $reg_root.CreateSubKey($vk_explicit_reg_path)
+
+$vk_layers = Get-ChildItem -Path $vulkan_bin -Filter '*.json' | ForEach-Object { $_.FullName }
+foreach ($vk_layer in $vk_layers) {
+ $vk_explicit_reg.SetValue($vk_layer, 0, [Microsoft.Win32.RegistryValueKind]::DWord)
+}
+
+$vk_explicit_reg.Close()
diff --git a/scripts/weasel/install.ahk b/scripts/weasel/install.ahk
new file mode 100644
index 00000000000..4443a24dd36
--- /dev/null
+++ b/scripts/weasel/install.ahk
@@ -0,0 +1,10 @@
+#NoEnv
+#NoTrayIcon
+#Warn ; Enable warnings to assist with detecting common errors.
+SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
+SetTitleMatchMode, 1 ; A windows's title must start with the specified WinTitle to be a match.
+SetControlDelay 0
+SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
+
+Process,Wait,WeaselDeployer.exe
+Process,Close,WeaselDeployer.exe
diff --git a/scripts/wechat/uninstall.bat b/scripts/wechat/uninstall.bat
new file mode 100644
index 00000000000..59f844ee9d1
--- /dev/null
+++ b/scripts/wechat/uninstall.bat
@@ -0,0 +1,27 @@
+@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(
+powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+taskkill /f /im WeChat* /t >NUL 2>NUL
+taskkill /f /im xwalk_service.exe >NUL 2>NUL
+
+rd/s/q "%Temp%\WeChatSetup"2>NUL
+rd/s/q "%Temp%\WeChatUninst"2>NUL
+rd/s/q "%AppData%\Tencent\WeChat"2>NUL
+
+ver|findstr "\<6\.[0-9]\.[0-9][0-9]*\> \<10\.[0-9]\.[0-9][0-9]*\>" >NUL&&(
+del/q "%Public%\Desktop\微信.lnk" >NUL 2>NUL
+del/q "%UserProfile%\Desktop\微信.lnk" >NUL 2>NUL
+rd/s/q "%AppData%\Microsoft\Windows\Start Menu\Programs\腾讯软件\微信"2>NUL
+rd/s/q "%ProgramData%\Microsoft\Windows\Start Menu\Programs\腾讯软件\微信"2>NUL
+rd/s/q "%localappdata%\Tencent\BrowsingService"2>NUL
+)
+ver|findstr "5\.[0-9]\.[0-9][0-9]*" >NUL&&(
+del/q "%UserProfile%\桌面\腾讯软件\微信.lnk" >NUL 2>NUL
+del/q "%AllUsersProfile%\桌面\腾讯软件\微信.lnk" >NUL 2>NUL
+rd/s/q "%UserProfile%\「开始」菜单\程序\腾讯软件\微信" 2>NUL
+rd/s/q "%AllUsersProfile%\「开始」菜单\程序\腾讯软件\微信" 2>NUL
+rd/s/q "%UserProfile%\Local Settings\Application Data\Tencent\BrowsingService"2>NUL
+)
+reg delete "HKCU\Software\Tencent\WeChat" /f>NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WeChat" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WeChat" /f /reg:32 >NUL 2>NUL
diff --git a/scripts/winrar/Win11_DARK.kentaP.2.0_64x.theme.rar b/scripts/winrar/Win11_DARK.kentaP.2.0_64x.theme.rar
new file mode 100644
index 00000000000..7c8d8ff325e
Binary files /dev/null and b/scripts/winrar/Win11_DARK.kentaP.2.0_64x.theme.rar differ
diff --git a/scripts/winrar/Win11_kentaP.2.0_64x.theme.rar b/scripts/winrar/Win11_kentaP.2.0_64x.theme.rar
new file mode 100644
index 00000000000..e6cdf3cb126
Binary files /dev/null and b/scripts/winrar/Win11_kentaP.2.0_64x.theme.rar differ
diff --git a/scripts/winrar/Windows_11_x64_.theme.rar b/scripts/winrar/Windows_11_x64_.theme.rar
new file mode 100644
index 00000000000..8c102666526
Binary files /dev/null and b/scripts/winrar/Windows_11_x64_.theme.rar differ
diff --git a/scripts/winrar/rarreg.key b/scripts/winrar/rarreg.key
new file mode 100644
index 00000000000..bc1489afb91
--- /dev/null
+++ b/scripts/winrar/rarreg.key
@@ -0,0 +1,11 @@
+RAR registration data
+State Grid Corporation Of China
+50000 PC usage license
+UID=5827a0bd1c43525d0a5d
+64122122500a5d3d56f784f3a440ac3fb632d34e08bbaa37fc7712
+6acaeb8eb044810272e86042cb7c79b1da0eaf88c79f8a7c6dd77b
+dba335e27a109997ac90fb0e10e4129e79f46c42b4ee1832fa5113
+7443fcc1124840d4dd36f3af84a5c915a760b18c6394f938168227
+fbf29edbc4b34ef85ee53fbfca71814a82afadf073876b4b033451
+b6292a7cc7975b3ff3cc73404abbf7c126787344169eeae4609f62
+c9ffbc159bf2640ad5d9b88f8fa9d9cbf2b7e5b022a21938465244
diff --git a/scripts/winrar/rarreg1.key b/scripts/winrar/rarreg1.key
new file mode 100644
index 00000000000..35f9e8e95fe
--- /dev/null
+++ b/scripts/winrar/rarreg1.key
@@ -0,0 +1,11 @@
+RAR registration data
+Federal Agency for Education
+1000000 PC usage license
+UID=b621cca9a84bc5deffbf
+6412612250ffbf533df6db2dfe8ccc3aae5362c06d54762105357d
+5e3b1489e751c76bf6e0640001014be50a52303fed29664b074145
+7e567d04159ad8defc3fb6edf32831fd1966f72c21c0c53c02fbbb
+2f91cfca671d9c482b11b8ac3281cb21378e85606494da349941fa
+e9ee328f12dc73e90b6356b921fbfb8522d6562a6a4b97e8ef6c9f
+fb866be1e3826b5aa126a4d2bfe9336ad63003fc0e71c307fc2c60
+64416495d4c55a0cc82d402110498da970812063934815d81470829275
diff --git a/scripts/winrar/winrar-custom-settings.reg b/scripts/winrar/winrar-custom-settings.reg
new file mode 100644
index 00000000000..14741bbf987
--- /dev/null
+++ b/scripts/winrar/winrar-custom-settings.reg
@@ -0,0 +1,35 @@
+Windows Registry Editor Version 5.00
+
+[HKEY_CURRENT_USER\Software\WinRAR\Extraction]
+;取消“路径——路径中追加文件名”
+"AppendName"=dword:00000000
+;勾选“路径——从解压路径移除多余的文件夹”
+"RemoveRedundantFolder"=dword:00000001
+
+[HKEY_CURRENT_USER\Software\WinRAR\General]
+;取消“常规——保留压缩文件历史记录”
+"History"=dword:00000000
+;取消“常规——在对话框中允许保存历史记录”
+"DlgHistory"=dword:00000000
+;取消“常规——启用声音”
+"Sound"=dword:00000000
+;取消“路径——启动时恢复到上次工作的文件夹”
+"RestoreFolder"=dword:00000000
+
+;勾选“综合——层叠右键关联菜单”
+[HKEY_CURRENT_USER\Software\WinRAR\Setup]
+"CascadedMenu"=dword:00000001
+
+;取消右键关联菜单项目——“压缩到<压缩文件名称>并Email”和“压缩并E-mail”
+[HKEY_CURRENT_USER\Software\WinRAR\Setup\MenuItems]
+"EmailArc"=dword:00000000
+"EmailOpt"=dword:00000000
+
+;解压带密码的文件时勾选“显示密码”
+[HKEY_CURRENT_USER\Software\WinRAR\Interface]
+"ShowPassword"=dword:00000001
+
+;去除WinRAR右键新建菜单
+[-HKEY_CLASSES_ROOT\.rar\ShellNew]
+
+[-HKEY_CLASSES_ROOT\.zip\ShellNew]
diff --git a/scripts/wmiexplorer/wmiexplorer.ps1 b/scripts/wmiexplorer/wmiexplorer.ps1
new file mode 100644
index 00000000000..c85a63403ad
--- /dev/null
+++ b/scripts/wmiexplorer/wmiexplorer.ps1
@@ -0,0 +1,1225 @@
+#
+# WmiExplorer.ps1
+#
+# A GUI WMI explorer and WMI Method Help generator
+#
+# /\/\o\/\/ 2006
+# www.ThePowerShellGuy.com
+#
+# load Forms NameSpace
+[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
+
+#region BuildTheForm build in C# then translated to powershell
+#region Make the form
+$frmMain = new-object Windows.Forms.form
+$frmMain.Size = new-object System.Drawing.Size @(800,600)
+$frmMain.text = "/\/\o\/\/'s PowerShell WMI Explorer"
+#endregion Make the form
+#region Define Used Controls
+$MainMenu = new-object System.Windows.Forms.MenuStrip
+$statusStrip = new-object System.Windows.Forms.StatusStrip
+$FileMenu = new-object System.Windows.Forms.ToolStripMenuItem
+$ToolMenu = new-object System.Windows.Forms.ToolStripMenuItem('&tools')
+$miQuery = new-object System.Windows.Forms.ToolStripMenuItem('&Query (run)')
+$miSelectQuery = new-object System.Windows.Forms.ToolStripMenuItem('&SelectQuery')
+$miSelectQuery.add_Click({$sq | out-propertyGrid;$wmiSearcher.Query = $sq})
+[void]$ToolMenu.DropDownItems.Add($miSelectQuery)
+$miRelatedObjectQuery = new-object System.Windows.Forms.ToolStripMenuItem('&RelatedObjectQuery')
+$miRelatedObjectQuery.add_Click({$roq | out-propertyGrid;$wmiSearcher.Query = $roq})
+[void]$ToolMenu.DropDownItems.Add($miRelatedObjectQuery)
+$miRelationshipQuery = new-object System.Windows.Forms.ToolStripMenuItem('&RelationshipQuery')
+$miRelationshipQuery.add_Click({$rq | out-propertyGrid ;$wmiSearcher.Query = $rq})
+[void]$ToolMenu.DropDownItems.Add($miRelationshipQuery)
+$oq = new-object System.Management.ObjectQuery
+$eq = new-object System.Management.EventQuery
+$sq = new-object System.Management.SelectQuery
+$roq = new-object System.Management.RelatedObjectQuery
+$rq = new-object System.Management.RelationshipQuery
+$wmiSearcher = [wmisearcher]''
+[void]$ToolMenu.DropDownItems.Add($miQuery)
+$miQuery.add_Click({
+ $wmiSearcher | out-propertyGrid
+ $moc = $wmiSearcher.get()
+ $DT = new-object System.Data.DataTable
+ $DT.TableName = $lblClass.text
+ $Col = new-object System.Data.DataColumn
+ $Col.ColumnName = "WmiPath"
+ $DT.Columns.Add($Col)
+ $i = 0
+ $j = 0 ;$lblInstances.Text = $j; $lblInstances.Update()
+ $MOC |
+ ForEach-Object {
+ $j++ ;$lblInstances.Text = $j; $lblInstances.Update()
+ $MO = $_
+
+ # Make a DataRow
+ $DR = $DT.NewRow()
+ $Col = new-object System.Data.DataColumn
+ $DR.Item("WmiPath") = $mo.__PATH
+ $MO.psbase.properties |
+ ForEach-Object {
+
+ $prop = $_
+
+ If ($i -eq 0) {
+
+ # Only On First Row make The Headers
+
+ $Col = new-object System.Data.DataColumn
+ $Col.ColumnName = $prop.Name.ToString()
+
+ $prop.psbase.Qualifiers |
+ ForEach-Object {
+ If ($_.Name.ToLower() -eq "key") {
+ $Col.ColumnName = $Col.ColumnName + "*"
+ }
+ }
+ $DT.Columns.Add($Col)
+ }
+
+ # fill dataRow
+
+ if ($prop.value -eq $null) {
+ $DR.Item($prop.Name) = "[empty]"
+ } ElseIf ($prop.IsArray) {
+ $DR.Item($prop.Name) =[string]::Join($prop.value ,";")
+ } Else {
+ $DR.Item($prop.Name) = $prop.value
+ #Item is Key try again with *
+ trap{$DR.Item("$($prop.Name)*") = $prop.Value.tostring();continue}
+ }
+ } #end ForEach
+ # Add the row to the DataTable
+
+ $DT.Rows.Add($DR)
+ $i += 1
+ }
+ $DGInstances.DataSource = $DT.psObject.baseobject
+ $status.Text = "Retrieved $j Instances"
+ $status.BackColor = 'YellowGreen'
+ $statusstrip.Update()
+})#$miQuery.add_Click
+
+$miQuit = new-object System.Windows.Forms.ToolStripMenuItem('&quit')
+$miQuit.add_Click({$frmMain.close()})
+$SplitContainer1 = new-object System.Windows.Forms.SplitContainer
+$splitContainer2 = new-object System.Windows.Forms.SplitContainer
+$splitContainer3 = new-object System.Windows.Forms.SplitContainer
+$grpComputer = new-object System.Windows.Forms.GroupBox
+$grpNameSpaces = new-object System.Windows.Forms.GroupBox
+$grpClasses = new-object System.Windows.Forms.GroupBox
+$grpClass = new-object System.Windows.Forms.GroupBox
+$grpInstances = new-object System.Windows.Forms.GroupBox
+$grpStatus = new-object System.Windows.Forms.GroupBox
+$txtComputer = new-object System.Windows.Forms.TextBox
+$btnConnect = new-object System.Windows.Forms.Button
+$btnInstances = new-object System.Windows.Forms.Button
+$tvNameSpaces = new-object System.Windows.Forms.TreeView
+$lvClasses = new-object System.Windows.Forms.ListView
+$clbProperties = new-object System.Windows.Forms.CheckedListBox
+$clbProperties.CheckOnClick = $true
+$lbMethods = new-object System.Windows.Forms.ListBox
+$label1 = new-object System.Windows.Forms.Label
+$label2 = new-object System.Windows.Forms.Label
+$lblServer = new-object System.Windows.Forms.Label
+$lblPath = new-object System.Windows.Forms.Label
+$lblNameSpace = new-object System.Windows.Forms.Label
+$label6 = new-object System.Windows.Forms.Label
+$lblClass = new-object System.Windows.Forms.Label
+$label10 = new-object System.Windows.Forms.Label
+$lblClasses = new-object System.Windows.Forms.Label
+$label12 = new-object System.Windows.Forms.Label
+$lblProperties = new-object System.Windows.Forms.Label
+$label8 = new-object System.Windows.Forms.Label
+$lblMethods = new-object System.Windows.Forms.Label
+$label14 = new-object System.Windows.Forms.Label
+$lblInstances = new-object System.Windows.Forms.Label
+$label16 = new-object System.Windows.Forms.Label
+$dgInstances = new-object System.Windows.Forms.DataGridView
+$TabControl = new-object System.Windows.Forms.TabControl
+$tabPage1 = new-object System.Windows.Forms.TabPage
+$tabInstances = new-object System.Windows.Forms.TabPage
+$rtbHelp = new-object System.Windows.Forms.RichTextBox
+$tabMethods = new-object System.Windows.Forms.TabPage
+$rtbMethods = new-object System.Windows.Forms.RichTextBox
+#endregion Define Used Controls
+#region Suspend the Layout
+$splitContainer1.Panel1.SuspendLayout()
+$splitContainer1.Panel2.SuspendLayout()
+$splitContainer1.SuspendLayout()
+$splitContainer2.Panel1.SuspendLayout()
+$splitContainer2.Panel2.SuspendLayout()
+$splitContainer2.SuspendLayout()
+$grpComputer.SuspendLayout()
+$grpNameSpaces.SuspendLayout()
+$grpClasses.SuspendLayout()
+$splitContainer3.Panel1.SuspendLayout()
+$splitContainer3.Panel2.SuspendLayout()
+$splitContainer3.SuspendLayout()
+$grpClass.SuspendLayout()
+$grpStatus.SuspendLayout()
+$grpInstances.SuspendLayout()
+$TabControl.SuspendLayout()
+$tabPage1.SuspendLayout()
+$tabInstances.SuspendLayout()
+$FrmMain.SuspendLayout()
+#endregion Suspend the Layout
+#region Configure Controls
+[void]$MainMenu.Items.Add($FileMenu)
+[void]$MainMenu.Items.Add($ToolMenu)
+$MainMenu.Location = new-object System.Drawing.Point(0, 0)
+$MainMenu.Name = "MainMenu"
+$MainMenu.Size = new-object System.Drawing.Size(1151, 24)
+$MainMenu.TabIndex = 0
+$MainMenu.Text = "Main Menu"
+#
+# statusStrip1
+#
+$statusStrip.Location = new-object System.Drawing.Point(0, 569)
+$statusStrip.Name = "statusStrip"
+$statusStrip.Size = new-object System.Drawing.Size(1151, 22);
+$statusStrip.TabIndex = 1
+$statusStrip.Text = "statusStrip"
+$splitContainer1.Dock = [System.Windows.Forms.DockStyle]::Fill
+$splitContainer1.Location = new-object System.Drawing.Point(0, 24)
+$splitContainer1.Name = "splitContainer1"
+$splitContainer1.Panel1.Controls.Add($splitContainer2)
+$splitContainer1.Panel2.Controls.Add($splitContainer3)
+$splitContainer1.Size = new-object System.Drawing.Size(1151, 545)
+$splitContainer1.SplitterDistance = 372
+$splitContainer1.TabIndex = 2
+$splitContainer2.BorderStyle = [System.Windows.Forms.BorderStyle]::Fixed3D
+$splitContainer2.Dock = [System.Windows.Forms.DockStyle]::Fill
+$splitContainer2.Location = new-object System.Drawing.Point(0, 0)
+$splitContainer2.Name = "splitContainer2"
+$splitContainer2.Orientation = [System.Windows.Forms.Orientation]::Horizontal
+$splitContainer2.Panel1.BackColor = [System.Drawing.SystemColors]::Control
+$splitContainer2.Panel1.Controls.Add($grpNameSpaces)
+$splitContainer2.Panel1.Controls.Add($btnConnect)
+$splitContainer2.Panel1.Controls.Add($grpComputer)
+$splitContainer2.Panel2.Controls.Add($grpClasses)
+$splitContainer2.Size = new-object System.Drawing.Size(372, 545)
+$splitContainer2.SplitterDistance = 302
+$splitContainer2.TabIndex = 0
+#
+# fileMenu
+#
+[void]$fileMenu.DropDownItems.Add($miQuit)
+$fileMenu.Name = "fileMenu"
+$fileMenu.Size = new-object System.Drawing.Size(35, 20)
+$fileMenu.Text = "&File"
+$grpComputer.Anchor = "top, left, right"
+$grpComputer.Controls.Add($txtComputer)
+$grpComputer.Location = new-object System.Drawing.Point(12, 3)
+$grpComputer.Name = "grpComputer"
+$grpComputer.Size = new-object System.Drawing.Size(340, 57)
+$grpComputer.TabIndex = 0
+$grpComputer.TabStop = $false
+$grpComputer.Text = "Computer"
+$txtComputer.Anchor = "top, left, right"
+$txtComputer.Location = new-object System.Drawing.Point(7, 20)
+$txtComputer.Name = "txtComputer"
+$txtComputer.Size = new-object System.Drawing.Size(244, 20)
+$txtComputer.TabIndex = 0
+$txtComputer.Text = "."
+
+$btnConnect.Anchor = "top, right"
+$btnConnect.Location = new-object System.Drawing.Point(269, 23);
+$btnConnect.Name = "btnConnect"
+$btnConnect.Size = new-object System.Drawing.Size(75, 23)
+$btnConnect.TabIndex = 1
+$btnConnect.Text = "Connect"
+$btnConnect.UseVisualStyleBackColor = $true
+#
+# grpNameSpaces
+#
+$grpNameSpaces.Anchor = "Bottom, top, left, right"
+$grpNameSpaces.Controls.Add($tvNameSpaces)
+$grpNameSpaces.Location = new-object System.Drawing.Point(12, 67)
+$grpNameSpaces.Name = "grpNameSpaces"
+$grpNameSpaces.Size = new-object System.Drawing.Size(340, 217)
+$grpNameSpaces.TabIndex = 2
+$grpNameSpaces.TabStop = $false
+$grpNameSpaces.Text = "NameSpaces"
+#
+# grpClasses
+#
+$grpClasses.Anchor = "Bottom, top, left, right"
+$grpClasses.Controls.Add($lvClasses)
+$grpClasses.Location = new-object System.Drawing.Point(12, 14)
+$grpClasses.Name = "grpClasses"
+$grpClasses.Size = new-object System.Drawing.Size(340, 206)
+$grpClasses.TabIndex = 0
+$grpClasses.TabStop = $False
+$grpClasses.Text = "Classes"
+#
+# tvNameSpaces
+#
+$tvNameSpaces.Anchor = "Bottom, top, left, right"
+$tvNameSpaces.Location = new-object System.Drawing.Point(7, 19)
+$tvNameSpaces.Name = "tvNameSpaces"
+$tvNameSpaces.Size = new-object System.Drawing.Size(325, 184)
+$tvNameSpaces.TabIndex = 0
+#
+# tvClasses
+#
+$lvClasses.Anchor = "Bottom, top, left, right"
+$lvClasses.Location = new-object System.Drawing.Point(7, 19)
+$lvClasses.Name = "tvClasses"
+$lvClasses.Size = new-object System.Drawing.Size(325, 172)
+$lvClasses.TabIndex = 0
+$lvClasses.UseCompatibleStateImageBehavior = $False
+$lvClasses.ShowItemToolTips = $true
+$lvClasses.View = 'Details'
+$colName = $lvClasses.Columns.add('Name')
+$colname.Width = 160
+$colPath = $lvClasses.Columns.add('Description')
+$colname.Width = 260
+$colPath = $lvClasses.Columns.add('Path')
+$colname.Width = 260
+#
+# splitContainer3
+#
+$splitContainer3.BorderStyle = [System.Windows.Forms.BorderStyle]::Fixed3D
+$splitContainer3.Dock = [System.Windows.Forms.DockStyle]::Fill
+$splitContainer3.Location = new-object System.Drawing.Point(0, 0)
+$splitContainer3.Name = "splitContainer3"
+$splitContainer3.Orientation = [System.Windows.Forms.Orientation]::Horizontal
+#
+# splitContainer3.Panel1
+#
+$splitContainer3.Panel1.Controls.Add($grpStatus)
+$splitContainer3.Panel1.Controls.Add($grpClass)
+#
+# splitContainer3.Panel2
+#
+$splitContainer3.Panel2.Controls.Add($TabControl)
+$splitContainer3.Size = new-object System.Drawing.Size(775, 545)
+$splitContainer3.SplitterDistance = 303
+$splitContainer3.TabIndex = 0
+#
+# grpClass
+#
+$grpClass.Anchor = "Bottom, top, left, right"
+$grpClass.Controls.Add($lblInstances)
+$grpClass.Controls.Add($label16)
+$grpClass.Controls.Add($lblMethods)
+$grpClass.Controls.Add($label14)
+$grpClass.Controls.Add($lblProperties)
+$grpClass.Controls.Add($label8)
+$grpClass.Controls.Add($lblClass)
+$grpClass.Controls.Add($label10)
+$grpClass.Controls.Add($lbMethods)
+$grpClass.Controls.Add($clbProperties)
+$grpClass.Controls.Add($btnInstances)
+$grpClass.Location = new-object System.Drawing.Point(17, 86)
+$grpClass.Name = "grpClass"
+$grpClass.Size = new-object System.Drawing.Size(744, 198)
+$grpClass.TabIndex = 0
+$grpClass.TabStop = $False
+$grpClass.Text = "Class"
+#
+# btnInstances
+#
+$btnInstances.Anchor = "Bottom, Left"
+$btnInstances.Location = new-object System.Drawing.Point(6, 169);
+$btnInstances.Name = "btnInstances";
+$btnInstances.Size = new-object System.Drawing.Size(96, 23);
+$btnInstances.TabIndex = 0;
+$btnInstances.Text = "Get Instances";
+$btnInstances.UseVisualStyleBackColor = $true
+#
+# grpStatus
+#
+$grpStatus.Anchor = "Top,Left,Right"
+$grpStatus.Controls.Add($lblClasses)
+$grpStatus.Controls.Add($label12)
+$grpStatus.Controls.Add($lblNameSpace)
+$grpStatus.Controls.Add($label6)
+$grpStatus.Controls.Add($lblPath)
+$grpStatus.Controls.Add($lblServer)
+$grpStatus.Controls.Add($label2)
+$grpStatus.Controls.Add($label1)
+$grpStatus.Location = new-object System.Drawing.Point(17, 3)
+$grpStatus.Name = "grpStatus"
+$grpStatus.Size = new-object System.Drawing.Size(744, 77)
+$grpStatus.TabIndex = 1
+$grpStatus.TabStop = $False
+$grpStatus.Text = "Status"
+#
+# label1
+#
+$label1.AutoSize = $true
+$label1.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$label1.Location = new-object System.Drawing.Point(7, 20)
+$label1.Name = "label1"
+$label1.Size = new-object System.Drawing.Size(62, 16)
+$label1.TabIndex = 0
+$label1.Text = "Server :"
+#
+# label2
+#
+$label2.AutoSize = $true
+$label2.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$label2.Location = new-object System.Drawing.Point(7, 41)
+$label2.Name = "label2"
+$label2.Size = new-object System.Drawing.Size(51, 16)
+$label2.TabIndex = 1
+$label2.Text = "Path :"
+#
+# lblServer
+#
+$lblServer.BorderStyle = [System.Windows.Forms.BorderStyle]::Fixed3D
+$lblServer.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$lblServer.Location = new-object System.Drawing.Point(75, 20)
+$lblServer.Name = "lblServer"
+$lblServer.Size = new-object System.Drawing.Size(144, 20)
+$lblServer.TabIndex = 2
+#
+# lblPath
+#
+$lblPath.BorderStyle = [System.Windows.Forms.BorderStyle]::Fixed3D
+$lblPath.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$lblPath.Location = new-object System.Drawing.Point(75, 40)
+$lblPath.Name = "lblPath"
+$lblPath.Size = new-object System.Drawing.Size(567, 20)
+$lblPath.TabIndex = 3
+#
+# lblNameSpace
+#
+$lblNameSpace.BorderStyle = [System.Windows.Forms.BorderStyle]::Fixed3D
+$lblNameSpace.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$lblNameSpace.Location = new-object System.Drawing.Point(337, 20)
+$lblNameSpace.Name = "lblNameSpace"
+$lblNameSpace.Size = new-object System.Drawing.Size(144, 20)
+$lblNameSpace.TabIndex = 5
+#
+# label6
+#
+$label6.AutoSize = $true
+$label6.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$label6.Location = new-object System.Drawing.Point(229, 20)
+$label6.Name = "label6"
+$label6.Size = new-object System.Drawing.Size(102, 16)
+$label6.TabIndex = 4
+$label6.Text = "NameSpace :"
+#
+# lblClass
+#
+$lblClass.BorderStyle = [System.Windows.Forms.BorderStyle]::Fixed3D
+$lblClass.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$lblClass.Location = new-object System.Drawing.Point(110, 26)
+$lblClass.Name = "lblClass"
+$lblClass.Size = new-object System.Drawing.Size(159, 20)
+$lblClass.TabIndex = 11
+#
+# label10
+#
+$label10.AutoSize = $true
+$label10.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$label10.Location = new-object System.Drawing.Point(6, 26)
+$label10.Name = "label10"
+$label10.Size = new-object System.Drawing.Size(55, 16)
+$label10.TabIndex = 10
+$label10.Text = "Class :"
+#
+# lblClasses
+#
+$lblClasses.BorderStyle = [System.Windows.Forms.BorderStyle]::Fixed3D
+$lblClasses.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$lblClasses.Location = new-object System.Drawing.Point(595, 21)
+$lblClasses.Name = "lblClasses"
+$lblClasses.Size = new-object System.Drawing.Size(47, 20)
+$lblClasses.TabIndex = 9
+#
+# label12
+#
+$label12.AutoSize = $true
+$label12.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$label12.Location = new-object System.Drawing.Point(487, 21)
+$label12.Name = "label12"
+$label12.Size = new-object System.Drawing.Size(76, 16)
+$label12.TabIndex = 8
+$label12.Text = "Classes :"
+#
+# clbProperties
+#
+$clbProperties.Anchor = "Bottom, top,left"
+$clbProperties.FormattingEnabled = $true
+$clbProperties.Location = new-object System.Drawing.Point(510, 27)
+$clbProperties.Name = "clbProperties"
+$clbProperties.Size = new-object System.Drawing.Size(220, 160)
+$clbProperties.TabIndex = 1
+#
+# lbMethods
+#
+$lbMethods.Anchor = "Bottom, top, Left"
+$lbMethods.FormattingEnabled = $true
+$lbMethods.Location = new-object System.Drawing.Point(280, 27)
+$lbMethods.Name = "lbMethods"
+$lbMethods.Size = new-object System.Drawing.Size(220, 160)
+$lbMethods.TabIndex = 2
+#
+# lblProperties
+#
+$lblProperties.BorderStyle = [System.Windows.Forms.BorderStyle]::Fixed3D
+$lblProperties.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$lblProperties.Location = new-object System.Drawing.Point(110, 46)
+$lblProperties.Name = "lblProperties"
+$lblProperties.Size = new-object System.Drawing.Size(119, 20)
+$lblProperties.TabIndex = 13
+#
+# label8
+#
+$label8.AutoSize = $true
+$label8.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$label8.Location = new-object System.Drawing.Point(6, 46)
+$label8.Name = "label8"
+$label8.Size = new-object System.Drawing.Size(88, 16)
+$label8.TabIndex = 12
+$label8.Text = "Properties :"
+#
+# lblMethods
+#
+$lblMethods.BorderStyle = [System.Windows.Forms.BorderStyle]::Fixed3D
+$lblMethods.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$lblMethods.Location = new-object System.Drawing.Point(110, 66)
+$lblMethods.Name = "lblMethods"
+$lblMethods.Size = new-object System.Drawing.Size(119, 20)
+$lblMethods.TabIndex = 15
+#
+# label14
+#
+$label14.AutoSize = $true
+$label14.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$label14.Location = new-object System.Drawing.Point(6, 66)
+$label14.Name = "label14"
+$label14.Size = new-object System.Drawing.Size(79, 16)
+$label14.TabIndex = 14
+$label14.Text = "Methods :"
+#
+# lblInstances
+#
+$lblInstances.BorderStyle = [System.Windows.Forms.BorderStyle]::Fixed3D
+$lblInstances.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$lblInstances.Location = new-object System.Drawing.Point(110, 86)
+$lblInstances.Name = "lblInstances"
+$lblInstances.Size = new-object System.Drawing.Size(119, 20)
+$lblInstances.TabIndex = 17
+#
+# label16
+#
+$label16.AutoSize = $true
+$label16.Font = new-object System.Drawing.Font("Microsoft Sans Serif",9.75 ,[System.Drawing.FontStyle]::Bold)
+$label16.Location = new-object System.Drawing.Point(6, 86)
+$label16.Name = "label16"
+$label16.Size = new-object System.Drawing.Size(82, 16)
+$label16.TabIndex = 16
+$label16.Text = "Instances :"
+#
+# grpInstances
+#
+$grpInstances.Anchor = "Bottom, top, left, right"
+$grpInstances.Controls.Add($dgInstances)
+$grpInstances.Location = new-object System.Drawing.Point(17, 17)
+$grpInstances.Name = "grpInstances"
+$grpInstances.Size = new-object System.Drawing.Size(744, 202)
+$grpInstances.TabIndex = 0
+$grpInstances.TabStop = $False
+$grpInstances.Text = "Instances"
+#
+# dgInstances
+#
+$dgInstances.Anchor = "Bottom, top, left, right"
+$dgInstances.ColumnHeadersHeightSizeMode = [System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode]::AutoSize
+$dgInstances.Location = new-object System.Drawing.Point(10, 19)
+$dgInstances.Name = "dgInstances"
+$dgInstances.Size = new-object System.Drawing.Size(728, 167)
+$dgInstances.TabIndex = 0
+$dginstances.ReadOnly = $true
+# TabControl
+#
+$TabControl.Controls.Add($tabPage1)
+$TabControl.Controls.Add($tabInstances)
+$TabControl.Controls.Add($tabMethods)
+$TabControl.Dock = [System.Windows.Forms.DockStyle]::Fill
+$TabControl.Location = new-object System.Drawing.Point(0, 0)
+$TabControl.Name = "TabControl"
+$TabControl.SelectedIndex = 0
+$TabControl.Size = new-object System.Drawing.Size(771, 234)
+$TabControl.TabIndex = 0
+#
+# tabPage1
+#
+$tabPage1.Controls.Add($rtbHelp)
+$tabPage1.Location = new-object System.Drawing.Point(4, 22)
+$tabPage1.Name = "tabPage1"
+$tabPage1.Padding = new-object System.Windows.Forms.Padding(3)
+$tabPage1.Size = new-object System.Drawing.Size(763, 208)
+$tabPage1.TabIndex = 0
+$tabPage1.Text = "Help"
+$tabPage1.UseVisualStyleBackColor = $true
+#
+# tabInstances
+#
+$tabInstances.Controls.Add($grpInstances)
+$tabInstances.Location = new-object System.Drawing.Point(4, 22)
+$tabInstances.Name = "tabInstances"
+$tabInstances.Padding = new-object System.Windows.Forms.Padding(3)
+$tabInstances.Size = new-object System.Drawing.Size(763, 208)
+$tabInstances.TabIndex = 1
+$tabInstances.Text = "Instances"
+$tabInstances.UseVisualStyleBackColor = $true
+#
+# richTextBox1
+#
+$rtbHelp.Dock = [System.Windows.Forms.DockStyle]::Fill
+$rtbHelp.Location = new-object System.Drawing.Point(3, 3)
+$rtbHelp.Name = "richTextBox1"
+$rtbHelp.Size = new-object System.Drawing.Size(757, 202)
+$rtbHelp.TabIndex = 0
+$rtbHelp.Text = ""
+#
+# tabMethods
+#
+$tabMethods.Location = new-object System.Drawing.Point(4, 22)
+$tabMethods.Name = "tabMethods"
+$tabMethods.Padding = new-object System.Windows.Forms.Padding(3)
+$tabMethods.Size = new-object System.Drawing.Size(763, 208)
+$tabMethods.TabIndex = 2
+$tabMethods.Text = "Methods"
+$tabMethods.UseVisualStyleBackColor = $true
+
+ $rtbMethods.Dock = [System.Windows.Forms.DockStyle]::Fill
+ $rtbMethods.Font = new-object System.Drawing.Font("Lucida Console",8 )
+ $rtbMethods.DetectUrls = $false
+ $tabMethods.controls.add($rtbMethods)
+
+#endregion Configure Controls
+# Configure Main Form
+#region frmMain
+
+#
+$frmMain.AutoScaleDimensions = new-object System.Drawing.SizeF(6, 13)
+$frmMain.AutoScaleMode = [System.Windows.Forms.AutoScaleMode]::Font
+$frmMain.ClientSize = new-object System.Drawing.Size(1151, 591)
+$frmMain.Controls.Add($splitContainer1)
+$frmMain.Controls.Add($statusStrip)
+$frmMain.Controls.Add($MainMenu)
+$frmMain.MainMenuStrip = $mainMenu
+$FrmMain.Name = "frmMain"
+$FrmMain.Text = "/\/\o\/\/ PowerShell WMI Browser"
+$mainMenu.ResumeLayout($false)
+$mainMenu.PerformLayout()
+$MainMenu.ResumeLayout($false)
+$MainMenu.PerformLayout()
+$splitContainer1.Panel1.ResumeLayout($false)
+$splitContainer1.Panel2.ResumeLayout($false)
+$splitContainer1.ResumeLayout($false)
+$splitContainer2.Panel1.ResumeLayout($false)
+$splitContainer2.Panel2.ResumeLayout($false)
+$splitContainer2.ResumeLayout($false)
+$grpComputer.ResumeLayout($false)
+$grpComputer.PerformLayout()
+$grpNameSpaces.ResumeLayout($false)
+$grpClasses.ResumeLayout($false)
+$splitContainer3.Panel1.ResumeLayout($false)
+$splitContainer3.Panel2.ResumeLayout($false)
+$splitContainer3.ResumeLayout($false)
+$grpClass.ResumeLayout($false)
+$grpClass.PerformLayout()
+$grpStatus.ResumeLayout($false)
+$grpStatus.PerformLayout()
+$grpInstances.ResumeLayout($false)
+$TabControl.ResumeLayout($false)
+$tabPage1.ResumeLayout($false)
+$tabInstances.ResumeLayout($false)
+$frmMain.ResumeLayout($false)
+$FrmMain.PerformLayout()
+$status = new-object System.Windows.Forms.ToolStripStatusLabel
+$status.BorderStyle = 'SunkenInner'
+$status.BorderSides = 'All'
+$status.Text = "Not Connected"
+[void]$statusStrip.Items.add($status)
+$slMessage = new-object System.Windows.Forms.ToolStripStatusLabel
+$slMessage.BorderStyle = 'SunkenInner'
+$slMessage.BorderSides = 'All'
+$slMessage.Text = ""
+[void]$statusStrip.Items.add($slMessage)
+#endregion frmMain
+#endregion
+#region Helper Functions
+Function out-PropertyGrid {
+ Param ($Object,[switch]$noBase,[Switch]$array)
+ $PsObject = $null
+ if ($object) {
+ $PsObject = $object
+ }Else{
+ if ($Array.IsPresent) {
+ $PsObject = @()
+ $input |ForEach-Object {$PsObject += $_}
+ }Else{
+ $input |ForEach-Object {$PsObject = $_}
+ }
+ }
+ if ($PsObject){
+ $form = new-object Windows.Forms.Form
+ $form.Size = new-object Drawing.Size @(600,600)
+ $PG = new-object Windows.Forms.PropertyGrid
+ $PG.Dock = 'Fill'
+ $form.text = "$psObject"
+ if ($noBase.IsPresent) {"no";
+ $PG.selectedobject = $psObject
+ }Else{
+ $PG.selectedobject = $psObject.PsObject.baseobject
+ }
+ $form.Controls.Add($PG)
+ $Form.Add_Shown({$form.Activate()})
+ $form.showdialog()
+ }
+} #Function out-PropertyGrid
+Function Update-Status {
+ $script:computer = $Script:NameSpaces.__SERVER
+ $txtComputer.Text = $script:computer
+ $lblPath.Text = $Script:NameSpaces.__PATH
+ $lblProperties.Text = $Script:NameSpaces.__PROPERTY_COUNT
+ $lblClass.Text = $Script:NameSpaces.__RELPATH
+ $lblServer.Text = $script:Computer
+ $lblnamespace.Text = $Script:NameSpaces.__NAMESPACE
+} # Function Update-Status
+Function Set-StatusBar ([Drawing.Color]$Color,$Text) {
+ $status.BackColor = $color
+ $status.Text = $text
+ $statusstrip.Update()
+}
+#endregion Helper Functions
+#################### Main ###############################
+#region Global Variables
+$FontBold = new-object System.Drawing.Font("Microsoft Sans Serif",8,[Drawing.FontStyle]'Bold' )
+$fontNormal = new-object System.Drawing.Font("Microsoft Sans Serif",8,[Drawing.FontStyle]'Regular')
+$fontCode = new-object System.Drawing.Font("Lucida Console",8 )
+# Create Script Variables for WMI Connection
+$Script:ConnectionOptions = new-object System.Management.ConnectionOptions
+$script:WmiConnection = new-object system.management.ManagementScope
+$script:WmiClass = [wmiClass]''
+# NamespaceCaching , Make HashTable to store Treeview Items
+$script:nsc = @{}
+# Make DataSet for secondary Cache
+$Script:dsCache = new-object data.dataset
+if (-not ${Global:WmiExplorer.dtClasses}){
+ ${Global:WmiExplorer.dtClasses} = new-object data.datatable
+ [VOID](${Global:WmiExplorer.dtClasses}.Columns.add('Path',[string]))
+ [VOID](${Global:WmiExplorer.dtClasses}.Columns.add('Namespace',[string]))
+ [VOID](${Global:WmiExplorer.dtClasses}.Columns.add('name',[string]))
+ [VOID](${Global:WmiExplorer.dtClasses}.Columns.add('Description',[string]))
+ ${Global:WmiExplorer.dtClasses}.tablename = 'Classes'
+}
+#endregion
+#region Control Handlers
+# Add Delegate Scripts to finetune the WMI Connection objects to the events of the controls
+$slMessage.DoubleClickEnabled = $true
+$slMessage.add_DoubleClick({$error[0] | out-PropertyGrid})
+$lblNameSpace.add_DoubleClick({$script:WmiConnection | out-PropertyGrid})
+$lblserver.add_DoubleClick({$Script:ConnectionOptions | out-PropertyGrid})
+$lblClass.add_DoubleClick({$script:WmiClass | out-PropertyGrid})
+
+$btnConnect.add_click({ConnectToComputer})
+$TVNameSpaces.add_DoubleClick({GetClassesFromNameSpace})
+$lvClasses.Add_DoubleClick({GetWmiClass})
+$btnInstances.add_Click({GetWmiInstances})
+$dgInstances.add_DoubleClick({OutputWmiInstance})
+$lbMethods.Add_DoubleClick({GetWmiMethod})
+$clbProperties.add_Click({
+ trap{Continue}
+ $DGInstances.Columns.Item(($this.SelectedItem)).visible = -not $clbProperties.GetItemChecked($this.SelectedIndex)
+})
+$TVNameSpaces.add_AfterSelect({
+ if ($this.SelectedNode.name -ne $Computer){
+ $lblPath.Text = "$($script:WmiConnection.path.path.replace('\root',''))\$($this.SelectedNode.Text)"
+ }
+
+ $lblProperties.Text = $Script:NameSpaces.__PROPERTY_COUNT
+ $lblServer.Text = $Script:NameSpaces.__SERVER
+ $lblnamespace.Text = $this.SelectedNode.Text
+ if ($this.SelectedNode.tag -eq "NotEnumerated") {
+ (new-object system.management.managementClass(
+ "$($script:WmiConnection.path.path.replace('\root',''))\$($this.SelectedNode.Text):__NAMESPACE")
+ ).PSbase.getInstances() | Sort-Object $_.name |
+ ForEach-Object {
+ $TN = new-object System.Windows.Forms.TreeNode
+ $TN.Name = $_.name
+ $TN.Text = ("{0}\{1}" -f $_.__NameSpace,$_.name)
+ $TN.tag = "NotEnumerated"
+ $this.SelectedNode.Nodes.Add($TN)
+ }
+
+ # Set tag to show this node is already enumerated
+ $this.SelectedNode.tag = "Enumerated"
+ }
+ $mp = ("{0}\{1}" -f $script:WmiConnection.path.path.replace('\root','') , $this.SelectedNode.text)
+ $lvClasses.Items.Clear()
+ if($Script:nsc.Item("$mp")){ # in Namespace cache
+ $lvClasses.BeginUpdate()
+ $lvClasses.Items.AddRange(($nsc.Item( "$mp")))
+ $status.Text = "$mp : $($lvClasses.Items.count) Classes"
+ $lvClasses.EndUpdate()
+ $lblClasses.Text = $lvClasses.Items.count
+ } else {
+ if(${Global:WmiExplorer.dtClasses}.Select("Namespace='$mp'")){ # In DataTable Cache
+ $status.BackColor = 'beige'
+ $status.Text = "$mp : Classes in Cache, DoubleClick NameSpace to retrieve Classes"
+ } else {
+ $status.BackColor = 'LightSalmon'
+ $status.Text = "$mp : Classes not recieved yet, DoubleClick NameSpace to retrieve Classes"
+ }
+ }
+}) # $TVNameSpaces.add_AfterSelect
+#endregion
+#region Processing Functions
+#region ConnectToComputer
+# Connect to Computer
+Function ConnectToComputer {
+
+ $computer = $txtComputer.Text
+ Set-StatusBar 'beige' "Connecting to : $computer"
+
+ # Try to Connect to Computer
+ &{
+ trap {
+ Set-StatusBar 'Red' "Connecting to : $computer Failed"
+ $slMessage.Text = "$_.message"
+ Continue
+ }
+ &{
+ # Connect to WMI root
+
+ $script:WmiConnection.path = "\\$computer\root"
+ $script:WmiConnection.options = $Script:ConnectionOptions
+ $script:WmiConnection.Connect()
+
+ # Get Avaiable NameSpaces
+
+ $opt = new-object system.management.ObjectGetOptions
+ $opt.UseAmendedQualifiers = $true
+ $Script:NameSpaces = new-object System.Management.ManagementClass(
+ $script:WmiConnection,[Management.ManagementPath]'__Namespace',$opt
+ )
+ Update-Status
+ # Create a TreeNode for the WMI Root found
+ $computer = $txtComputer.Text
+ $TNRoot = new-object System.Windows.Forms.TreeNode("Root")
+ $TNRoot.Name = $Computer
+ $TNRoot.Text = $lblPath.Text
+ $TNRoot.tag = "Enumerated"
+
+ # Create NameSpaces List
+
+ $Script:NameSpaces.PSbase.getInstances() | Sort-Object $_.name |
+ ForEach-Object {
+ $TN = new-object System.Windows.Forms.TreeNode
+ $TN.Name = $_.name
+ $TN.Text = ("{0}\{1}" -f $_.__NameSpace,$_.name)
+ $TN.tag = "NotEnumerated"
+ [void]$TNRoot.Nodes.Add($TN)
+ }
+ # Add to Treeview
+ $tvNameSpaces.Nodes.clear()
+ [void]$TVNamespaces.Nodes.Add($TNRoot)
+
+ # update StatusBar
+ Set-StatusBar 'YellowGreen' "Connected to : $computer"
+ }
+ }
+} # ConnectToComputer
+#endregion
+#region GetClasseFromNameSpace
+# Get Classes on DoubleClick on Namespace in TreeView
+Function GetClassesFromNameSpace {
+ if ($this.SelectedNode.name -ne $script:computer){
+ # Connect to WMI Namespace
+
+ $mp = ("{0}\{1}" -f $script:WmiConnection.path.path.replace('\root','') , $this.SelectedNode.text)
+ # Update Status
+
+ $lvClasses.BeginUpdate()
+ $lvClasses.Items.Clear()
+ $i = 0 ;$lblClasses.Text = $i; $lblclasses.Update()
+ if($Script:nsc.Item("$mp")){ #in Namespace Cache, so just attach to ListView again
+
+ $lvClasses.Items.AddRange(($nsc.Item( "$mp")))
+ # $lvClasses.Items.AddRange(([System.Windows.Forms.ListViewItem[]]($nsc.Item( "$mp") |
+ # where {$_.name -like 'win32_*'})))
+ $status.Text = "$mp : $($lvClasses.Items.count) Classes"
+ $i = $lvClasses.Items.count
+ } else { #Not In NameSpace Cache
+ if(${Global:WmiExplorer.dtClasses}.Select("Namespace = '$mp'")){ # In DataTable cache, so get from there
+ $status.Text = "loading cache from $($this.SelectedNode.name)"
+ $statusStrip.Update()
+ ${Global:WmiExplorer.dtClasses}.Select("Namespace = '$mp'") |
+ foreach {
+ $i++
+ $LI = New-Object system.Windows.Forms.ListViewItem
+ $li.Name = $_.name
+ $li.Text = $_.name
+ $li.SubItems.add($_.description)
+ $li.SubItems.add($_.path)
+ $li.ToolTipText = ($_.description)
+ $lvClasses.Items.add($li)
+ $status.Text = "$mp : $($lvClasses.Items.count) Classes"
+ $lblClasses.Text = $lvClasses.Items.count
+ }
+ } else { # Not in any Cache , Load WMI Classes
+ Set-StatusBar 'Khaki' "Getting Classes from $($this.SelectedNode.name)"
+ $mc = new-object System.Management.ManagementClass($mp,$opt)
+ $eo = New-Object system.management.EnumerationOptions
+ $eo.EnumerateDeep = $true
+ $eo.UseAmendedQualifiers = $true
+ $Mc.psbase.GetSubclasses($eo) |
+ ForEach-Object {
+ $i++ ; if ($i%10 -eq 0){$lblClasses.Text = $i;$lblclasses.Update() }
+ Trap{$script:Description = "[Empty]";continue}
+ $script:description = $_.psbase.Qualifiers.item("description").value
+ ${Global:WmiExplorer.dtClasses}.Rows.Add($_.__path,$mp,$_.name,$description)
+ $LI = New-Object system.Windows.Forms.ListViewItem
+ $li.Name = $_.name
+ $li.Text = $_.name
+ $li.SubItems.add($description)
+ $li.SubItems.add($_.__path)
+ $li.ToolTipText = $description
+ $lvClasses.Items.add($li)
+ }
+ $status.Text = "Ready, Retrieved $i Classes from $mp"
+ } #if(${Global:WmiExplorer.dtClasses}.Select("Namespace = '$mp'"))
+ $lvClasses.Sorting = 'Ascending'
+ $lvClasses.Sort()
+ $script:nsc.Add($mp,(([System.Windows.Forms.ListViewItem[]]($lvClasses.Items)).clone()))
+
+ }
+ $lvClasses.EndUpdate()
+ $this.selectedNode.BackColor = 'AliceBlue'
+ $lblClasses.Text = $i;$lblclasses.Update()
+ $status.BackColor = 'YellowGreen'
+ $statusStrip.Update()
+ } #if($Script:nsc.Item("$mp"))
+
+} # GetClassesFromNameSpace
+#endregion
+#region GetWmiClass
+Function GetWmiClass {
+ # Update Status
+
+ $status.Text = "Retrieving Class"
+ $status.BackColor = 'Khaki'
+ $statusstrip.Update()
+ $lblClass.Text = $this.SelectedItems |ForEach-Object {$_.name}
+ $lblPath.text = $this.SelectedItems |ForEach-Object {"$($_.SubItems[2].text)"}
+
+ # Add HelpText
+
+ $rtbHelp.Text = ""
+ $rtbHelp.selectionFont = $fontBold
+ $rtbHelp.appendtext("$($lblClass.Text)`n`n")
+ $rtbHelp.selectionFont = $fontNormal
+ $rtbHelp.appendtext(($this.SelectedItems |ForEach-Object {"$($_.SubItems[1].text)"}))
+ $rtbHelp.appendtext("`n")
+ $path = $lblPath.text
+
+ $opt = new-object system.management.ObjectGetOptions
+ $opt.UseAmendedQualifiers = $true
+
+ $script:WmiClass = new-object system.management.ManagementClass($path,$opt)
+ # Add Property Help
+
+ $rtbHelp.selectionFont = $fontBold
+ $rtbHelp.appendtext("`n$($lblClass.Text) Properties :`n`n")
+ $rtbHelp.selectionFont = $fontNormal
+
+ $i = 0 ;$lblProperties.Text = $i; $lblProperties.Update()
+ $clbproperties.Items.Clear()
+ $clbProperties.Items.add('WmiPath',$False)
+
+ $script:WmiClass.psbase.properties |
+ ForEach-Object {
+ $i++ ;$lblProperties.Text = $i; $lblProperties.Update()
+ $clbProperties.Items.add($_.name,$true)
+ $rtbHelp.selectionFont = $fontBold
+ $rtbHelp.appendtext("$($_.Name) :`n" )
+ &{
+ Trap {$rtbHelp.appendtext("[Empty]");Continue}
+ $rtbHelp.appendtext($_.psbase.Qualifiers["description"].value)
+ }
+ $rtbHelp.appendtext("`n`n")
+ } # ForEach-Object
+
+ # Create Method Help
+ $rtbHelp.selectionFont = $fontBold
+ $rtbHelp.appendtext( "$($lblClass.Text) Methods :`n`n" )
+ $i = 0 ;$lblMethods.Text = $i; $lblMethods.Update()
+ $lbmethods.Items.Clear()
+
+ $script:WmiClass.psbase.Methods |
+ ForEach-Object {
+ $i++ ;$lblMethods.Text = $i; $lblMethods.Update()
+ $lbMethods.Items.add($_.name)
+ $rtbHelp.selectionFont = $fontBold
+ $rtbHelp.appendtext("$($_.Name) :`n")
+ &{
+ Trap {$rtbHelp.Text += "[Empty]"}
+ $rtbHelp.appendtext($_.Qualifiers["description"].value)
+ }
+ $rtbHelp.appendtext("`n`n" )
+ } #ForEach-Object
+
+ $tabControl.SelectedTab = $tabpage1
+ $status.Text = "Retrieved Class"
+ $status.BackColor = 'YellowGreen'
+ $statusstrip.Update()
+} # GetWmiClass
+#endregion
+#region GetWmiInstances
+Function GetWmiInstances {
+ $status.Text = "Getting Instances for $($lblClass.text)"
+ $status.BackColor = 'Red'
+ $statusstrip.Update()
+ $tabControl.SelectedTab = $tabInstances
+ $MC = new-object system.management.ManagementClass $lblPath.text
+ $MOC = $MC.PSbase.getInstances()
+
+ #trap{"Class Not found";break}
+
+ $DT = new-object System.Data.DataTable
+ $DT.TableName = $lblClass.text
+ $Col = new-object System.Data.DataColumn
+ $Col.ColumnName = "WmiPath"
+ $DT.Columns.Add($Col)
+ $i = 0
+ $j = 0 ;$lblInstances.Text = $j; $lblInstances.Update()
+ $MOC | ForEach-Object {
+ $j++ ;$lblInstances.Text = $j; $lblInstances.Update()
+ $MO = $_
+
+ # Make a DataRow
+ $DR = $DT.NewRow()
+ $Col = new-object System.Data.DataColumn
+
+ $DR.Item("WmiPath") = $mo.__PATH
+ $MO.psbase.properties |
+ ForEach-Object {
+ $prop = $_
+ If ($i -eq 0) {
+
+ # Only On First Row make The Headers
+
+ $Col = new-object System.Data.DataColumn
+ $Col.ColumnName = $prop.Name.ToString()
+ $prop.psbase.Qualifiers | ForEach-Object {
+ If ($_.Name.ToLower() -eq "key") {
+ $Col.ColumnName = $Col.ColumnName + "*"
+ }
+ }
+ $DT.Columns.Add($Col)
+ }
+
+ # fill dataRow
+
+ if ($prop.value -eq $null) {
+ $DR.Item($prop.Name) = "[empty]"
+ }
+ ElseIf ($prop.IsArray) {
+ $ofs = ";"
+ $DR.Item($prop.Name) ="$($prop.value)"
+ $ofs = $null
+ }
+ Else {
+ $DR.Item($prop.Name) = $prop.value
+ #Item is Key try again with *
+ trap{$DR.Item("$($prop.Name)*") = $prop.Value.tostring();continue}
+ }
+ }
+ # Add the row to the DataTable
+ $DT.Rows.Add($DR)
+ $i += 1
+ }
+ $DGInstances.DataSource = $DT.psObject.baseobject
+ $DGInstances.Columns.Item('WmiPath').visible = $clbProperties.GetItemChecked(0)
+ $status.Text = "Retrieved $j Instances"
+ $status.BackColor = 'YellowGreen'
+ $statusstrip.Update()
+} # GetWmiInstances
+#endregion
+#region OutputWmiInstance
+Function OutputWmiInstance {
+ if ( $this.SelectedRows.count -eq 1 ) {
+ if (-not $Script:InstanceTab) {$Script:InstanceTab = new-object System.Windows.Forms.TabPage
+ $Script:InstanceTab.Name = 'Instance'
+ $Script:rtbInstance = new-object System.Windows.Forms.RichTextBox
+ $Script:rtbInstance.Dock = [System.Windows.Forms.DockStyle]::Fill
+ $Script:rtbInstance.Font = $fontCode
+ $Script:rtbInstance.DetectUrls = $false
+ $Script:InstanceTab.controls.add($Script:rtbInstance)
+ $TabControl.TabPages.add($Script:InstanceTab)
+ }
+ $Script:InstanceTab.Text = "Instance = $($this.SelectedRows | ForEach-Object {$_.DataboundItem.wmiPath.split(':')[1]})"
+ $Script:rtbInstance.Text = $this.SelectedRows |ForEach-Object {$_.DataboundItem |Format-List * | out-String -width 1000 }
+ $tabControl.SelectedTab = $Script:InstanceTab
+ }
+} # OutputWmiInstance
+#endregion
+#region GetWmiMethod
+Function GetWmiMethod {
+ $WMIMethod = $this.SelectedItem
+ $WmiClassName = $script:WmiClass.__Class
+ $tabControl.SelectedTab = $tabMethods
+ #$rtbmethods.ForeColor = 'Green'
+ $rtbMethods.Font = new-object System.Drawing.Font("Microsoft Sans Serif",8)
+ $rtbMethods.text = ""
+ $rtbMethods.selectionFont = $fontBold
+
+ $rtbMethods.AppendText(("{1} Method : {0} `n" -f $this.SelectedItem , $script:WmiClass.__Class))
+ $rtbMethods.AppendText("`n")
+ $rtbMethods.selectionFont = $fontBold
+ $rtbMethods.AppendText("OverloadDefinitions:`n")
+ $rtbMethods.AppendText("$($script:WmiClass.$WMIMethod.OverloadDefinitions)`n`n")
+ $Qualifiers=@()
+ $script:WmiClass.psbase.Methods[($this.SelectedItem)].Qualifiers | ForEach-Object {$qualifiers += $_.name}
+ #$rtbMethods.AppendText( "$qualifiers`n" )
+ $static = $Qualifiers -Contains "Static"
+ $rtbMethods.selectionFont = $fontBold
+ $rtbMethods.AppendText( "Static : $static`n" )
+ If ($static) {
+ $rtbMethods.AppendText( "A Static Method does not an Instance to act upon`n`n" )
+ $rtbMethods.AppendText("`n")
+
+ $rtbMethods.SelectionColor = 'Green'
+ $rtbMethods.SelectionFont = $fontCode
+ $rtbMethods.AppendText("# Sample Of Connecting to a WMI Class`n`n")
+ $rtbMethods.SelectionColor = 'Black'
+ $rtbMethods.SelectionFont = $fontCode
+ $SB = new-Object text.stringbuilder
+ $SB = $SB.Append('$Computer = "') ; $SB = $SB.AppendLine(".`"")
+ $SB = $SB.Append('$Class = "') ; $SB = $SB.AppendLine("$WmiClassName`"")
+ $SB = $SB.Append('$Method = "') ; $SB = $SB.AppendLine("$WmiMethod`"`n")
+ $SB = $SB.AppendLine('$MC = [WmiClass]"\\$Computer\' + "$($script:WmiClass.__NAMESPACE)" + ':$Class"')
+ #$SB = $SB.Append('$MP.Server = "') ; $SB = $SB.AppendLine("$($MP.Server)`"")
+ #$SB = $SB.Append('$MP.NamespacePath = "') ; $SB = $SB.AppendLine("$($script:WmiClass.__NAMESPACE)`"")
+ #$SB = $SB.AppendLine('$MP.ClassName = $Class')
+ $SB = $SB.AppendLine("`n")
+ #$SB = $SB.AppendLine('$MC = new-object system.management.ManagementClass($MP)')
+ $rtbMethods.AppendText(($sb.tostring()))
+ $rtbMethods.SelectionColor = 'Green'
+ $rtbMethods.SelectionFont = $fontCode
+ $rtbMethods.AppendText("# Getting information about the methods`n`n")
+ $rtbMethods.SelectionColor = 'Black'
+ $rtbMethods.SelectionFont = $fontCode
+ $rtbMethods.AppendText(
+ '$mc' + "`n" +
+ '$mc | Get-Member -membertype Method' + "`n" +
+ "`$mc.$WmiMethod"
+ )
+ } Else {
+ $rtbMethods.AppendText( "This is a non Static Method and needs an Instance to act upon`n`n" )
+ $rtbMethods.AppendText( "The Example given will use the Key Properties to Connect to a WMI Instance : `n`n" )
+ $rtbMethods.SelectionColor = 'Green'
+ $rtbMethods.SelectionFont = $fontCode
+ $rtbMethods.AppendText("# Example Of Connecting to an Instance`n`n")
+
+ $rtbMethods.SelectionColor = 'Black'
+ $rtbMethods.SelectionFont = $fontCode
+ $SB = new-Object text.stringbuilder
+ $SB = $SB.AppendLine('$Computer = "."')
+ $SB = $SB.Append('$Class = "') ; $SB = $SB.AppendLine("$WmiClassName.`"")
+ $SB = $SB.Append('$Method = "') ; $SB = $SB.AppendLine("$WMIMethod`"")
+ $SB = $SB.AppendLine("`n# $WmiClassName. Key Properties :")
+ $Filter = ""
+ $script:WmiClass.psbase.Properties | ForEach-Object {
+ $Q = @()
+ $_.psbase.Qualifiers | ForEach-Object {$Q += $_.name}
+ $key = $Q -Contains "key"
+ If ($key) {
+ $CIMType = $_.psbase.Qualifiers["Cimtype"].Value
+ $SB = $SB.AppendLine("`$$($_.Name) = [$CIMType]")
+ $Filter += "$($_.name) = `'`$$($_.name)`'"
+ }
+ }
+ $SB = $SB.Append("`n" + '$filter=');$SB = $SB.AppendLine("`"$filter`"")
+ $SB = $SB.AppendLine('$MC = get-WMIObject $class -computer $Computer -Namespace "' +
+ "$($script:WmiClass.__NAMESPACE)" + '" -filter $filter' + "`n")
+ $SB = $SB.AppendLine('# $MC = [Wmi]"\\$Computer\Root\CimV2:$Class.$filter"')
+ $rtbMethods.AppendText(($sb.tostring()))
+ }
+ $SB = $SB.AppendLine('$InParams = $mc.psbase.GetMethodParameters($Method)')
+ $SB = $SB.AppendLine("`n")
+ # output Method Parameter Help
+ $rtbMethods.selectionFont = $fontBold
+ $rtbMethods.AppendText("`n`n$WmiClassName. $WMIMethod Method :`n`n")
+ $q = $script:WmiClass.PSBase.Methods[$WMIMethod].Qualifiers | foreach {$_.name}
+ if ($q -contains "Description") {
+ $rtbMethods.AppendText(($script:WmiClass.psbase.Methods[$WMIMethod].psbase.Qualifiers["Description"].Value))
+ }
+
+ $rtbMethods.selectionFont = $fontBold
+ $rtbMethods.AppendText("`n`n$WMIMethod Parameters :`n")
+ # get the Parameters
+
+ $inParam = $script:WmiClass.psbase.GetMethodParameters($WmiMethod)
+ $HasParams = $False
+ if ($true) {
+ trap{$rtbMethods.AppendText('[None]') ;continue}
+ $inParam.PSBase.Properties | foreach {
+ $Q = $_.Qualifiers | foreach {$_.name}
+ # if Optional Qualifier is not present then Parameter is Mandatory
+ $Optional = $q -contains "Optional"
+ $CIMType = $_.Qualifiers["Cimtype"].Value
+ $rtbMethods.AppendText("`nName = $($_.Name) `nType = $CIMType `nOptional = $Optional")
+ # write Parameters to Example script
+ if ($Optional -eq $TRUE) {$SB = $SB.Append('# ')}
+ $SB = $SB.Append('$InParams.');$SB = $SB.Append("$($_.Name) = ");$SB = $SB.AppendLine("[$CIMType]")
+ if ($q -contains "Description") {$rtbMethods.AppendText($_.Qualifiers["Description"].Value)}
+ $HasParams = $true
+ }
+ }
+ # Create the Rest of the Script
+ $rtbMethods.selectionFont = $fontBold
+ $rtbMethods.AppendText("`n`nTemplate Script :`n")
+ # Call diferent Overload as Method has No Parameters
+ If ($HasParams -eq $True) {
+ $SB = $SB.AppendLine("`n`"Calling $WmiClassName. : $WMIMethod with Parameters :`"")
+ $SB = $SB.AppendLine('$inparams.PSBase.properties | select name,Value | format-Table')
+ $SB = $SB.AppendLine("`n" + '$R = $mc.PSBase.InvokeMethod($Method, $inParams, $Null)')
+ }Else{
+ $SB = $SB.AppendLine("`n`"Calling $WmiClassName. : $WMIMethod `"")
+ $SB = $SB.AppendLine("`n" + '$R = $mc.PSBase.InvokeMethod($Method,$Null)')
+ }
+ $SB = $SB.AppendLine('"Result :"')
+ $SB = $SB.AppendLine('$R | Format-list' + "`n`n")
+ # Write Header of the Sample Script :
+
+ $rtbMethods.SelectionColor = 'Green'
+ $rtbMethods.SelectionFont = $fontCode
+ $rtbMethods.AppendText(@"
+# $WmiClassName. $WMIMethod-Method Template Script"
+# Created by PowerShell WmiExplorer
+# /\/\o\/\/ 2006
+# www.ThePowerShellGuy.com
+#
+# Fill InParams values before Executing
+# InParams that are Remarked (#) are Optional
+"@
+ )
+ $rtbMethods.SelectionColor = 'Black'
+ #$rtbMethods.SelectionFont = $fontCode
+ $rtbMethods.AppendText("`n`n" + $SB)
+ $rtbMethods.SelectionFont = new-object System.Drawing.Font("Lucida Console",6 )
+ $rtbMethods.AppendText("`n`n Generated by the PowerShell WMI Explorer /\/\o\/\/ 2006" )
+
+} # GetWmiMethod
+#endregion
+#endregion
+# Show the Form
+$FrmMain.Add_Shown({$FrmMain.Activate()})
+
+trap {Write-Host $_ ;$status.Text = "unexpected error";$slMessage.Text = "$_.message";continue}
+& {
+ [void]$FrmMain.showdialog()
+}
+# Resolve-Error $Error[0] | out-string
\ No newline at end of file
diff --git a/scripts/x64dbg/install.bat b/scripts/x64dbg/install.bat
new file mode 100644
index 00000000000..8b090b5ec73
--- /dev/null
+++ b/scripts/x64dbg/install.bat
@@ -0,0 +1,11 @@
+@ECHO OFF & PUSHD "%~DP0"
+REG QUERY "HKU\S-1-5-19">NUL 2>&1 || (
+reg add "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /f /v "%~dp0release\x64\x64dbg.exe" /d "~ RUNASADMIN" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /f /v "%~dp0release\x32\x32dbg.exe" /d "~ RUNASADMIN" >NUL 2>NUL
+)
+REG QUERY "HKU\S-1-5-19">NUL 2>&1 || (powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+start "" /wait "%~dp0release\x96dbg.exe"
+ECHO.&ECHO 添加完成
+ECHO.&ECHO ghxi.com
+TIMEOUT /t 3 >NUL&EXIT
diff --git a/scripts/x64dbg/uninstall.bat b/scripts/x64dbg/uninstall.bat
new file mode 100644
index 00000000000..42a299a2b2c
--- /dev/null
+++ b/scripts/x64dbg/uninstall.bat
@@ -0,0 +1,28 @@
+@ECHO OFF & PUSHD "%~DP0"
+REG QUERY "HKU\S-1-5-19">NUL 2>&1 || (
+reg add "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /f /v "%~dp0release\x64\x64dbg.exe" /d "~ RUNASADMIN" >NUL 2>NUL
+reg add "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /f /v "%~dp0release\x32\x32dbg.exe" /d "~ RUNASADMIN" >NUL 2>NUL
+)
+REG QUERY "HKU\S-1-5-19">NUL 2>&1 || (powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
+
+reg delete "HKLM\SOFTWARE\Classes\.dd32" /f >NUL 2>NUL
+reg delete "HKLM\SOFTWARE\Classes\.dd64" /f >NUL 2>NUL
+reg delete "HKLM\exefile\Shell\Debug with x32dbg" /f >NUL 2>NUL
+reg delete "HKLM\exefile\Shell\Debug with x64dbg" /f >NUL 2>NUL
+reg delete "HKLM\dllfile\Shell\Debug with x32dbg" /f >NUL 2>NUL
+reg delete "HKLM\dllfile\Shell\Debug with x64dbg" /f >NUL 2>NUL
+reg delete "HKCR\dllfile\Shell\Debug with x64dbg" /f >NUL 2>NUL
+reg delete "HKCR\dllfile\Shell\Debug with x32dbg" /f >NUL 2>NUL
+reg delete "HKCR\exefile\Shell\Debug with x64dbg" /f >NUL 2>NUL
+reg delete "HKCR\exefile\Shell\Debug with x32dbg" /f >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /f /v "%~dp0release\x64\x64dbg.exe" >NUL 2>NUL
+reg delete "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /f /v "%~dp0release\x32\x32dbg.exe" >NUL 2>NUL
+del/q "%UserProfile%\桌面\x*dbg.lnk" >NUL 2>NUL
+del/q "%AllUsersProfile%\桌面\x*dbg.lnk" >NUL 2>NUL
+del/q "%Public%\Desktop\x*dbg.lnk" >NUL 2>NUL
+del/q "%UserProfile%\Desktop\x*dbg.lnk" >NUL 2>NUL
+del/q "%UserProfile%\Desktop\x*dbg.lnk" >NUL 2>NUL
+del/q "%UserProfile%\Desktop\x*dbg.lnk" >NUL 2>NUL
+ECHO.&ECHO 删除完成
+ECHO.&ECHO ghxi.com
+TIMEOUT /t 3 >NUL&EXIT
diff --git a/scripts/xyplorer/xyplorer-activate.ps1 b/scripts/xyplorer/xyplorer-activate.ps1
new file mode 100644
index 00000000000..5267b911035
--- /dev/null
+++ b/scripts/xyplorer/xyplorer-activate.ps1
@@ -0,0 +1,3 @@
+Copy-Item "$(scoop prefix xyplorer-pro-crack)\XYplorer.Keygen.Activator.exe" "$(scoop prefix xyplorer-pro-portable)" -ErrorAction SilentlyContinue -Force
+
+sudo Start-Process "$(scoop prefix xyplorer-pro-portable)\XYplorer.Keygen.Activator.exe" -ArgumentList @("/activateinstall") -WorkingDirectory "$(scoop prefix xyplorer-pro-portable)" -WindowStyle Hidden