+
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/api/app.md
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,7 @@ Returns `string` - The current application directory.
* `%APPDATA%` on Windows
* `$XDG_CONFIG_HOME` or `~/.config` on Linux
* `~/Library/Application Support` on macOS
* `assets` The directory where app assets such as `resources.pak` are stored. By default this is the same as the folder containing the `exe` path. Available on Windows and Linux only.
* `userData` The directory for storing your app's configuration files, which
by default is the `appData` directory appended with your app's name. By
convention files storing user data should be written to this directory, and
Expand All @@ -615,7 +616,7 @@ Returns `string` - The current application directory.
directory.
* `temp` Temporary directory.
* `exe` The current executable file.
* `module` The `libchromiumcontent` library.
* `module` The location of the Chromium module. By default this is synonymous with `exe`.
* `desktop` The current user's Desktop directory.
* `documents` Directory for a user's "My Documents".
* `downloads` Directory for a user's downloads.
Expand Down
2 changes: 1 addition & 1 deletion shell/app/electron_main_delegate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ std::string LoadResourceBundle(const std::string& locale) {
pak_dir =
base::apple::FrameworkBundlePath().Append(FILE_PATH_LITERAL("Resources"));
#else
base::PathService::Get(base::DIR_MODULE, &pak_dir);
base::PathService::Get(base::DIR_ASSETS, &pak_dir);
#endif

std::string loaded_locale = ui::ResourceBundle::InitSharedInstanceWithLocale(
Expand Down
3 changes: 3 additions & 0 deletions shell/browser/api/electron_api_app.cc
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,9 @@ int GetPathConstant(std::string_view name) {
// clang-format off
constexpr auto Lookup = base::MakeFixedFlatMap<std::string_view, int>({
{"appData", DIR_APP_DATA},
#if !BUILDFLAG(IS_MAC)
{"assets", base::DIR_ASSETS},
#endif
#if BUILDFLAG(IS_POSIX)
{"cache", base::DIR_CACHE},
#else
Expand Down
8 changes: 4 additions & 4 deletions shell/common/asar/archive_win.cc
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ const wchar_t kIntegrityCheckResourceType[] = L"Integrity";
const wchar_t kIntegrityCheckResourceItem[] = L"ElectronAsar";

std::optional<base::FilePath> Archive::RelativePath() const {
base::FilePath exe_path;
if (!base::PathService::Get(base::FILE_EXE, &exe_path)) {
LOG(FATAL) << "Couldn't get exe file path";
base::FilePath assets_dir;
if (!base::PathService::Get(base::DIR_ASSETS, &assets_dir)) {
LOG(FATAL) << "Couldn't get assets directory path";
}

base::FilePath relative_path;
if (!exe_path.DirName().AppendRelativePath(path_, &relative_path)) {
if (!assets_dir.AppendRelativePath(path_, &relative_path)) {
return std::nullopt;
}

Expand Down
7 changes: 3 additions & 4 deletions shell/common/node_bindings.cc
Original file line number Diff line number Diff line change
Expand Up @@ -457,11 +457,10 @@ base::FilePath GetResourcesPath() {
#if BUILDFLAG(IS_MAC)
return MainApplicationBundlePath().Append("Contents").Append("Resources");
#else
auto* command_line = base::CommandLine::ForCurrentProcess();
base::FilePath exec_path(command_line->GetProgram());
base::PathService::Get(base::FILE_EXE, &exec_path);
base::FilePath assets_path;
base::PathService::Get(base::DIR_ASSETS, &assets_path);

return exec_path.DirName().Append(FILE_PATH_LITERAL("resources"));
return assets_path.Append(FILE_PATH_LITERAL("resources"));
#endif
}
} // namespace
Expand Down
14 changes: 14 additions & 0 deletions spec/api-app-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1068,6 +1068,20 @@ describe('app module', () => {
expect(paths).to.deep.equal([true, true, true]);
});

if (process.platform === 'darwin') {
it('throws an error when trying to get the assets path on macOS', () => {
expect(() => {
app.getPath('assets' as any);
}).to.throw(/Failed to get 'assets' path/);
});
} else {
it('returns an assets path that is identical to the module path', () => {
const assetsPath = app.getPath('assets');
expect(fs.existsSync(assetsPath)).to.be.true();
expect(assetsPath).to.equal(path.dirname(app.getPath('module')));
});
}

it('throws an error when the name is invalid', () => {
expect(() => {
app.getPath('does-not-exist' as any);
Expand Down
Loading
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载