-
Notifications
You must be signed in to change notification settings - Fork 163
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
マルチユーザー設定ファイルの不具合修正 #1865
マルチユーザー設定ファイルの不具合修正 #1865
Conversation
マルチユーザー設定ファイルのUserRootFolderに 2:ドキュメントフォルダ、3:デスクトップを指定した場合、 OneDriveのフォルダが取得されてしまう不具合を修正する。 この不具合はOneDriveをセットアップしないと再現しないのでCI/CDではチェックできない。
Kudos, SonarCloud Quality Gate passed! |
✅ Build sakura 1.0.4179 completed (commit 23fe59e548 by @berryzplus) |
OneDriveは使っておらず現象を確認出来ませんが、コードレビューだけ行いました。もし必要であれば動作確認も行います。 https://docs.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath
|
Windowsの各ユーザーのデスクトップフォルダの場所はカスタマイズしてデフォルトの場所とは違う場所に出来るようですが、サクラエディタがそれに対応するべきかどうかが気になります。 https://superuser.com/questions/328763/can-you-change-the-location-of-the-desktop-folder-in-windows 今不具合が出ているという事はインストーラー側が正しくないってことなんですかね? |
default: | ||
refFolderId = FOLDERID_RoamingAppData; // ユーザーのアプリケーションデータフォルダー | ||
break; | ||
} | ||
|
||
PWSTR pFolderPath = nullptr; | ||
::SHGetKnownFolderPath(refFolderId, KF_FLAG_DEFAULT, nullptr, &pFolderPath); | ||
::SHGetKnownFolderPath(refFolderId, KF_FLAG_DEFAULT_PATH, NULL, &pFolderPath); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
第二引数を変更して、取得されるパスがユーザー設定の変更を受けないようにしています。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://docs.microsoft.com/en-us/windows/win32/api/shlobj_core/ne-shlobj_core-known_folder_flag
を見ると下記のように書かれていたので、きっとそれでユーザー設定の変更を受けないデフォルトのパスってことなんですね。
KF_FLAG_DEFAULT_PATH
Value: 0x00000400
0x00000400. Gets the default path for a known folder. If this flag is not set, the function retrieves the current—and possibly redirected—path of the folder. The execution of this flag includes a verification of the folder's existence unless KF_FLAG_DONT_VERIFY is set.
現状で、インストーラーはマルチユーザー設定ファイルの内容を制御できないため、少なくともインストーラーの不具合ではないと思います。 発生している不具合は、 |
マルチユーザー設定ファイル、というのはきっと
念のため確認ですが sakura.exe.ini の仕様というのは sakura.exe.ini に書かれている通りの事ですかね。
OS側でカスタマイズした場合はこの 仕様 と異なるという事ですが、そもそもこの仕様とか単体テストの期待値が、OS側のカスタマイズ値に追従出来ていない事が問題という事は無いでしょうか? サクラエディタ側の仕様としてOSのカスタマイズに対応するかしないかがよくわかりません。 |
はい、そうです。
はい、そうです。
OSのカスタマイズに対応するかどうかは、メンバーが勝手に決めてよいと思っています。 単体テスト側の条件を修正して対応するのもアリだとは思います。 |
それであればこのPRの変更内容は問題無いと思いますのでApproveしました。
サクラエディタ本体側はおそらく既にそうしていると思うので、単体テスト側が、って事ですよね。
単体テスト側の動作確認はしていませんが、変更内容的にはフィクスチャクラスを使ってテスト終了時(失敗時も含む)に TearDown で確実に設定ファイルが削除されるようにしたようですね。 |
レビューありがとうございます。 |
PR の目的
タイトル通りです。
カテゴリ
PR の背景
#1863 の不具合を見つけました。
PR のメリット
PR のデメリット (トレードオフとかあれば)
仕様・動作説明
マルチユーザー設定ファイルのUserRootFolderに
2:ドキュメントフォルダ、3:デスクトップを指定した場合、
OneDriveのフォルダが取得されてしまう不具合を修正します。
この不具合はOneDriveをセットアップしないと再現しないのでCI/CDではチェックできません。
PR の影響範囲
テスト内容
テスト1
手順
関連 issue, PR
参考資料