### Preflight Checklist

- [X] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
- [X] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
- [X] I have searched the [issue tracker](https://www.github.com/electron/electron/issues) for a feature request that matches the one I want to file, without success.

### Electron Version

12.0.0

### What operating system are you using?

Windows

### Operating System Version

Windows 10 version 1909

### What arch are you using?

x64

### Last Known Working Electron version

_No response_

### Expected Behavior

File unlocked after closing the renderer process that access the asar package.

### Actual Behavior

File still locked after closing the renderer process that access the asar package.

### Testcase Gist URL

_No response_

#24470  broke  #4118 , #4129

Asar file not closed automatically on Windows.

In my project, multiple web apps were each packaged into asar archives and then load by Electron renderers.

It's also vital that these packages were able to be removed and replaced while Electron main process is running.

I found that this issue was fixed before (#4118 , #4129) but then broke by #24470,  which also removed the `getFD` method, making this issue not likely to be walked-around without forking and recompiling.

May I suggest adding these features back?

Thanks.
shell/common/asar/scoped_temporary_file.cc
#include "shell/common/asar/scoped_temporary_file.h"
#include <vector>
#include "base/files/file_util.h"
#include "base/threading/thread_restrictions.h"
namespace asar {
ScopedTemporaryFile::ScopedTemporaryFile() = default;
ScopedTemporaryFile::~ScopedTemporaryFile() {
  if (!path_.empty()) {
    base::ThreadRestrictions::ScopedAllowIO allow_io;
    
    
    
#if defined(OS_WIN)
    base::DeleteFileAfterReboot(path_);
#else
    base::DeleteFile(path_);
#endif
  }
}
bool ScopedTemporaryFile::Init(const base::FilePath::StringType& ext) {