Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadplan #19

Closed
1 of 14 tasks
BinToss opened this issue Apr 18, 2022 · 2 comments
Closed
1 of 14 tasks

Roadplan #19

BinToss opened this issue Apr 18, 2022 · 2 comments

Comments

@BinToss
Copy link

BinToss commented Apr 18, 2022

Feel free to edit this issue as you see fit, CodeDead.

Goals

  • Allow contributors to build and test their branches before creating Pull Requests.
  • Allow third parties to programmatically execute and manipulate DeadLock. Provide class library and/or CLI for lightweight, portable solution.
  • CI/CD: Automatically build and publish Releases via GitHub Actions' workflows. Requires Goal 1.
  • Improve GUI.

Current

When the following two tasks are completed, contributors will be able to build and test DeadLock more easily; CI/CD will be made feasible.

  • Maintainability: Migrate from SyncFusion to alternative e.g. MahApps.Metro. A NuGet PackageReference would be preferred.
  • Maintainability: Replace "UpdateManager.dll" dependency with alternative. A NuGet PackageReference would be preferred.
  • Remove Reference dependency "ReachFramework" if unnecessary
  • Remove Reference dependency "System.Printing" if unnecessary
  • Add --unlock switch argument to immediately unlock the files/directories specified via startup arguments. Aids Goal 2.

Future

  • Automate GitHub Releases via GitHub Actions
  • Publish all projects to NuGet via GitHub Actions
  • [Deprecate || Maintain] WPF and WinForms GUI front-end projects.
  • Add CLI front-end project (maybe a PowerShell module, too?)
  • Find modern alternative to WinForms and WPF.
  • Add lightweight or trim-compatible GUI front-end project. See Portable version #4, DeadLock Update?  #16, Rebase WPF onto master branch #17.
@BinToss
Copy link
Author

BinToss commented Apr 18, 2022

Motivation

I'm planning to have HaloSPV3/HXE reference or invoke DeadLock as a library or CLI tool to unlock files in the background.

  • HXE is a wrapper for haloce.exe. Before invoking haloce.exe, HXE will apply patches to fix bugs or toggle features. Users of HXE have found that its patcher will fail when haloce.exe is locked by another process.
  • One of HXE's W.I.P. features is a wrapper for Windows' DeviceIoControl function with the FSCTL_SET_COMPRESSION control code. As the two names suggest, this wrapper adds the DirectoryInfo.Compress() and FileInfo.Compress() extensions for applying LZNT1 compression on NTFS file systems. The most frequently encountered Win32ErrorCode during tests is ERROR_SHARING_VIOLATION (32): "The process cannot access the file because it is being used by another process".

@CodeDead
Copy link
Owner

A deadlock .NET library is now available on NuGet. It is awaiting approval but should be available on NuGet soon. The repo can be found here:
https://github.com/CodeDead/deadlock-dotnet-sdk

This should solve the problem of running it in your own environment, and with additional CLI arguments in case you need them. Since it's a library, it can be extended, forked, and improved upon without breaking the UI side of things. The current repository will no longer be .NET oriented, in the future. As for the User-interface side of things, I have decided to migrate the desktop application to Tauri and utilize Rust for the Windows API calls instead of .NET in addition to a React frontend written entirely in JavaScript.

This will produce modern code, with a very tiny binary that does not require .NET at all. This should close this problem. I would recommend discussing everything in regards to the .NET library here:
https://github.com/CodeDead/deadlock-dotnet-sdk

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants