Fix/win query arch (#7786)
* fix: win, query arch with GetNativeSystemInfo Signed-off-by: fufesou <shuanglongchen@yeah.net> * refact: idd, ci Signed-off-by: fufesou <shuanglongchen@yeah.net> --------- Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
33c8bdfabf
commit
ad062486ff
20
.github/workflows/flutter-build.yml
vendored
20
.github/workflows/flutter-build.yml
vendored
@ -115,16 +115,11 @@ jobs:
|
|||||||
- name: Build rustdesk
|
- name: Build rustdesk
|
||||||
run: |
|
run: |
|
||||||
Invoke-WebRequest -Uri https://github.com/rustdesk-org/rdev/releases/download/usbmmidd_v2/usbmmidd_v2.zip -OutFile usbmmidd_v2.zip
|
Invoke-WebRequest -Uri https://github.com/rustdesk-org/rdev/releases/download/usbmmidd_v2/usbmmidd_v2.zip -OutFile usbmmidd_v2.zip
|
||||||
$SHA256_SUM = '629b51e9944762bae73948171c65d09a79595cf4c771a82ebc003fbba5b24f51'
|
Expand-Archive usbmmidd_v2.zip -DestinationPath .
|
||||||
if ((Get-FileHash -Path .\usbmmidd_v2.zip -Algorithm SHA256).Hash -ne $SHA256_SUM) {
|
python3 .\build.py --portable --hwcodec --flutter --vram --skip-portable-pack --virtual-display
|
||||||
Write-Error "SHA256 sum mismatch, falling back to the non-virtual-display version"
|
Remove-Item -Path usbmmidd_v2\Win32 -Recurse
|
||||||
python3 .\build.py --portable --hwcodec --flutter --vram --skip-portable-pack
|
Remove-Item -Path usbmmidd_v2\deviceinstaller.exe
|
||||||
} else {
|
mv -Force .\usbmmidd_v2 ./flutter/build/windows/x64/runner/Release/
|
||||||
Write-Host "SHA256 sum matched, using the virtual-display version"
|
|
||||||
Expand-Archive usbmmidd_v2.zip -DestinationPath .
|
|
||||||
python3 .\build.py --portable --hwcodec --flutter --vram --skip-portable-pack --virtual-display
|
|
||||||
mv -Force .\usbmmidd_v2 ./flutter/build/windows/x64/runner/Release/
|
|
||||||
}
|
|
||||||
|
|
||||||
- name: find Runner.res
|
- name: find Runner.res
|
||||||
# Windows: find Runner.res (compiled from ./flutter/windows/runner/Runner.rc), copy to ./Runner.res
|
# Windows: find Runner.res (compiled from ./flutter/windows/runner/Runner.rc), copy to ./Runner.res
|
||||||
@ -262,11 +257,14 @@ jobs:
|
|||||||
python3 res/inline-sciter.py
|
python3 res/inline-sciter.py
|
||||||
# Patch sciter x86
|
# Patch sciter x86
|
||||||
sed -i 's/branch = "dyn"/branch = "dyn_x86"/g' ./Cargo.toml
|
sed -i 's/branch = "dyn"/branch = "dyn_x86"/g' ./Cargo.toml
|
||||||
cargo build --features inline,vram,hwcodec --release --bins
|
cargo build --features inline,vram,hwcodec,virtual_display_driver --release --bins
|
||||||
mkdir -p ./Release
|
mkdir -p ./Release
|
||||||
mv ./target/release/rustdesk.exe ./Release/rustdesk.exe
|
mv ./target/release/rustdesk.exe ./Release/rustdesk.exe
|
||||||
curl -LJ -o ./Release/sciter.dll https://github.com/c-smile/sciter-sdk/raw/master/bin.win/x32/sciter.dll
|
curl -LJ -o ./Release/sciter.dll https://github.com/c-smile/sciter-sdk/raw/master/bin.win/x32/sciter.dll
|
||||||
echo "output_folder=./Release" >> $GITHUB_OUTPUT
|
echo "output_folder=./Release" >> $GITHUB_OUTPUT
|
||||||
|
curl -LJ -o ./usbmmidd_v2.zip https://github.com/rustdesk-org/rdev/releases/download/usbmmidd_v2/usbmmidd_v2.zip
|
||||||
|
unzip usbmmidd_v2.zip
|
||||||
|
mv ./usbmmidd_v2 ./Release || true
|
||||||
|
|
||||||
- name: find Runner.res
|
- name: find Runner.res
|
||||||
# Windows: find Runner.res (compiled from ./flutter/windows/runner/Runner.rc), copy to ./Runner.res
|
# Windows: find Runner.res (compiled from ./flutter/windows/runner/Runner.rc), copy to ./Runner.res
|
||||||
|
@ -607,9 +607,7 @@ UINT __stdcall RemoveAmyuniIdd(
|
|||||||
DWORD fileAttributes = 0;
|
DWORD fileAttributes = 0;
|
||||||
HINSTANCE hi = 0;
|
HINSTANCE hi = 0;
|
||||||
|
|
||||||
USHORT processMachine = 0;
|
SYSTEM_INFO si;
|
||||||
USHORT nativeMachine = 0;
|
|
||||||
BOOL isWow64Res = FALSE;
|
|
||||||
LPCWSTR exe = NULL;
|
LPCWSTR exe = NULL;
|
||||||
|
|
||||||
hr = WcaInitialize(hInstall, "RemoveAmyuniIdd");
|
hr = WcaInitialize(hInstall, "RemoveAmyuniIdd");
|
||||||
@ -630,24 +628,22 @@ UINT __stdcall RemoveAmyuniIdd(
|
|||||||
goto LExit;
|
goto LExit;
|
||||||
}
|
}
|
||||||
|
|
||||||
isWow64Res = IsWow64Process2(GetCurrentProcess(), &processMachine, &nativeMachine);
|
GetNativeSystemInfo(&si);
|
||||||
if (isWow64Res == TRUE) {
|
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) {
|
||||||
if (nativeMachine == IMAGE_FILE_MACHINE_AMD64) {
|
exe = L"deviceinstaller64.exe";
|
||||||
exe = L"deviceinstaller64.exe";
|
|
||||||
} else {
|
|
||||||
exe = L"deviceinstaller.exe";
|
|
||||||
}
|
|
||||||
WcaLog(LOGMSG_STANDARD, "Remove amyuni idd %ls in %ls", exe, workDir);
|
|
||||||
hi = ShellExecuteW(NULL, L"open", exe, L"remove usbmmidd", workDir, SW_HIDE);
|
|
||||||
// https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutew
|
|
||||||
if ((int)hi <= 32) {
|
|
||||||
WcaLog(LOGMSG_STANDARD, "Failed to remove amyuni idd : %d, last error: %d", (int)hi, GetLastError());
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
WcaLog(LOGMSG_STANDARD, "Amyuni idd is removed");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
WcaLog(LOGMSG_STANDARD, "Failed to call IsWow64Process2(): %d", GetLastError());
|
// No need to check if is other architecture.
|
||||||
|
// Because the driver is only for x86 and x64. It will not work at on other architectures.
|
||||||
|
exe = L"deviceinstaller.exe";
|
||||||
|
}
|
||||||
|
WcaLog(LOGMSG_STANDARD, "Remove amyuni idd %ls in %ls", exe, workDir);
|
||||||
|
hi = ShellExecuteW(NULL, L"open", exe, L"remove usbmmidd", workDir, SW_HIDE);
|
||||||
|
// https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutew
|
||||||
|
if ((int)hi <= 32) {
|
||||||
|
WcaLog(LOGMSG_STANDARD, "Failed to remove amyuni idd : %d, last error: %d", (int)hi, GetLastError());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
WcaLog(LOGMSG_STANDARD, "Amyuni idd is removed");
|
||||||
}
|
}
|
||||||
|
|
||||||
LExit:
|
LExit:
|
||||||
|
@ -42,6 +42,7 @@ use winapi::{
|
|||||||
},
|
},
|
||||||
securitybaseapi::GetTokenInformation,
|
securitybaseapi::GetTokenInformation,
|
||||||
shellapi::ShellExecuteW,
|
shellapi::ShellExecuteW,
|
||||||
|
sysinfoapi::{GetNativeSystemInfo, SYSTEM_INFO},
|
||||||
winbase::*,
|
winbase::*,
|
||||||
wingdi::*,
|
wingdi::*,
|
||||||
winnt::{
|
winnt::{
|
||||||
@ -2370,9 +2371,16 @@ impl Drop for WallPaperRemover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_amyuni_exe_name() -> Option<String> {
|
pub fn get_amyuni_exe_name() -> Option<String> {
|
||||||
let exe = match std::env::consts::ARCH {
|
let mut sys_info = SYSTEM_INFO::default();
|
||||||
"x86" => "deviceinstaller.exe",
|
unsafe {
|
||||||
"x86_64" => "deviceinstaller64.exe",
|
GetNativeSystemInfo(&mut sys_info as _);
|
||||||
|
}
|
||||||
|
const PROCESSOR_ARCHITECTURE_INTEL: u16 = 0;
|
||||||
|
const PROCESSOR_ARCHITECTURE_AMD64: u16 = 9;
|
||||||
|
|
||||||
|
let exe = match unsafe { sys_info.u.s().wProcessorArchitecture } {
|
||||||
|
PROCESSOR_ARCHITECTURE_INTEL => "deviceinstaller.exe",
|
||||||
|
PROCESSOR_ARCHITECTURE_AMD64 => "deviceinstaller64.exe",
|
||||||
_ => {
|
_ => {
|
||||||
log::error!("Unsupported machine architecture");
|
log::error!("Unsupported machine architecture");
|
||||||
return None;
|
return None;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user