Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Open Settings Folder crashes without the process environment variable and uses the wrong portable path

未关闭 适合新手
#696 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 3 天内回复

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
78/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
visualbasic
领域
desktop

调研方向

阅读 SettingsPage.xaml.vb,并追踪 SettingsService 如何在 SettingsService.vb 中选择 DataFolder,包括 Application.xaml.vb 中的便携模式。首先比较按钮处理程序的路径与服务当前使用的数据文件夹,然后检查打开文件夹失败时如何处理。完成标准是:在报告的两种情况下,按钮都能打开当前使用的设置目录,并在打开失败时显示已处理的错误。

由索引模型根据 Issue 内容生成。

描述

Tested on official v4.0.0-beta.12, Windows 11 25H2 (26200.9711), ASUS Vivobook S 15 / Snapdragon X Elite X1E-78-100 / 16 GB RAM, .NET 10.0.13. Both the native ARM64 application and the official x64 application were tested directly on this ARM laptop. Additional component checks used unchanged libraries extracted from the x64 release, with the release's embedded manifest. No Intel/AMD PC was tested. Only disposable files were used. Most testing was automated with Codex, with human assistance identified where applicable. Related build request: #556.

The same button has two related problems.

A. Crash when the process has no IridiumIO environment variable

  1. Launch the application from a parent process that lacks IridiumIO.
  2. Open Settings and click Open Settings Folder.

The app exits with:

System.ArgumentNullException: Value cannot be null. (Parameter 'path1')
  at System.IO.Path.Combine(String path1, String path2)
  at CompactGUI.SettingsPage.Button_Click(Object sender, RoutedEventArgs e)

This happened at 01:48:53 and 01:50:27 BST on 21 October 2026. The second reproduction deliberately omitted the variable only from the launched child's environment; no global variable was removed. Application logs and Windows .NET Runtime 1026/Application Error 1000 records corroborate both crashes.

A fresh child given the existing user-scoped value did not crash.

B. Wrong folder in portable mode
With IridiumIO present and the executable in a directory named CompactGUI, active settings are in the adjacent .CompactGUIData directory. The button instead constructs %LOCALAPPDATA%\IridiumIO\CompactGUI. That path did not exist in this setup; Explorer opened Documents instead of the active data folder.

Expected in both cases: open the actual settings directory, with a handled error if opening fails.

Source explanation

Opening ISettingsService.DataFolder.FullName with error handling should address both failures.

x64 component comparison (21 October 2026)

Invoking the actual x64 release's SettingsPage.Button_Click handler with IridiumIO missing only from the test process reproduced the same exception:

System.ArgumentNullException: Value cannot be null. (Parameter 'path1')
  at System.IO.Path.Combine(String path1, String path2)
  at CompactGUI.SettingsPage.Button_Click(Object sender, RoutedEventArgs e)

The harness caught that exception. A subsequent direct GUI test independently confirmed the x64 app crash:

Direct x64 GUI follow-up (21 October 2026, BST)

A fresh official x64 application was launched with IridiumIO omitted only from that child's environment. Clicking Settings -> Open Settings Folder terminated the process at 18:22:52. Windows recorded:

.NET Runtime, event 1026: process terminated due to an unhandled exception
System.ArgumentNullException: Value cannot be null. (Parameter 'path1')
  at System.IO.Path.Combine(String path1, String path2)
  at CompactGUI.SettingsPage.Button_Click(Object sender, RoutedEventArgs e)
Application Error, event 1000: CompactGUI.exe; exception 0xe0434352

The event's executable path matched the isolated official x64 copy, and the process was confirmed exited. This was an actual button click and unhandled application crash, separate from the caught component test.

With the existing environment value present, the portable x64 button opened a new Explorer window titled Documents at about 18:11:38. Its active data directory was the adjacent .CompactGUIData folder, not Documents. Explorer's full address could not be independently read because access to that window was unavailable; the window title, active data directory and handler's constructed path were recorded. The portable misdirection was also directly observed in the earlier ARM64 test.

The existing user-scoped environment variable was left unchanged.

主要语言
Visual Basic .NET
星标
8.9k
派生
343
平均合并
3 天 18 小时
30 天内合并 PR
7

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

IridiumIO/CompactGUI 的其他 Issue

查看 IridiumIO/CompactGUI 的全部 Issue

相似的 Issue

更多 Desktop Dev Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。