Sakura: 各種ビルド用のバッチファイルで 各種ツールのパス検索方法の改善を検討する

Created on 7 Sep 2018  ·  5Comments  ·  Source: sakura-editor/sakura

各種ビルド用のバッチファイルで 各種ツールのパス検索方法の改善を検討する

https://github.com/sakura-editor/sakura/issues/395#issuecomment-418679442

@ds14050

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

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

https://github.com/sakura-editor/sakura/issues/395#issuecomment-418693155

@KENCHjp

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

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

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

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

https://github.com/sakura-editor/sakura/issues/395#issuecomment-418759294

@berryzplus

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

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

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

https://github.com/sakura-editor/sakura/issues/395#issuecomment-419116027

@ds14050

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

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

CI

Most helpful comment

%CMD_XXX% を find-xxx.bat で上書き設定するようになっていますが、既に設定されていればそのまま使えばいいんじゃないでしょうか。
そうすれば、標準的ではない場所にインストールしている人は、%CMD_XXX% をあらかじめ設定しておけばよくなります。

All 5 comments

Issue立てありがとうございます。
CI対応で、私は一旦は #395 の内容そのままでもいいかなとおもっていました。

万人の環境救うのは無理がありますし、そもそも環境にこだわりのある人は各々工夫しているかと思うので。

で、万人を救おうと思えば、決め打ちしているところを、全部ローカルの環境変数にして
まとめて冒頭でセットするバッチ作成( 一旦標準は #395 と同等の値が入るような )。
変えたい人は自分のローカル環境用にあわせて、そのバッチを手で修正するということじゃないとできないのかなと。
まだなんかいいアイデアありますかね。。。

%CMD_XXX% を find-xxx.bat で上書き設定するようになっていますが、既に設定されていればそのまま使えばいいんじゃないでしょうか。
そうすれば、標準的ではない場所にインストールしている人は、%CMD_XXX% をあらかじめ設定しておけばよくなります。

%CMD_XXX% を find-xxx.bat で上書き設定するようになっていますが、既に設定されていればそのまま使えばいいんじゃないでしょうか。

グッドアイデアだと思います。

python, pip, git は現状では CMD_XXX の環境変数自体に対応していないです。
統一性からするとついでに対応した方がいいですね。別 PR にはなるとはおもいますが

よく見たら @ds14050 さんが私と同じ趣旨のことを書いてましたね。見落としてました。

VS2017にはvswhereというツールが入っていて、バージョンやエディションの差を吸収してくれるっぽいです。MSBuildを探すやつがサンプルにありました。
https://github.com/Microsoft/vswhere/wiki/Find-MSBuild

非公式ですが、もっとガッツリ探してるbatファイルもissueで紹介されていたり。
https://github.com/3F/hMSBuild

いっそ、VsDevCmd.batを呼び出すほうが正直かもと思って、find-msbuild.batを以下に差し替えたところ、うまく動いています。

@echo off
setlocal 

if exist "%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe" set ProgFile=%ProgramFiles%
if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" set ProgFile=%ProgramFiles(x86)%

for /f "usebackq tokens=*" %%i in (`"%ProgFile%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do (
  set InstallDir=%%i
)

if not defined VSINSTALLDIR (
    endlocal & call "%InstallDir%\Common7\Tools\VsDevCmd.bat"
)

endlocal 
set "CMD_MSBUILD=msbuild.exe"
@echo CMD_MSBUILD "%CMD_MSBUILD%"
Was this page helpful?
0 / 5 - 0 ratings