mirror of
https://github.com/rustdesk/doc.rustdesk.com.git
synced 2024-12-25 16:39:19 +01:00
Dev-build-windows. Build with simple_rc, which is a library to pack resource files.
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
2fd1a27d2d
commit
37a389e396
@ -42,6 +42,8 @@ rust-bindgen depends on clang, download [llvm](https://github.com/llvm/llvm-pro
|
||||
|
||||
## Build
|
||||
|
||||
### Default
|
||||
|
||||
```sh
|
||||
git clone https://github.com/rustdesk/rustdesk
|
||||
cd rustdesk
|
||||
@ -50,3 +52,82 @@ mv sciter.dll target/debug
|
||||
cargo run
|
||||
```
|
||||
|
||||
### Pack resource files
|
||||
|
||||
Rustdesk can pack resource files in one exe file.
|
||||
Then extract files to the installation directory when being installed.
|
||||
|
||||
This design makes rustdesk run both simple mode(single exe file) and full mode(all files after been installed).
|
||||
|
||||
To pack resource files, follow the steps:
|
||||
1. cd rustdesk
|
||||
2. mkdir `resources` directory
|
||||
3. put files to `resources`
|
||||
4. cargo build --features with_rc,<other features>
|
||||
|
||||
Feature `with_rc` is introduced to pack and extract resource files.
|
||||
|
||||
#### Lib `simple_rc`
|
||||
|
||||
A lib named `simple_rc` is used to pack and extract resource files.
|
||||
|
||||
##### Generate resource packed file
|
||||
The pack process workflow:
|
||||
1. Parse the specified directory tree.
|
||||
2. Exclude specified files.
|
||||
3. Read all file contents, save as byte arrays in source file(`rc.rs`), and remember file names.
|
||||
|
||||
`simple_rc` accepts either a configuration file or a `Config` structure.
|
||||
|
||||
1. Generate resource packed with configuration file.
|
||||
```
|
||||
fn generate(conf_file: &str) -> ResultType<()>
|
||||
```
|
||||
```
|
||||
# The output source file
|
||||
outfile = "src/rc.rs"
|
||||
|
||||
# The resource config list.
|
||||
[[confs]]
|
||||
# The file or director to integrate.
|
||||
inc = "D:/projects/windows/RustDeskTempTopMostWindow/x64/Release/xxx"
|
||||
# The exclusions.
|
||||
exc = ["*.dll", "*.exe"]
|
||||
# The front path that will ignore for extracting.
|
||||
# ${OutputPath} = ${InstallDir} + (${inc} - ${suppressed_front})
|
||||
# The following config will make base output path to be "RustDeskTempTopMostWindow/x64/Release/xxx".
|
||||
suppressed_front = "D:/projects/windows"
|
||||
```
|
||||
|
||||
2. Generate resource packed file with a `Config` structure:
|
||||
```
|
||||
fn generate_with_conf<'a>(conf: &'a Config) -> ResultType<()>
|
||||
|
||||
...
|
||||
generate_with_conf(&Config {
|
||||
outfile: "src/rc.rs".to_owned(),
|
||||
confs: vec![ConfigItem {
|
||||
inc: "resources".to_owned(),
|
||||
exc: vec![],
|
||||
suppressed_front: "resources".to_owned(),
|
||||
}],
|
||||
})
|
||||
.unwrap();
|
||||
...
|
||||
```
|
||||
|
||||
##### Extract files
|
||||
|
||||
Extraction will keep the resource direcotry tree.
|
||||
|
||||
The extraction process workflow:
|
||||
1. Create directory if needed, to restore the directory tree.
|
||||
2. Write contents to the associated file names.
|
||||
|
||||
```
|
||||
fn extract_resources(root_path: &str) -> ResultType<()>
|
||||
```
|
||||
|
||||
##### Note
|
||||
|
||||
File attributes like privileges, create time, owner, are not supported.
|
||||
|
Loading…
Reference in New Issue
Block a user