Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

新しいWindows用Vimのインストーラーを作っている話

$
0
0

公式インストーラー

Windows用Vimの公式インストーラーは、vim.orgで公開されています。Vimの原作者である Bram Moolenaar 氏による唯一の公式ビルドで、現時点で公開されているバージョンは 8.1.0001 (ファイル名: gvim81.exe)です。ただ更新頻度は低く、大抵はマイナーバージョンアップの直後や、重大なセキュリティー問題があった場合などにしか更新されません。

公式ナイトリービルド

そこで、私と Christian Brabandt 氏 (@chrisbra) で立ち上げたのが、vim-win32-installerです。これは、毎日ドイツ時間の午前0時にVimの公式リポジトリーをチェックし、もし更新があれば、インストーラーとzipパッケージを自動で作成するというものです。自動ビルドであるため、不安定なバージョンが公開されることもありますが、最新バージョンを簡単に試せるという利点があります。(本日時点での最新バージョンは 8.1.0578。)
GitHubのVim organizationの配下にある公式のナイトリービルドですが、あくまでナイトリービルドであるため、公式なリリースではなく、準公式的な扱いである点には注意が必要です。

NSIS

いずれのインストーラーもNSISというソフトを使って作成されているのですが、以下のような問題が指摘されてきました。

  • 見た目が古臭い。
  • インストール中・アンインストール中にコマンドプロンプトが開かれて邪魔だ。
  • インストール中・アンインストール中に何度もメッセージボックスが開かれて邪魔だ。
  • メッセージボックスのせいで、サイレントインストールができない。
  • 多言語対応していない。

MUI2対応インストーラー

これらを解消するために作られたプロジェクトが Guopeng Wen 氏 (@gpwen) による、vim-installer-mui2です。

  • NSISのModern UI 2 (MUI2)という機能を利用することで、見た目を刷新するとともに、多言語にも対応。
  • コマンドプロンプトを開かないように修正。
  • メッセージボックスを開かないようにし、必要な情報はインストーラーの画面上に表示するように修正。
  • サイレントインストールに対応。

このように、指摘されていた問題はすべて解消されています。

このプロジェクトは、かつては本家に取り入れてもらうべく精力的に開発されていたのですが、本家に取り込まれる様子がなかったことからか2011年ごろには開発が停止してしまいました。

取り込まれなかった原因

gpwen氏のMUI2インストーラーが本家に取り込まれなかった理由は、おおざっぱに言うと変更が大きすぎたからでした。

実は、現行のインストーラーはNSISによるユーザーインターフェース部分と、install.exeという実行ファイルによるシステムへの登録処理部分の2つに分かれています。インストーラーの実行中にコマンドプロンプトが開かれるのは、このinstall.exeが実行されているからなのです。

gpwen版では、このinstall.exeの処理もすべてNSIS部分に取り込んでしまっていました。これにより本家に対する変更が非常に大きなものになってしまっていました。(スクリプトのサイズが元の10倍以上。)

一方、人によっては、zipパッケージを解凍し、install.exeを手動で実行してシステムへの登録のみ行うという使い方をしています。そのため、install.exeを削除するわけにはいかず、このままではNSIS部分とinstall.exeで同じような処理を二重管理せざるを得ません。この二重管理を避けたいというのも取り込まれなかった理由です。

新たなMUI2版

そこで今回、変更を少なくし、コードの二重管理も避けた新たなMUI2インストーラーを作成することにしました。今までの指摘に対応したうえで、さらにいくつか改善を行っています。

  • UIはgpwen版をベースとし、MUI2のきれいなUIを使いつつ、多言語にも対応。
  • システムへの登録部分はinstall.exeを使いつつ、実行時にコマンドプロンプトを表示しないように変更。(実は、gpwen版もかつてはそのような実装だったようですが。)
  • 邪魔なメッセージボックスもgpwen版同様に削除。
  • サイレントインストールに対応。
  • HighDPIにも対応し、高DPI環境での表示を改善。
  • インストール項目の選択を記憶し、次回のインストールでは自動で同じ項目を選択する。

こうして出来上がったのが、PR #3501です。スクリプトサイズも本家の2倍程度で済んでいます。
(VimConf Hackathonでも)Bram氏からの反応も悪くなく、数週間から数カ月のうちに本家に取り込まれるかもしれません。todo.txtにも以下のように記載されています。

https://github.com/vim/vim/blob/5c5697f29829fc3b21fc5452fe8f239f6a4cb8e1/runtime/doc/todo.txt#L131-L134

Patch to simplify nsis installer. (Ken Takata, 2018 Sep 24, was #3479)
Now included in #3501, using MUI2.  Use the zip file to get the binary files:
https://github.com/vim/vim/files/2475621/nsis-icons.zip
Ready to include now.

https://github.com/vim/vim/blob/5c5697f29829fc3b21fc5452fe8f239f6a4cb8e1/runtime/doc/todo.txt#L433-L444

Improve the installer for MS-Windows.  There are a few alternatives:
- mui2 installer improved by Ken Takata (2018 Sep 29)
- Installer from Cream (Steve Hall).
- Modern UI 2.0 for the Nsis installer. (Guopeng Wen)
    https://github.com/gpwen/vim-installer-mui2
-  make it possible to do a silent install, see
    http://nsis.sourceforge.net/Docs/Chapter4.html#4.12
    Version from Guopeng Wen does this.
- MSI installer: https://github.com/petrkle/vim-msi/
- The one on Issue 279.
Problem: they all work slightly different (e.g. don't install vimrun.exe).
How to test that it works well for all Vim users?

今後について

上記の新MUI2インストーラーは、本家にはまだ取り込まれていませんが、vim-win32-installerでは既に先行してダウンロードできるようになっています。リリースページgvim_8.1.xxxx_x86-mui2.exeが32bit版、gvim_8.1.xxxx_x64-mui2.exeが64bit版です(ファイル名に-mui2が付いている)。ぜひ、ダウンロードして現行のインストーラー(gvim_8.1.xxxx_x86.exe)と比較してみてください。

実際に使ってみて、意見や要望などがあれば以下にお寄せください。

参考: 第三者によるインストーラー

公式版ではないWindows用インストーラーとしては以下のようなものもあります。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>