-
Notifications
You must be signed in to change notification settings - Fork 167
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
Windows10メニュー対応 #130
Windows10メニュー対応 #130
Conversation
この PR マージの前に、 Appveyor でビルドできる状態にしておきたいです。 |
@m-tmatma さん、仰せの通りでお願いします。 |
installer/sakura.iss
Outdated
begin | ||
GetWindowsVersionEx(Version); | ||
if (Version.Major = 10) and | ||
(Version.Minor = 0) and |
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.
Minor バージョンのチェックは要りますか?
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.
こちらの情報より、
http://yamatyuu.net/computer/program/sdk/base/GetVersionEx/index.html
それまでは、MajorバージョンはVista以降ずっと6だったようなので、
同じWindows10でもまたメニューの構造が変わらないとも限らないと思い、
現時点のバージョン限定の処理にしてみました。
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.
同じWindows10でもまたメニューの構造が変わらないとも限らないと思い、
現時点のバージョン限定の処理にしてみました。
変わったときに対処するようにして、特に不都合がない限り
バージョン番号が変わっても問題とならないようにしたほうが
いいと思います。
Microsoft が GetVersionExの戻り値を偽装するようにしたのは
必要がないのにバージョン番号を決め打ちしているアプリや
インストーラに対抗するためにしているのだと思います。
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.
対応しました。
installer/sakura.iss
Outdated
GetWindowsVersionEx(Version); | ||
if (Version.Major = 10) and | ||
(Version.Minor = 0) and | ||
(Version.ProductType = 1) then |
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.
ProductType は直値ではなく、VER_NT_WORKSTATION 等の値は使えないですか?
http://www.jrsoftware.org/ishelp/index.php?topic=isxfunc_getwindowsversionex
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.
あと ProductType の値をチェックしている目的は何ですか?
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.
VER_NT_WORKSTATIONに出来そうです。修正します。
ProductType は前のコメントと類似ですが今後の修正でメニュー構造が変わらないとも限らないとおもいかなりがちがちにしています。
installer/sakura.iss
Outdated
S: String; | ||
begin | ||
GetWindowsVersionEx(Version); | ||
if (Version.Major = 10) and |
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.
10 限定ですが、10 以上としたほうがいいように思います。
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.
10以上という処理にするなら関数名は変えたほうがいいです。
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.
こちらも前のコメントと同じで、10以上のUIが同じと限らないということで、
決め打ちとしています。
ご指摘3つは決めの問題かと思うので、どちらでもあまり思い入れはありません(修正はやぶさかではないです)
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.
確かに11(は無いとはいわれてますが)でもおなじUIであれば、ここ修正する必要ありませんからね。
installer/sakura.iss
Outdated
Result := False; | ||
end; | ||
end; | ||
function IsNotWin10 : Boolean; |
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.
IsNotWin10 は IsWin10を呼び出す形で実装できませんか?
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.
こちら、確かにデッドコピーなので恰好悪いとは思ったのですが、
checkのパラメータにnotを見つけられず、やるとすると、
IsWin10(True)とかIsWin10(False)みたいな呼び出し方になるので、Iconセクションがわかりにくくなるなぁとおもってあまり悩まず今の実装にしちゃいました。
IsWin10とIsNotWin10の関数名は変えずに、IsNotWin10はIsWin10の呼び出し結果を反転させる実装でいかがでしょう?
installer/sakura.iss
Outdated
@@ -73,7 +76,8 @@ Root: HKCU; Subkey: "SOFTWARE\Classes\*\shell\sakuraeditor\command"; ValueType: | |||
Root: HKCU; Subkey: "SOFTWARE\Classes\Applications\sakura.exe\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\sakura.exe"" ""%1"""; Tasks: proglist; Flags: uninsdeletekey; Check: CheckPrivilege(false) | |||
|
|||
[Icons] | |||
Name: "{group}\�T�N���G�f�B�^"; Filename: "{app}\sakura.exe"; Components: main; Tasks: startmenu; | |||
Name: "{group}\�T�N���G�f�B�^"; Filename: "{app}\sakura.exe"; Components: main; Check: isNotWin10; Tasks: startmenu; | |||
Name: "{userstartmenu}\�T�N���G�f�B�^"; Filename: "{app}\sakura.exe"; Components: main; Check: isWin10;Tasks: startmenu; |
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.
isWin10 で直接判定するのではなく、トップレベルに sakura.exe を
配置するかどうかという関数で判定するようにして、
その関数のなかで、isWin10を呼ぶようにすれば
メンテしやすくなると思います。
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.
1分悩んで理解しました。
isInGroup(True/False)みたいな関数にして、そのなかで、isWin10の判定をするってことですね?
確かにそれがいいかも。
installer/sakura.iss
Outdated
(Version.Minor = 0) and | ||
(Version.ProductType = VER_NT_WORKSTATION) then | ||
if (Version.Major = 10) | ||
{ (Version.Minor = 0) and |
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.
あ、えっと、Majorバージョンのみチェックになってます。
{}でかこむと、ブロックコメント。
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://stackoverflow.com/questions/23708355/how-to-comment-a-block-of-statements-in-inno-setup
http://www.jrsoftware.org/ishelp/index.php?topic=scriptformatoverview
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.
私も普段は行コメント使うんですが(IDEで一括行コメントとかよくつかう)、
今回復活させやすいようにとおもってブロックコメントにしちゃいましたが、
いっそ消しちゃいます。
installer/sakura.iss
Outdated
function IsWin10OrLater : Boolean; | ||
var | ||
Version: TWindowsVersion; | ||
S: String; |
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.
Sですよね。
つかってないっす^^
完全に盲点にはいってました。
installer/sakura.iss
Outdated
begin | ||
if ( TopMenu = True ) then | ||
begin | ||
if ( IsWin10OrLater = True ) then |
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.
pascal の文法知らないのですが
引数なしの関数ってカッコ付けないもんですか?
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.
pascal はコピペしたことしかないんですが、if ( IsWin10OrLater = True ) then
が気になってます。
Line 137 in 11cb421
if IsAdminLoggedOn then |
if IsWin10OrLater then
という書き方ができそうな気がします。
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.
また週末までさわれなさそうなのですができるところを通勤時間中に返信、
@berryzplus さん
確かにその書き方できますが、普段から何個も言語使ってると、そのif文の期待してる変数がbool変数でその真偽を期待してたのかコーディングミスなのかどうかわかんなくなってくるので、あえて明示的に書くようにしてる「俺様ルール」です。
俺様ルールなので修正いたします。
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.
@m-tmatma さん
Pascal(というかDelphi Object Pascal)は変数も関数もおんなじ様に使おうって文化だったような。
Pascalの文法を語れるほど精通してるわけではありませんが。
あれですよねCだと、関数名()みたいにしないと文法エラーで気持ちわるいんすよね。
Pascalだと今ためせてませんが慣例的に関数の宣言で引数無しを()とかかくとエラーになってたような。
そして呼び出す側もそれに合わせてたようなおぼろげながらの記憶が。
ただご懸念の通りその名前が定数なのか変数なのか関数なのか見ただけだと分かんなくなるので、自衛のために頭にc定数、lローカル変数、f関数なんてネーミングでわかるようにしてた記憶が。
だいぶDelphi触ってなかったのでissの他の部分に合わせたのもありますが、ここはC使いばかりなのであまり違和感ないここルールで決めてもいいかもですね、Pascal登場するのはissだけだとおもうので。
他のDelphiサンプルもうちょっといい例さがしてみます。
DelphiはDelphiで書かれてるのでディープなサンプル探しやすいっす。
通勤時間もう少しあるので。
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.
とりあえず本家解説、
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/手続きと関数の呼び出し(Delphi)
次の呼び出しは同じです:
DoSomething();
DoSomething;
でも引数無しじゃなくてデフォルトで呼び出す意味らしい、知らんかった(笑)
でも()付きで引数無し関数を呼び出してるところ見かけた記憶がおそらくないので、もしかしたらC臭くなるのを嫌ってるのかもしれませんね。
ここルールで決めてもいいかもです。
もうちょっと他のサンプル探してみます。
趣味は普段一人でしかコーディングしてないのでこのアウェー感たまりません(笑)(いい意味で)
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.
http://u670.com/delphi_tips/tips0044.html
この例が全てではないとおもいますが、
引数無い場合()は省略がルールのようです。
end else begin | ||
Result := False; | ||
end | ||
end else begin |
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.
しょうもない話なんですが、インデントが少し気になりました。
Lines 118 to 125 in 11cb421
if admin then | |
begin | |
Result := IsAdminLoggedOn; | |
end | |
else | |
begin | |
Result := not IsAdminLoggedOn; | |
end; |
たぶん、ifとelse、beginとendで揃える慣習みたいなのがあるんではないかと思います。
pythonだとビルドエラーになってくれるから分かりやすいんですけどね。
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.
こちらはですね、サンプル集とかみてもらうと、
http://mrxray.on.coocan.jp/Delphi/plSamples/015_PrintDlgAPI.htm
begin endってCでいうところの{}ぐらいな感覚だとおもってます。
流行りのフォーマッタで整形してもbegin endは字下げされなかったかなと。
ただ人によるかもしれません。
私字下げをTab4にしてたのであまりインデント深くなるとしんどくなったり(笑)
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.
delphiでオートフォーマットしてくれない感じなら対応不要でいい気がします。
これこそ誰かの「俺ルール」だと思うので、やりやすいようにしたらいいです。
ifとelse、beginとendで揃える書き方ってPLSQL系だったかも知れない。
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.
はい、ではインデントはこのままで。
ではいったんフィックスで、
これ待ちって感じでしょうか。 |
#144 で PR 投げました。 |
こいつマージしていいのかしら??? |
どなたかがこの PR を LGTM とみなして approve すればマージできます。
これは既に解決済みという認識。 この PR をレビューできそうなのは @berryzplus さん、 @m-tmatma さん、あたりですかね? |
動作確認してから、対応します |
できれば、master に対して rebase してほしいです |
ありがとうございます 🙏
これ必要です?特にコンフリクト発生していませんが。 |
@KENCHjp WIP を付けることがあるのはプルリクエストのタイトルに対してだけですね。 ブランチ名については大した問題ではないので今回はこのままで良いですが、今後意識していただければと。 |
rebase していただけたら、最新の master をベースに appveyor でビルドが走ると思ったからです。 |
ローカルで master をマージして動作確認しました。
を確認しました。 Windows 7 で確認できる方に確認をお願いしたいです。 |
↑ちょっと間違いあったので修正。 |
あれ、なんか、赤いなぁ。。。 C:\USR\WORKSPACE\GIT\GitHub\sakura>git remote add sakura https://github.com/sakura-editor/sakura C:\USR\WORKSPACE\GIT\GitHub\sakura>git fetch sakura
C:\USR\WORKSPACE\GIT\GitHub\sakura>git rebase sakura/master C:\USR\WORKSPACE\GIT\GitHub\sakura>git push origin feature/WIP-installer-Windows10-Menu -f
C:\USR\WORKSPACE\GIT\GitHub\sakura> |
赤いです?テキストだけを見る限りは成功してるっぽく見えます |
ああ、上のReview requiredとか、Merging is blockedが赤いのにびびってます。 |
あ~、rebase することで PR のコミット内容に変化が起きたので、 なので再度レビュアーの人に approve してもらう必要があるという感じです。 |
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.
appveyor のバイナリでもう一度確認しました。
スクリーンショットは省略。
ご確認ありがとうございます!マージしちゃいます! |
こういうふうにレビュアーでない人(approve した人でない人)がマージしちゃうことも可能です(という豆知識) |
うーん、ほぼついていけてない(笑) やろうとしていることはなんとなくわかってきてはいるような気もするのですが、各々のコマンドの意味がまだ分かってないからだめですねぇ。 https://liginc.co.jp/web/tool/79390 この辺概念頭にいれて個々のコマンド見直しますです。 |
「初心者でもわかる!」← 嘘です。初心者には普通わかりません。でも覚えておいたほうが良いのでゆっくり習得していきましょう 👍 |
ですねー。一応ブランチとか基本的な概念は理解してるつもりなんですが、ちょっとづつ勉強しますです。 |
コミットログに名前が刻まれていればコミッターです! 😆 |
マージ前のrebase で、なんで、appveyor が走っちゃうんだろうってのが、腑に落ちてない。。。 |
この PR は KENCHjp:feature/WIP-installer-Windows10-Menu ブランチの内容をチェックするためのものなので、KENCHjp:feature/WIP-installer-Windows10-Menu ブランチに変化があればそれを検出して AppVeyor が走る仕組みになってます。 タイミングとしては |
rebase とか merge とかしなくても、単純に「追加コミットを積んでプッシュしなおす」とかでも AppVeyor ビルドは走ったりします。 |
ああ、そういうことか、masterのリポジトリの変化を監視してるんじゃないってことなんすね。 |
…er-Windows10-Menu Windows10メニュー対応
Windows10の場合に、sakura.exeのショートカットをグループ内ではなく、スタートメニュー直下に配置してアイコンを見つけやすくする対応。
#104
あわせて、バージョン情報を自動取得し、issファイルをリリース時に更新不要にする修正。