portable-service: add quick_start feature and ci

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages 2022-11-16 20:32:22 +08:00
parent 0a2627f06a
commit 0199770454
6 changed files with 33 additions and 7 deletions

View File

@ -15,7 +15,7 @@ env:
jobs:
build-for-windows:
name: ${{ matrix.job.target }} (${{ matrix.job.os }})
name: ${{ matrix.job.target }} (${{ matrix.job.os }}) ${{ matrix.job.suffix }}
runs-on: ${{ matrix.job.os }}
strategy:
fail-fast: false
@ -23,7 +23,8 @@ jobs:
job:
# - { target: i686-pc-windows-msvc , os: windows-2019 }
# - { target: x86_64-pc-windows-gnu , os: windows-2019 }
- { target: x86_64-pc-windows-msvc , os: windows-2019 }
- { target: x86_64-pc-windows-msvc , os: windows-2019, suffix: "" , extra-build-args: "" }
- { target: x86_64-pc-windows-msvc , os: windows-2019, suffix: "-qs", extra-build-args: "--quick_start" }
steps:
- name: Checkout source code
uses: actions/checkout@v3
@ -83,13 +84,13 @@ jobs:
shell: bash
- name: Build rustdesk
run: python3 .\build.py --portable --hwcodec --flutter
run: python3 .\build.py --portable --hwcodec --flutter ${{ matrix.job.extra-build-args }}
- name: Rename rustdesk
shell: bash
run: |
for name in rustdesk*??-install.exe; do
mv "$name" "${name%%-install.exe}-${{ matrix.job.target }}.exe"
mv "$name" "${name%%-install.exe}-${{ matrix.job.target }}${{ matrix.job.suffix }}.exe"
done
- name: Publish Release

View File

@ -29,6 +29,7 @@ flutter = ["flutter_rust_bridge"]
default = ["use_dasp"]
hwcodec = ["scrap/hwcodec"]
mediacodec = ["scrap/mediacodec"]
quick_start = []
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

View File

@ -81,6 +81,11 @@ def make_parser():
action='store_true',
help='Build windows portable'
)
parser.add_argument(
'--quick_start',
action='store_true',
help='Windows quick start portable'
)
parser.add_argument(
'--flatpak',
action='store_true',
@ -189,6 +194,8 @@ def get_features(args):
features = ['inline']
if windows:
features.extend(get_rc_features(args))
if args.quick_start:
features.append('quick_start')
if args.hwcodec:
features.append('hwcodec')
if args.flutter:

View File

@ -81,6 +81,13 @@ pub fn core_main() -> Option<Vec<String>> {
}
}
#[cfg(windows)]
#[cfg(feature = "quick_start")]
if !crate::platform::is_installed() && args.is_empty() && !_is_elevate && !_is_run_as_system {
if let Err(e) = crate::portable_service::client::start_portable_service() {
log::error!("Failed to start portable service:{:?}", e);
}
}
#[cfg(windows)]
if !crate::platform::is_installed() && (_is_elevate || _is_run_as_system) {
crate::platform::elevate_or_run_as_system(click_setup, _is_elevate, _is_run_as_system);
return None;
@ -276,7 +283,7 @@ fn core_main_invoke_new_connection(mut args: std::env::Args) -> Option<Vec<Strin
"RustDesk",
(WM_USER + 2) as _, // refered from unilinks desktop pub
uni_links.as_str(),
true
true,
);
return if res { None } else { Some(Vec::new()) };
}

View File

@ -1553,6 +1553,13 @@ pub fn run_as_system(arg: &str) -> ResultType<()> {
pub fn elevate_or_run_as_system(is_setup: bool, is_elevate: bool, is_run_as_system: bool) {
// avoid possible run recursively due to failed run.
log::info!(
"elevate:{}->{:?}, run_as_system:{}->{}",
is_elevate,
is_elevated(None),
is_run_as_system,
crate::username(),
);
let arg_elevate = if is_setup {
"--noinstall --elevate"
} else {

View File

@ -406,8 +406,9 @@ pub mod server {
Pong => {
nack = 0;
}
ConnCount(Some(n)) => {
if n == 0 {
ConnCount(Some(_n)) => {
#[cfg(not(feature = "quick_start"))]
if _n == 0 {
log::info!("Connnection count equals 0, exit");
stream.send(&Data::DataPortableService(WillClose)).await.ok();
break;
@ -435,6 +436,7 @@ pub mod server {
break;
}
stream.send(&Data::DataPortableService(Ping)).await.ok();
#[cfg(not(feature = "quick_start"))]
stream.send(&Data::DataPortableService(ConnCount(None))).await.ok();
}
}
@ -462,6 +464,7 @@ pub mod client {
}
pub(crate) fn start_portable_service() -> ResultType<()> {
log::info!("start portable service");
if PORTABLE_SERVICE_RUNNING.lock().unwrap().clone() {
bail!("already running");
}