From 23ca7570ecba30cf4085864826fb7dec0a934489 Mon Sep 17 00:00:00 2001 From: gfdgd_xi <3025613752@qq.com> Date: Sat, 31 Dec 2022 10:43:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EOEM=E5=B7=A5=E5=85=B7+?= =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=AE=89=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/InstallProgramOnWindows/Depends/OEM.exe | Bin 0 -> 153088 bytes demo/InstallProgramOnWindows/Depends/OEM.reg | Bin 0 -> 452 bytes demo/InstallProgramOnWindows/main.cpp | 83 +++++++++++++++++-- 3 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 demo/InstallProgramOnWindows/Depends/OEM.exe create mode 100644 demo/InstallProgramOnWindows/Depends/OEM.reg diff --git a/demo/InstallProgramOnWindows/Depends/OEM.exe b/demo/InstallProgramOnWindows/Depends/OEM.exe new file mode 100644 index 0000000000000000000000000000000000000000..7d87f591725b744938e8313924048de1966f250e GIT binary patch literal 153088 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 ak$2necbhH|yb$|elkJy;Bj)Z~0{C4Sq zw@WgswodO`cadI#`voG7JY5c*@_){^R?GuSR#rCqMXG12Z`9B9TDNYR_t>f>Z8oT0 za?0&b*T}k+(Y#>IwfhdfI-bO}%vv9N#zN)XZ_cZ}W6`skmHkW6Oceajt=u|lTzvxI CMol*W literal 0 HcmV?d00001 diff --git a/demo/InstallProgramOnWindows/main.cpp b/demo/InstallProgramOnWindows/main.cpp index d6b8e75..b39a5fa 100644 --- a/demo/InstallProgramOnWindows/main.cpp +++ b/demo/InstallProgramOnWindows/main.cpp @@ -4,6 +4,7 @@ #include #include #include +#include using namespace std; string mainlist[] = {"Visual C++ 运行库", ".net framework 运行库"}; @@ -35,7 +36,7 @@ string vcppUrl[] = { "http://aka.ms/vs/17/release/vc_redist.x86.exe", "http://aka.ms/vs/17/release/vc_redist.x64.exe", "http://aka.ms/vs/17/release/vc_redist.arm64.exe", - "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vscpp/VC6RedistSetup_deu.exe" + "http://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vscpp/VC6RedistSetup_deu.exe" }; string netName[] = { "3.5 SP1 Offline Installer", @@ -92,26 +93,71 @@ string netUrl[] = { "http://download.visualstudio.microsoft.com/download/pr/17737b16-dbb0-45f8-9684-16cce46f0835/14475e8380422840249513d58c70d8da/windowsdesktop-runtime-6.0.8-win-arm64.exe", "http://download.microsoft.com/download/8/2/7/827bb1ef-f5e1-4464-9788-40ef682930fd/dotnetfx.exe", "http://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exe", - "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/net/%e5%be%ae%e8%bd%af.NET%e7%a6%bb%e7%ba%bf%e8%bf%90%e8%a1%8c%e5%ba%93%e5%90%88%e9%9b%86%202022.07.22@%e4%b8%80%e4%b8%aa%e8%b7%af%e4%ba%ba.exe", - "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/net/Dotnet3.5.exe" + "http://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/net/%e5%be%ae%e8%bd%af.NET%e7%a6%bb%e7%ba%bf%e8%bf%90%e8%a1%8c%e5%ba%93%e5%90%88%e9%9b%86%202022.07.22@%e4%b8%80%e4%b8%aa%e8%b7%af%e4%ba%ba.exe", + "http://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/net/Dotnet3.5.exe" }; int vcppMax = 0; int netMax = 0; string *mainlistM[] = {vcppName, netName}; int *mainlistMaxM[] = {&vcppMax, &netMax}; +string *vcppAdviceInstallI386[] = {&vcppUrl[0], &vcppUrl[1], &vcppUrl[3], &vcppUrl[5], &vcppUrl[7], &vcppUrl[9], &vcppUrl[12]}; +string *vcppAdviceInstallAmd64[] = {&vcppUrl[0], &vcppUrl[2], &vcppUrl[4], &vcppUrl[6], &vcppUrl[8], &vcppUrl[10], &vcppUrl[12]}; +string *netAdviceInstallWin7[] = {&netUrl[25]}; string *mainlistUrlM[] = {vcppUrl, netUrl}; string tempPath = "C:\\Windows\\Temp"; +bool GetSystemArch(){ + string windowsPath = getenv("SYSTEMROOT"); + if(filesystem::exists(windowsPath + "\\SysWOW64")){ + return true; + } + return false; +} + int Download(string url, string savePath, string filename){ if(filesystem::exists(savePath + "\\" + filename)){ cout << "文件" << savePath << "\\" << filename << "已存在,移除" << endl; filesystem::remove_all(savePath + "\\" + filename); } + cout << "下载链接:" << url << endl; string command = "aria2c -x 16 -s 16 \"" + url + "\" -d \"" + savePath + "\" -o \"" + filename + "\""; return system(command.c_str()); } +void InstallAdviceVcpp(){ + if(GetSystemArch()){ + int listLen = sizeof(vcppAdviceInstallAmd64) / sizeof(vcppAdviceInstallAmd64[0]); + for(int i=0;i<=listLen;i++){ + Download(*vcppAdviceInstallAmd64[i], tempPath, to_string(i) + ".exe"); + } + for(int i=0;i<=listLen;i++){ + string command = "\"" + tempPath + "\\" + to_string(i) + "\""; + system(command.c_str()); + } + return; + } + int listLen = sizeof(vcppAdviceInstallI386) / sizeof(vcppAdviceInstallI386[0]); + for(int i=0;i<=listLen;i++){ + Download(*vcppAdviceInstallI386[i], tempPath, to_string(i) + ".exe"); + } + for(int i=0;i<=listLen;i++){ + string command = "\"" + tempPath + "\\" + to_string(i) + "\""; + system(command.c_str()); + } +} + +void InstallAdviceNet(){ + int listLen = sizeof(netAdviceInstallWin7) / sizeof(netAdviceInstallWin7[0]); + for(int i=0;i<=listLen;i++){ + Download(*netAdviceInstallWin7[i], tempPath, to_string(i) + ".exe"); + } + for(int i=0;i<=listLen;i++){ + string command = "\"" + tempPath + "\\" + to_string(i) + "\""; + system(command.c_str()); + } +} + void ShowNextList(string title, int id){ string *list = mainlistM[id]; while(1){ @@ -124,10 +170,21 @@ void ShowNextList(string title, int id){ for(int i=0;i<=max - 1;i++){ cout << i << ". " << *(list + i) << endl; } - cout << max << ". 退出此级" << endl; + cout << max << ". 安装推荐组件" << endl; + cout << max + 1 << ". 退出此级" << endl; int choose = 0; cin >> choose; if(choose == max){ + cout << "下载文件" << endl; + if(!id){ + InstallAdviceVcpp(); + } + else if(id == 1){ + InstallAdviceNet(); + } + continue; + } + if(choose == max + 1){ break; } if(0 <= choose && choose < max){ @@ -170,11 +227,27 @@ int main(){ cout << number << ". " << i << endl; number++; } - cout << mainlistLen << ". 退出程序" << endl; + cout << mainlistLen << ". 设置系统 OEM 信息(需要先安装 .net framework 4.0 或以上版本)" << endl; + cout << mainlistLen + 1 << ". 设置默认 OEM 信息(预设)" << endl; + cout << mainlistLen + 2 << ". 退出程序" << endl; cout << "请输入选项编号:"; int choose = 0; cin >> choose; if(choose == mainlistLen){ + system("Depends\\OEM.exe"); + break; + } + if(choose == mainlistLen + 1){ + bool runInAdmin = IsUserAnAdmin(); + if(runInAdmin){ + system("regedit Depends/OEM.reg"); + Download("http://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/OEM.bmp", getenv("SYSTEMROOT"), "OEM.bmp"); + break; + } + cout << "使用该功能需要使用管理员权限运行该程序。" << endl; + break; + } + if(choose == mainlistLen + 2){ // 退出程序逻辑 break; }