rustdesk-customization/README.md
2022-11-03 13:18:41 -04:00

1.9 KiB

rustdesk-customization

Some tips for customizing RustDesk for Windows (other platforms might require additional changes)

Embedding Sciter.dll

If you want a single portable executable file, you can either statically link Sciter, or embed the DLL. Statically linking it requires you license Sciter, which costs money--so I went with embedding the dll.

  1. Copy sciter.dll to your project root directory (where Cargo.toml resides)
  2. Add the following lines into fn main() in src/main.rs
    let bytes = include_bytes!("..\\sciter.dll");
    fs::write("sciter.dll", bytes.as_slice());

Note: Do not remove the "..\" as main.rs resides in /rustdesk/src, and will not be able to find the file otherwise. Alternatively you can put sciter.dll in /rustdesk/src

The function should now look like so:

#[cfg(not(any(target_os = "android", target_os = "ios", feature = "cli")))]
fn main() {
    
    //BEGIN CHANGES
    //Embed the Sciter.dll file into the exe, and then write it to disk when application starts
    println!("================ LOADING SCITER DLLL ==================");
    let bytes = include_bytes!("..\\sciter.dll"); //since main.rs is in rustdesk/src, we need to go up one level (to rustdesk)
    fs::write("sciter.dll", bytes.as_slice());
    //END CHANGES
    
    if !common::global_init() {
        return;
    }

    //println!("Key: {}", hbb_common::config::RS_PUB_KEY);
    //println!("Password: {}", hbb_common::config::RS_PASS);
    //println!("Salt: {}", hbb_common::config::RS_SALT);
    if let Some(args) = crate::core_main::core_main().as_mut() {
        ui::start(args);
    }
    common::global_clean();
}

Hide Console Window

You can toggle the console terminal window by uncommenting line 3 in src/main.rs

#![windows_subsystem = "windows"]

Comment it out to show console window, uncomment it to hide.