Sakura: Program Files や Program Files (x86) のパスを決め打ちせずに環境変数を参照する

Created on 1 Sep 2018  ·  11Comments  ·  Source: sakura-editor/sakura

Program Files や Program Files (x86) のパスを決め打ちせずに環境変数を参照する
https://github.com/sakura-editor/sakura/pull/391#issuecomment-417859393

以下のバッチファイルで使用している。

  • build-chm.bat
  • build-installer.bat
  • build-sln.bat
  • run-cppcheck.bat
  • toolszipfind-7z.bat

以下の順でパスを探す

  1. %ProgramFiles% が基準のパスを探す (64bit 版を優先する。32bit OS だとあればここで見つかる)
  2. %ProgramFiles(x86)% が基準のパスを探す
  3. %ProgramW6432% が基準のパスを探す
CI

Most helpful comment

399 をマージしました。

何か改善したいことがあれば、別チケットの登録をお願いします。

All 11 comments

https://github.com/sakura-editor/sakura/blob/e1bd5e37401e85d3a54636335c5c7e762cef51d5/tools/zip/find-7z.bat#L7-L12

のような処理を行うバッチファイルを必要なプログラムごとに作って呼び出すようにすればいいと思う。

https://github.com/sakura-editor/sakura/tree/e1bd5e37401e85d3a54636335c5c7e762cef51d5/tools
に配置するのがいい。

https://github.com/sakura-editor/sakura/pull/399#issuecomment-418351838

以下の順でパスを探す
1.%ProgramFiles% が基準のパスを探す (64bit 版を優先する。32bit OS だとあればここで見つかる)
2.%ProgramFiles(x86)% が基準のパスを探す
3.%ProgramW6432% が基準のパスを探す

引っかかっているのはこの手順なのかなぁ。
1の説明は cmd がネイティブ(64bit上の64bit cmd)で動いている場合の話です。
windows7だと64bitでも普通は 32bit cmd が起動するので1と2で同じパスが返ってきます。
2と3の環境変数は32bit版には居ないので第一優先で1を見るのは正しいと思います。

引っかかっているのはこの手順なのかなぁ。

引っかかっているのは説明ですか?

異端であると切り捨ててもらって構いませんが、Program Files のたぐいにインストールされているはずだという仮定がすでに決め打ちであるというのが自分の意見です。開発環境は独立したドライブに、ドライブのルートに、あるいはスペースを含まないパスにインストールするという主義の人はいないでしょうか。パスの通っていないコマンドを勝手に探してこられて利用されるのは気持ちが悪いです。

あと、7z だけは where コマンドを最初に試すのですよね。不統一の理由が気になります。

この PR は決め打ちしているパスを環境変数を参照するように書き換える、そして
パス検索の部分をカプセル化して変更しやすくすることが目的です。

7z をwhere で探すのはもともとやっていることです。
git コマンドの検索と同じです。

このPR 単独で完璧を目指さなくてもいいと思います。

この PRを適用することで各種実行ファイルのパス検索を
各バッチファイルに隠蔽することができるので、
必要なら別のPRで各種バッチファイルをもっと汎用的に
すれば良いと思います。

PR ではなかった。issue だった。

@ds14050 さん
私も変えられるものはほとんどデフォルトからパスをかえてます。
C:¥USR¥BIN¥〜
みたいな。
デフォにしてると悪用されそうな強迫観念にさらされて。。。

でこのIssueは完全絶対パス決め打ちにしてるのを環境変数みようってことなのでまえより融通きくかなとか。

そもそもコマンドラインツールもほとんどパス通してないので(都度コマプロを専用バッチでパスとおしてる)whereでもみつからないとおもってます。

ビルド系のバッチは引数を取るので、エクスプローラーからダブルクリックできないから、結局、めちゃめちゃ、インストール場所変えてる人は環境変数でインストール先切り替えられるこの方法のが融通がきくかなと(環境変数やPATHをセットしてコマプロ起動するバッチ作成)思うのですがいかがっしょ?

399 をマージしました。

何か改善したいことがあれば、別チケットの登録をお願いします。

引っかかっているのは説明ですか?

説明じゃなくて順番に引っかかっていました。
パスは64bitと32bitの2つしか想定してないのだから、
効率よくやるには3と2だけを見ればいい、という考え方もあるわけで。
3と2しかやらないと32bitで困るので1もやる、という考え方もあるわけで。

ProgramFilesには入れない、というのはちょっと想定外かなw

インストール場所変えてる人は環境変数でインストール先切り替えられるこの方法のが融通がきくかなと(環境変数やPATHをセットしてコマプロ起動するバッチ作成)思うのですがいかがっしょ?

where コマンドを使っていたりユーザー定義の環境変数(%CMD_HHC%など)を最初の選択肢にしているのなら、融通が利く上に、役に立つデフォルト値を補完してくれる便利ツールだと思うんですけどね。

何か改善したいことがあれば、別チケットの登録をお願いします。

412 を登録しました。

Was this page helpful?
0 / 5 - 0 ratings