Skip to content

Commit cd19565

Browse files
authored
Update README with build instruction. (#87)
1 parent a50d84c commit cd19565

1 file changed

Lines changed: 31 additions & 26 deletions

File tree

README.md

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,39 @@
1-
# usvfs
1+
# USVFS
22

3-
[![License](http://img.shields.io/:license-gpl-blue.svg)](http://www.gnu.org/licenses/gpl-3.0.en.html)
4-
[![Build status](https://github.com/github/docs/actions/workflows/build.yml/badge.svg)](https://github.com/ModOrganizer2/usvfs/actions)
3+
[![License](https://img.shields.io/:license-gpl-blue.svg)](http://www.gnu.org/licenses/gpl-3.0.en.html)
4+
[![Build](https://github.com/ModOrganizer2/usvfs/actions/workflows/build.yml/badge.svg)](https://github.com/ModOrganizer2/usvfs/actions)
55

6-
USVFS (short for User Space Virtual File System) aims to allow windows applications to create file or directory links that
7-
are visible to only a select set of processes.
8-
It does so by using api hooking to fool file access functions into discovering/opening files that are in fact somewhere else
6+
USVFS (short for User Space Virtual File System) aims to allow windows applications to
7+
create file or directory links that are visible to only a select set of processes.
8+
It does so by using api hooking to fool file access functions into discovering/opening
9+
files that are in fact somewhere else.
10+
11+
## Current state
12+
13+
USVFS is work in progress and should be considered in alpha state.
14+
It is a core component of Mod Organizer v2 <https://github.com/ModOrganizer2/modorganizer>
15+
and thus receives serious real world testing.
16+
17+
## Building
18+
19+
You will need `cmake`, Python 3+ and `vcpkg` to build USVFS:
20+
21+
```pwsh
22+
cmake --preset vs2022-windows-x64
23+
cmake --build --preset vs2022-windows-x64 --config Release
24+
25+
# only if you need to hook x86 applications
26+
cmake --preset vs2022-windows-x86
27+
cmake --build --preset vs2022-windows-x86 --config Release
28+
```
929

1030
## Comparison to symbolic links
1131

12-
The following is based on the final goal for usvfs and doesn't necessary reflect the current development state.
32+
The following is based on the final goal for USVFS and doesn't necessary reflect the
33+
current development state.
1334

1435
Unlike symbolic file links provided by NTFS
36+
1537
- links aren't visible to all applications but only to those the caller chooses
1638
- links disappear when the "session ends"
1739
- doesn't require write access to the link destination
@@ -21,32 +43,15 @@ Unlike symbolic file links provided by NTFS
2143
- can also "virtually" unlink files, thus make them invisible to processes or replace existing files
2244

2345
There are of course drawbacks
46+
2447
- will always impose a memory and cpu overhead though hopefully those will be marginal
2548
- becomes active only during the initialization phase of each process so it may not be active at the time dependent dlls are loaded
2649
- introduces a new source of bugs that can cause hard to diagnose problems in affected processes
2750
- may rub antivirus software the wrong way as the used techniques are similar to what some malware does.
2851

29-
## Current state
30-
31-
usvfs is work in progress and should be considered in alpha state.
32-
It is a core component of Mod Organizer v2 <https://github.com/ModOrganizer2/modorganizer>
33-
and thus receives serious real world testing
34-
35-
## Building
36-
37-
You will `cmake`, Python 3+ and `vcpkg` to build USVFS:
38-
39-
```pwsh
40-
cmake -B build32 -A Win32 "-DCMAKE_TOOLCHAIN_FILE=path\to\vcpkg\scripts\buildsystems\vcpkg.cmake" -DBUILD_USVFS_TESTS=TRUE
41-
cmake --build build32 --config Release
42-
43-
cmake -B build64 -A Win64 "-DCMAKE_TOOLCHAIN_FILE=path\to\vcpkg\scripts\buildsystems\vcpkg.cmake" -DBUILD_USVFS_TESTS=TRUE
44-
cmake --build build64 --config Release
45-
```
46-
4752
## License
4853

49-
usvfs is currently licensed under the GPLv3 but this may change in the future.
54+
USVFS is currently licensed under the GPLv3 but this may change in the future.
5055

5156
## Contributing
5257

0 commit comments

Comments
 (0)