- 更新:
- 2015-06-26 チェックサムの設定方法を追加
はじめに¶
気が向きましたので、 前回 に引き続きChocolateyでカスタムパッケージの作り方を書きます。 前回 カスタムのリポジトリ(リポジトリではなくソースというらしい)を作成しましたが、 リポジトリ自体は作れたものの、ソフトウェアのダウンロード自体は外部サイトに接続していました。
これでは外からダウンロードしちゃだめ、という場合など使えません。事前にダウンロードして 置く方法などありそうですが、見つからなかったので、自分のカスタムパッケージを作成する方法を書きたいと思います。 例としてサクラエディタをインストールする方法を書きます。 作成は最低限の設定で行いますので、詳しく知りたい方は、下記サイトの資料を見てください。
https://github.com/chocolatey/choco/wiki/CreatePackages
ちなみに私はあまり読んでいません。すみません。
サクラエディタのパッケージを作成する¶
Chocolateyのパッケージの作成は、パッケージをインストールするときに使った chocoコマンドを使用して行うことができます。
まず、適当なディレクトリで新規作成コマンドを作成します。 ここでは、サクラエディタをインストールしますが、Chocolateyの流儀に則って、 パッケージ名をsakura.installとします。:
> D:\chocolatey>choco new sakura.install
以下のような出力がされます。:
Chocolatey v0.9.9.6
Creating a new package specification at d:\chocolatey\sakura.install
Generating template to a file
at 'd:\chocolatey\sakura.install\sakura.install.nuspec'
Generating template to a file
at 'd:\chocolatey\sakura.install\tools\chocolateyinstall.ps1'
Generating template to a file
at 'd:\chocolatey\sakura.install\tools\chocolateyuninstall.ps1'
Successfully generated sakura.install package specification files
at 'd:\chocolatey\sakura.install'
sakura.installというディレクトリが作成され、中にテンプレートとなるファイル が置かれますので、sakura.install.nuspecファイルにパッケージ情報を記入します。
ここでは最低限で、なくてもよい項目はすべて削って下記のように作成しました。
<?xml version="1.0" encoding="utf-8"?>
<!-- Do not remove this test for UTF-8: if “Ω” doesn’t appear as greek uppercase omega letter enclosed in quotation marks, you should use an editor that supports UTF-8, not this one. -->
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>sakura.install</id>
<version>2.2.0.1</version>
<authors>Sakura Editor Project</authors>
<description>A Japanese text editor</description>
</metadata>
<files>
<file src="tools\**" target="tools" />
</files>
</package>
その次にPowerShellで書かれたインストールスクリプトchocolateyinsall.ps1を変更します。
$ErrorActionPreference = 'Stop';
$packageName = 'sakura.install'
$installerType = 'EXE'
$url = 'http://jaist.dl.sourceforge.net/project/sakura-editor/sakura2-installer/2.2.0.1/sakura_install2-2-0-1.exe'
$silentArgs = '/SP- /VERYSILENT'
$validExitCodes = @(0)
Install-ChocolateyPackage "$packageName" "$installerType" "$silentArgs" "$url"
インストールは.exe、.msi、.msuに対応しています。少し書き方は異なりますが、zipファイル のパッケージもインストールすることができます。
ダウンロード用のURLとサイレントインストール用のオプションは自分で調べなければなりません。
URLは64bit版がある場合、それも記述します。
サイレントインストール用のオプションは、ものによって違いますが、ググるかコマンドプロンプト でインストーラーの後ろに/?オプションを付けて動かすと調べられることが多いです。
ダウンロードしたパッケージをチェックサムでチェックしたい場合は下記コマンドで チェックサムを取得します。:
D:\chocolatey>C:\ProgramData\chocolatey\tools\checksum.exe -f=sakura_install2-2-0-1.exe -t=sha1
C815F9AA276C7E294FA0C5818EC7207B635337AF
上のchocolateyinsall.ps1のInstall-ChocolateyPackageの部分を下記のように書き換えます:
$checksum = 'C815F9AA276C7E294FA0C5818EC7207B635337AF'
$checksumType = 'sha1'
Install-ChocolateyPackage "$packageName" "$installerType" "$silentArgs" "$url" -checksum $checksum -checksumType $checksumType
同じようにアンインストールスクリプトchocolateyuninstall.ps1を編集します。
$ErrorActionPreference = 'Stop';
$packageName = 'sakura.install'
$registryUninstallerKeyName = 'sakura editor_is1'
$installerType = 'EXE'
$silentArgs = '/VERYSILENT'
$validExitCodes = @(0)
$osBitness = Get-ProcessorBits
if ($osBitness -eq 64) {
$file = (Get-ItemProperty -Path "hklm:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\$registryUninstallerKeyName").UninstallString
} else {
$file = (Get-ItemProperty -Path "hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$registryUninstallerKeyName").UninstallString
}
Uninstall-ChocolateyPackage -PackageName $packageName -FileType $installerType -SilentArgs $silentArgs -validExitCodes $validExitCodes -File $file
アンインストーラーの場所をレジストリから調べるため、少し長くなっています。
$registryUninstallerKeyNameを調べるためには、スクリプト中に記述されているレジストリ をregeditなどで探します。
ここまでで設定は終わりです。最後に下記コマンドでパッケージを作成します。:
D:\chocolatey>cd sakura.install
D:\chocolatey>choco pack sakura.install.nuspec
Chocolatey v0.9.9.6
Attempting to build package from 'sakura.install.nuspec'.
Successfully created package 'sakura.install.2.2.0.1.nupkg'
作成したパッケージをテストする¶
インストールは作成されたsakura.install.2.2.0.1.nupkgファイルさえあれば、 行うことができます。作成したパッケージをテストしてみましょう。
nupkgファイルのあるディレクトリで下記コマンドでインストールを行うことができます。:
D:\chocolatey\sakura.install>choco install sakura.install -s %cd% -f
さらにアンインストールは普通に下記で行います。:
D:\chocolatey\sakura.install>cuninst sakura.install
ファイルサーバーからパッケージをインストールする¶
さて、もともとインターネットに接続しないでパッケージをインストールするというのが、 本稿を書き始めたきっかけでした。社内のファイルサーバーなどからサクラエディタを ダウンロードするためには、chocolateyinsall.ps1のURLを下記のように変更します。 (ここではファイルサーバーはfs01とします。):
$url = '\\fs01\chocoletey\sakura_install2-2-0-1.exe'
そして、ファイルサーバーfs01のchocoleteyにサクラエディタのインストーラー sakura_install2-2-0-1.exeを置いてやります。
自分のリポジトリにパッケージを置かなければなりません。 前回 の記事を参考にして ください。ただし、置くのはパッケージフォルダではなくsakura.install.2.2.0.1.nupkg ファイルとなります。
おわり。
0 件のコメント:
コメントを投稿