#
Cygwinインストールスクリプト(JScript編)【プレビュー版】をお見せします。
- このインストールスクリプトで何ができるのかについては以下の記事をみていただきたいと思います。(下記の記事を読んで実際に試した方でないと何のことか分からないと思います…スクリプトが仕上がったら、ちゃんとした記事を上げますのでお待ちください)
http://qiita.com/javacommons/items/1a182f187fd2a8df29c2『Cygwinの環境を複数作ったり、パッケージのインストールを自動化したりする(たった一つのスクリプトファイルだけで…魔法のように…Linuxライク環境が構築できる!)』
- 上記記事より抜粋
Cygwinのインストールは手間がかかるものだと思われてます(通常のインストール方法では実際にそうです)が、この手法を使えば「サクラエディタのインストールよりも簡単」ということにもなります。
😆Cygwinを使えばWindows上にPOSIX/LINUXに近い環境を構築できます。Cygwinには9,000以上のパッケージがあります(bash,fortran,gcc,g++,git,emacs,perl,python2,python3,ruby,vim等も使えます)。また、(必要なら)X-Windowサーバーをインストールして使うことができます。
😆通常のCygwinのインストール方法ではPCの管理者ユーザーでないとインストールできませんが、このスクリプトでは標準ユーザーでもインストールができます。(いろいろな環境で作業される方にとっては重要なポイントです。インストールして使って…
管理者にばれないうちに消しちゃえばいいんですから!)
- 以下使用手順の簡単な説明だけ書いておきます。
B1. インストールスクリプトの準備
インストールするフォルダを準備します。
- 😆Cドライブの直下は問題があるので避けてください(Dドライブ、Eドライブ…の直下はOK。Cドライブ配下でも「C:\cyginst」とかはOKです。)。
- 😆インストールするフォルダのパスに空白や日本語を含めないでください。
- 😆また、インストールするフォルダのパスに「#」等の特殊記号も含めない方が良いみたいです。
- 😆この記事のサンプルでは「Z:\dev\cygwin」というフォルダを作成して用いました。
よく分からない場合は、デスクトップにスクリプトを置いても良いです。また、管理者ユーザーでなくても「C:\Users\Public」フォルダの下には自由にフォルダが作れます。
そのフォルダの中に以下のテキストを保存します。名前は「project1.wsf」としてください(スクリプトファイルの名前は何でも良いのですが、スクリプト(Windows Script ファイル)内で「var CYG_NAME="project1"」としているので「project1」というファイル名にします。拡張子は必ず「.wsf」にします)。
尚、エクスプローラで「拡張子が表示される」設定にして作業をしないと「project1.wsf.txt」というファイル名になっていまうことがあります。エクスプローラの拡張子表示設定については、こちら※等をご覧ください。
<job><comment>
********************************************************************************
最終更新: 2017年4月13日 7:54:48
最近の変更点:
- (2017年4月13日 7:54:48) カテゴリー内の全パッケージインストール機能追加
- (2017年4月12日 20:46:12)ソースの整形
********************************************************************************
</comment><!-- --- 編集するところ(ここから↓) --- --><scriptlanguage="JScript">varCYG_NAME="project1"varCYG_BITS=32//var CYG_CATS="Archive,Python"varCYG_PKGS="emacs-w32,git,python2,tmux,procps"varDT_ICONS=true</script><!-- --- 編集するところ(ここまで↑) --- --><!-- --- デバッグ/カスタマイズ(ここから↓) --- --><scriptlanguage="JScript">varCYG_DEBUG=falsevarCYG_SITE="http://mirrors.kernel.org/sourceware/cygwin/"varCYG_FONT="MS Gothic"varCYG_FONT_HEIGHT=12</script><!-- --- デバッグ/カスタマイズ(ここまで↑) --- --><scriptlanguage="JScript">if(!String.prototype.format){String.prototype.format=function(){varformatted=this;for(vari=0;i<arguments.length;i++){varregexp=newRegExp('\\{'+i+'\\}','gi');formatted=formatted.replace(regexp,arguments[i]);}returnformatted;};}functioncreateShorcut(dir,name,icon,target,args){varshell=newActiveXObject("WScript.Shell");varsc=shell.CreateShortcut(dir+"\\"+name+".lnk");sc.IconLocation=icon;sc.TargetPath=target;sc.Arguments=args;sc.WorkingDirectory="";sc.Save();sc=null;shell=null;}varfso=newActiveXObject("Scripting.FileSystemObject");varshell=newActiveXObject("WScript.Shell");varSCRIPT_CURRENT_DIR=fso.getParentFolderName(WScript.ScriptFullName);if(CYG_DEBUG)WScript.Echo("SCRIPT_CURRENT_DIR="+SCRIPT_CURRENT_DIR);if(CYG_DEBUG)WScript.Echo("CYG_NAME="+CYG_NAME);if(typeof(CYG_BITS)!="number"){WScript.Echo("CYG_BITS is not a number. Aborting!");WScript.Quit();}varexeName=null;if(CYG_BITS==32){if(CYG_DEBUG)WScript.Echo("(CYG_BITS == 32)");exeName="setup-x86.exe";}elseif(CYG_BITS==64){if(CYG_DEBUG)WScript.Echo("(CYG_BITS == 64)");exeName="setup-x86_64.exe";}else{WScript.Echo("(CYG_BITS == "+CYG_BITS+") Aborting!");WScript.Quit();}varexePath=SCRIPT_CURRENT_DIR+"\\"+exeName;if(CYG_DEBUG)WScript.Echo("exePath="+exePath);if(!fso.FileExists(exePath)){varcmd1="bitsadmin /TRANSFER {0} http://www.cygwin.com/{0} \"{1}\"".format(exeName,exePath);if(CYG_DEBUG)WScript.Echo("cmd1="+cmd1);shell.Run("cmd /c "+cmd1,1,true);}varCYG_ROOT=SCRIPT_CURRENT_DIR+"\\"+CYG_NAME;if(CYG_DEBUG)WScript.Echo("CYG_ROOT="+CYG_ROOT);if(!fso.FolderExists(CYG_ROOT))fso.CreateFolder(CYG_ROOT);if(!fso.FolderExists(CYG_ROOT+"\\pkg"))fso.CreateFolder(CYG_ROOT+"\\pkg");varcmd2=exeName;cmd2+=" -q -W ";if(typeof(CYG_CATS)=="string"){if(CYG_CATS!="")cmd2+=" --categories=\"{0}\" ".format(CYG_CATS);}if(typeof(CYG_PKGS)=="string"){if(CYG_PKGS!="")cmd2+=" --packages=\"{0}\" ".format(CYG_PKGS);}cmd2+=" --root=\""+CYG_ROOT+"\" ";cmd2+=" --local-package-dir=\"{0}\\pkg\" ".format(CYG_ROOT);cmd2+=" --site=\"{0}\" ".format(CYG_SITE);cmd2+=" --no-admin --no-shortcuts ";cmd2+=" --upgrade-also ";if(CYG_DEBUG)WScript.Echo("cmd2="+cmd2);shell.Run("cmd /c "+cmd2,1,true);varcmd3=(CYG_NAME+"\\bin\\bash.exe -c \"/usr/bin/sed -i "+" -e 's/0;[\\]w[\\]a/0;Cygwin{0} @{1} \\\\\\\\w\\\\\\\\a/g' "+" -e 's/[\\]u@[\\]h/\\\\\\\\u@{1}\\\\(Cygwin{0}\\\\)/g' /etc/bash.bashrc\"").format(CYG_BITS,CYG_NAME);if(CYG_DEBUG)WScript.Echo("cmd3="+cmd3);shell.Run("cmd /c "+cmd3,0,true);vardesktopPath=shell.SpecialFolders("Desktop");if(CYG_DEBUG)WScript.Echo("desktopPath="+desktopPath);varname,icon,target,args;name="Bash Console @{0} ({1}bit)".format(CYG_NAME,CYG_BITS);icon=CYG_ROOT+"\\Cygwin.ico";target=CYG_ROOT+"\\bin\\bash.exe";args="--login -i";createShorcut(CYG_ROOT,name,icon,target,args);if(DT_ICONS)createShorcut(desktopPath,name,icon,target,args);name="Cygwin Terminal @{0} ({1}bit)".format(CYG_NAME,CYG_BITS);icon=CYG_ROOT+"\\Cygwin-Terminal.ico";target=CYG_ROOT+"\\bin\\mintty.exe";args="-i /Cygwin-Terminal.ico --window max -o Font=\"{0}\" -o FontHeight={1} -".format(CYG_FONT,CYG_FONT_HEIGHT);createShorcut(CYG_ROOT,name,icon,target,args);if(DT_ICONS)createShorcut(desktopPath,name,icon,target,args);vartmuxPath=CYG_ROOT+"\\bin\\tmux.exe";if(fso.FileExists(tmuxPath)){name="Tmux @{0} ({1}bit)".format(CYG_NAME,CYG_BITS);icon=CYG_ROOT+"\\Cygwin-Terminal.ico";target=CYG_ROOT+"\\bin\\mintty.exe";args="-i /Cygwin-Terminal.ico --window max -o Font=\"{0}\" -o FontHeight={1} -t \"Tmux @{2} ({3}bit)\" /bin/bash --login -c \"/usr/bin/tmux\"".format(CYG_FONT,CYG_FONT_HEIGHT,CYG_NAME,CYG_BITS);createShorcut(CYG_ROOT,name,icon,target,args);if(DT_ICONS)createShorcut(desktopPath,name,icon,target,args);}WScript.Echo("Installation for "+CYG_NAME+" finished!");</script></job>
B2. インストールスクリプトの起動
project1.wsf をダブルクリックして実行します。「Cygwin Setup」ウィンドウが開きプログレスバーが表示されます。「Cygwin Setup」ウィンドウとは別にコマンドプロンプトも開きます。コマンドプロンプトにはインストール時に実行されるコマンドの詳細が表示されていきます。
インストールが完了すると、「Cygwin Setup」ウィンドウが閉じて以下のようなダイアログが表示されます。(OKを押して閉じます)
インストールスクリプト(project1.wsf)のあるフォルダの中に(project1.wsf の隣に) project1という(スクリプト内のCYG_NAMEと同じ)名前のフォルダができています。ここにCygwinがインストールされています。
「project1」フォルダを開いて中身を確認してみます。
デスクトップ上のアイコンは以下のように表示されます。
「Bash Console @
project1 (32bit)」をダブルクリックして、Bashコンソールを起動します。
起動したBashコンソールを最小化して、タスクバーのアイコンにマウスカーソルを重ねてみてください。
- 「Cygwin Terminal
@
project1 (32bit)」を起動して、tmuxを実行しているところ(右上のペインでは「procps」パッケージの「top」コマンドを実行しています)。tmuxについては http://kanjuku-tomato.blogspot.jp/2014/02/tmux.html等を参照してください。
- BashコンソールおよびCygwinの使い方の要領は以下の記事をみていただきたいと思います。(スクリプトが完成したら、この記事の本分を仕上げます)
http://qiita.com/javacommons/items/1a182f187fd2a8df29c2『Cygwinの環境を複数作ったり、パッケージのインストールを自動化したりする(たった一つのスクリプトファイルだけで…魔法のように…Linuxライク環境が構築できる!)』