[インデックス 12079] ファイルの概要
このコミットは、Go言語のWindows向けディストリビューションパッケージングに関する継続的な開発作業を反映しています。具体的には、インストーラーの機能改善、パッケージ名の標準化、ビルドスクリプトの堅牢化、および関連するドキュメントの更新が含まれています。
コミット
commit a9e57f743d658ba27d3165dc6841915b12a98879
Author: Joe Poirier <jdpoirier@gmail.com>
Date: Sun Feb 19 22:21:41 2012 -0600
misc/dist/windows: ongoing dev
Added the (properly formatted) license file back,
the installer adds go\bin to the system PATH now,
the output package names are in line with the linux
and darwin versions, dist.bat extracts GOARCH in a
sane way, readme cleanup.
Tested on Windows 7 only. It would be helpful if
someone else could give it a try. See the readme
for details.
R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5673099
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/a9e57f743d658ba27d3165dc6841915b12a98879
元コミット内容
このコミットは、Go言語のWindows向けディストリビューションに関する継続的な開発作業の一環です。主な変更点は以下の通りです。
- ライセンスファイルの再追加: 適切な形式でライセンスファイルが追加されました。
- インストーラーのPATH設定: インストーラーが
go\bin
ディレクトリをシステムPATHに追加するようになりました。これにより、Goの実行ファイルがコマンドプロンプトから直接実行できるようになります。 - パッケージ名の標準化: 出力されるパッケージ名(zipおよびmsiファイル)が、LinuxおよびDarwin(macOS)バージョンと一貫性のある形式に変更されました。
dist.bat
スクリプトの改善:dist.bat
スクリプトがGOARCH
環境変数をより堅牢な方法で抽出するようになりました。- READMEのクリーンアップ:
README
ファイルが更新され、依存関係、パッケージング手順、およびTODOリストが整理されました。 - バッチファイルの削除と統合:
godocserver.bat
とgoenv.bat
が削除され、その機能がインストーラーのショートカット定義に直接統合されました。
この変更はWindows 7でのみテストされており、他の環境でのテストが推奨されています。
変更の背景
このコミットの背景には、Go言語のWindowsユーザーエクスペリエンスの向上という明確な目標があります。以前のWindows向けGoディストリビューションは、手動での環境設定や、他のプラットフォームとの命名規則の不一致など、いくつかの課題を抱えていました。
具体的には、以下の点が改善の動機となっています。
- 利便性の向上: Goをインストールした後、ユーザーが手動で
GOROOT
やGOPATH
、そしてPATH
環境変数を設定する必要がありました。これは特にWindowsに不慣れなユーザーにとって障壁となっていました。インストーラーが自動的にgo\bin
をシステムPATHに追加することで、インストール直後からGoコマンドが利用可能になり、開発の初期設定が大幅に簡素化されます。 - 一貫性の確保: Goのディストリビューションは、LinuxやmacOSといった他の主要なオペレーティングシステム向けにも提供されています。それぞれのプラットフォームでパッケージの命名規則が異なると、ユーザーや自動化スクリプトが混乱する可能性があります。このコミットでは、Windows版のパッケージ名を他のプラットフォームと統一することで、Goエコシステム全体の一貫性を高めています。
- ビルドプロセスの堅牢化:
dist.bat
のようなバッチスクリプトは、Windows環境でのビルドとパッケージングにおいて重要な役割を果たします。GOARCH
のような重要な環境変数の抽出方法が不適切だと、ビルドが失敗したり、意図しない結果になったりする可能性があります。より「健全な」方法でGOARCH
を抽出するように改善することで、ビルドプロセスの信頼性と安定性が向上します。 - コードベースの整理と効率化:
godocserver.bat
やgoenv.bat
のような補助的なバッチファイルは、特定の機能を提供していましたが、その機能がインストーラーの内部ロジックやショートカット定義に直接統合できる場合、これらのファイルを削除することでコードベースが簡素化され、メンテナンスが容易になります。これにより、冗長性が排除され、より効率的なパッケージングプロセスが実現されます。 - ライセンスの明確化: オープンソースプロジェクトにおいて、ライセンス情報の提供は非常に重要です。ライセンスファイルが適切にパッケージに含まれることで、Goの利用条件が明確になり、法的な遵守が保証されます。
これらの改善は、Go言語の採用を促進し、特にWindowsプラットフォームでの開発者体験を向上させることを目的としています。
前提知識の解説
このコミットの変更内容を理解するためには、以下の技術的知識が役立ちます。
-
Go言語の環境変数 (
GOROOT
,GOPATH
,GOBIN
,GOARCH
):GOROOT
: Goのインストールディレクトリを指します。Goの標準ライブラリやツールがここに配置されます。GOPATH
: Goのワークスペースディレクトリを指します。ユーザーが開発するGoプロジェクトのソースコード、コンパイル済みバイナリ、パッケージなどが配置されます。GOBIN
: Goの実行可能バイナリがインストールされるディレクトリを指します。通常はGOPATH/bin
またはGOROOT/bin
に設定されます。GOARCH
: ターゲットとするアーキテクチャ(例:386
for x86,amd64
for x64)を指定します。Goのクロスコンパイルにおいて重要です。PATH
: オペレーティングシステムが実行可能ファイルを探すディレクトリのリストです。GOBIN
をPATH
に追加することで、Goのコマンドをどこからでも実行できるようになります。
-
Windows Installer XML (WiX) Toolset:
- WiXは、Windows Installer (MSI) パッケージを作成するためのオープンソースツールセットです。XMLベースの言語を使用して、インストーラーの動作、ファイル、レジストリ、ショートカットなどを定義します。
installer.wxs
ファイルはWiXのソースファイルであり、Goインストーラーの構造と動作を記述しています。candle.exe
はWiXソースファイルをコンパイルしてオブジェクトファイル(.wixobj)を生成し、light.exe
はこれらのオブジェクトファイルをリンクして最終的なMSIパッケージを生成します。- WiXでは、
Product
、Package
、Media
、Directory
、Component
、Feature
などの要素を使用してインストーラーの論理構造を定義します。 Property
要素は、インストーラーの動作や表示に関する値を設定するために使用されます。特に、ARPCOMMENTS
などのARP
プレフィックスを持つプロパティは、「プログラムの追加と削除」コントロールパネルに表示される情報を制御します。Environment
要素は、インストール時にシステム環境変数を設定するために使用されます。このコミットでは、PATH
環境変数を更新するために使用されています。Shortcut
要素は、スタートメニューやデスクトップにショートカットを作成するために使用されます。
-
Mercurial (hg):
- Mercurialは、Gitと同様の分散型バージョン管理システムです。Goプロジェクトの初期段階では、Mercurialが主要なバージョン管理システムとして使用されていました。
hg clone
コマンドは、リポジトリを複製するために使用されます。hg id -n
は、現在のリビジョンのID(ハッシュ)とブランチ名を返します。hg root
は、リポジトリのルートディレクトリを返します。
-
Windowsバッチスクリプト (
.bat
):- Windowsのコマンドプロンプトで実行されるスクリプト言語です。
setlocal
とendlocal
: 環境変数の変更をスクリプトの実行範囲に限定するために使用されます。setlocal
で開始し、endlocal
で終了すると、その間の環境変数の変更はスクリプト終了時に元に戻ります。for /f
: ファイルの内容やコマンドの出力を解析するために使用されます。call
: 別のバッチスクリプトを実行し、制御を呼び出し元のスクリプトに戻します。rmdir /S /Q
,del /F /Q /S
: ディレクトリやファイルを強制的に削除するためのコマンドです。xcopy
: ファイルやディレクトリをコピーするためのコマンドです。go tool dist env
: Goのディストリビューションツールが提供するコマンドで、Goのビルド環境に関する情報を出力します。-w
オプションは、環境変数を設定するバッチスクリプト形式で出力します。
-
7-Zip (コマンドライン版):
- 高圧縮率のファイルアーカイバです。
7za.exe
はコマンドラインインターフェースを提供し、zip形式などのアーカイブを作成するために使用されます。
- 高圧縮率のファイルアーカイバです。
これらの知識を持つことで、コミットがGoのWindowsディストリビューションのビルド、パッケージング、およびインストールプロセスにどのように影響するかを深く理解できます。
技術的詳細
このコミットにおける技術的な変更は多岐にわたりますが、特に以下の点が重要です。
-
GOARCH
環境変数の抽出方法の改善 (dist.bat
):- 以前の
dist.bat
では、%ROOT%\bin\go tool dist env
の出力を一時ファイルenv.txt
にリダイレクトし、そのファイルからGOARCH
という文字列をfind
コマンドで検索していました。この方法は、出力形式が変更された場合や、find
コマンドの挙動に依存するため、脆弱でした。 - 新しい方法では、
%ROOT%\bin\go tool dist env -w
を使用しています。-w
オプションは、環境変数を設定するためのバッチスクリプト形式(例:set GOARCH=amd64
)で出力を生成します。この出力をenv.bat
という一時ファイルにリダイレクトし、call env.bat
を実行することで、GOARCH
を含む必要な環境変数を現在のスクリプトのコンテキストに直接ロードします。このアプローチは、Goツール自体が提供する公式の環境情報取得メカニズムを利用するため、より堅牢で信頼性が高いです。
- 以前の
-
パッケージ命名規則の標準化 (
dist.bat
):- 生成されるzipおよびMSIパッケージのファイル名が、
gowin%GOARCH%_"%VER%.zip
やgowin%GOARCH%_"%VER%.msi
から、go.%VER%.windows-%GOARCH%.zip
やgo.%VER%.windows-%GOARCH%.msi
に変更されました。 - この変更は、Goの他のプラットフォーム(LinuxやmacOS)向けパッケージの命名規則(例:
go.<version>.<os>-<arch>.tar.gz
)と一致させることを目的としています。これにより、Goのディストリビューション全体で一貫した命名規則が確立され、自動化されたスクリプトやダウンロードプロセスでの取り扱いが容易になります。
- 生成されるzipおよびMSIパッケージのファイル名が、
-
システムPATHへの自動追加 (
installer.wxs
):- WiXインストーラーのソースファイル
installer.wxs
に、<Environment>
要素が追加されました。 - この要素は、インストール時にシステム環境変数
PATH
に[INSTALLDIR]bin
(Goのインストールディレクトリ内のbin
サブディレクトリ)を追加する役割を担います。 Action="set"
は変数を設定することを示し、Part="last"
は既存のPATH
の末尾に追加することを示します。Permanent="no"
は、アンインストール時にこの変更が元に戻されることを意味し、System="yes"
はシステム環境変数として設定されることを意味します。- これにより、ユーザーはGoのインストール後、手動で環境変数を設定することなく、コマンドプロンプトから
go
コマンドを直接実行できるようになります。これは、WindowsユーザーにとってGoの利用開始を大幅に簡素化する重要な改善です。
- WiXインストーラーのソースファイル
-
godocserver.bat
とgoenv.bat
の削除と機能統合:godocserver.bat
とgoenv.bat
という2つのバッチファイルが削除されました。これらのファイルは、それぞれGoドキュメントサーバーの起動とGo環境の設定を行うためのものでした。installer.wxs
内のショートカット定義が変更され、godocserver.bat
の機能が直接GoDocServer
ショートカットのTarget
およびArguments
属性に組み込まれました。具体的には、cmd.exe
を介してgodoc.exe
を起動し、同時にブラウザでドキュメントサーバーのURLを開くコマンドが直接記述されています。goenv.bat
の機能は、システムPATHへの自動追加によって不要になったため、関連するショートカットも削除されました。- この変更により、インストーラーがより自己完結型になり、外部のバッチファイルへの依存が減少し、メンテナンスが容易になります。
-
WiXインストーラーのメタデータと表示の改善 (
installer.wxs
):Codepage="1252"
がProduct
要素に追加されました。これは、Windows-1252エンコーディングを使用することを示し、インストーラーのテキスト表示における互換性を向上させます。ARPCOMMENTS
,ARPCONTACT
,ARPHELPLINK
,ARPREADME
,ARPURLINFOABOUT
といったProperty
要素が追加されました。これらは、Windowsの「プログラムの追加と削除」コントロールパネルに表示されるGoインストーラーのエントリに関する詳細情報を提供します。これにより、ユーザーはインストールされたGoに関するより豊富な情報を確認できるようになります。GoProgramShortcutsDir
の名前が「Go Programming」から「Go Programming Language」に変更され、より正確な表現になりました。
これらの技術的変更は、GoのWindowsディストリビューションの品質、使いやすさ、および保守性を総合的に向上させるものです。
コアとなるコードの変更箇所
このコミットにおける主要なコード変更は、以下のファイルに集中しています。
-
misc/dist/windows/dist.bat
:GOARCH
の抽出ロジックが変更されました。--- a/misc/dist/windows/dist.bat +++ b/misc/dist/windows/dist.bat @@ -5,31 +5,32 @@ setlocal -:: Requires WiX (candle light heat), 7zip, and hg +:: Requires Windows Installer XML (WiX), 7zip, and Mercurial (hg) -echo # Setting variable info +echo # Setting some variables for /f %%i in ('hg.exe root') do set ROOT=%%i for /f %%i in ('hg.exe id -n') do set ID=%%i for /f "tokens=3" %%i in ('%ROOT%\bin\go.exe version') do set VER=%%i if errorlevel 1 goto end echo # Getting GOARCH -%ROOT%\bin\go tool dist env > env.txt -set GOARCH /p = find "GOARCH" "env.txt">NUL -del /F /Q /S env.txt>NUL +%ROOT%\bin\go tool dist env -w>env.bat +call env.bat +del /F /Q /S env.bat>NUL if errorlevel 1 goto end + rmdir /S /Q go>NUL mkdir go -echo # Cloning the go tree +echo # Cloning the Go tree hg clone -r %ID% %ROOT% go if errorlevel 1 goto end rmdir /S /Q go\.hg>NUL del /F /Q /S go\.hgignore go\.hgtags>NUL -echo # Copying pkg, bin and src/pkg/runtime/z* +echo # Copying pkg, bin, and src/pkg/runtime/z* xcopy %ROOT%\pkg go\pkg /V /E /Y /I xcopy %ROOT%\bin go\bin /V /E /Y /I xcopy %ROOT%\src\pkg\runtime\z*.c go\src\pkg\runtime /V /E /Y @@ -37,18 +38,20 @@ xcopy %ROOT%\src\pkg\runtime\z*.go go\src\pkg\runtime /V /E /Y xcopy %ROOT%\src\pkg\runtime\z*.h go\src\pkg\runtime /V /E /T echo # Starting zip packaging -7za a -tzip -mx=9 gowin%GOARCH%_"%VER%.zip "go/" +7za a -tzip -mx=9 go.%VER%.windows-%GOARCH%.zip "go/" if errorlevel 1 goto end + echo # Starting Go directory file harvesting heat dir go -nologo -cg AppFiles -gg -g1 -srd -sfrag -template fragment -dr INSTALLDIR -var var.SourceDir -out AppFiles.wxs if errorlevel 1 goto end echo # Starting installer packaging candle -nologo -dVersion=%VER% -dArch=%GOARCH% -dSourceDir=go installer.wxs AppFiles.wxs -light -nologo -ext WixUIExtension -ext WixUtilExtension installer.wixobj AppFiles.wixobj -o gowin%GOARCH%_"%VER%.msi +light -nologo -ext WixUIExtension -ext WixUtilExtension installer.wixobj AppFiles.wixobj -o go.%VER%.windows-%GOARCH%.msi if errorlevel 1 goto end del /F /Q /S *.wixobj AppFiles.wxs *.wixpdb>NUL :end +endlocal
- 生成されるzipとmsiのファイル名が変更されました。
-
misc/dist/windows/installer.wxs
:- システムPATHへの追加ロジックが追加されました。
godocserver.bat
とgoenv.bat
に関連するショートカットが削除され、GoDocServer
の機能が直接ショートカットに組み込まれました。- インストーラーのメタデータ(「プログラムの追加と削除」に表示される情報)が追加・更新されました。
--- a/misc/dist/windows/installer.wxs +++ b/misc/dist/windows/installer.wxs @@ -16,8 +16,9 @@ <Product Id="FF5B30B2-08C2-11E1-85A2-6ACA4824019B" - Name="The Go Programming Language $(var.Arch) $(var.Version)" + Name="Go Programming Language $(var.Arch) $(var.Version)" Language="1033" + Codepage="1252" Version="0.0.0.0" Manufacturer="http://golang.org" UpgradeCode="1C3114EA-08C3-11E1-9095-7FCA4824019B" > @@ -29,10 +30,17 @@ Comments="The Go programming language is an open source project to make programmers more productive." InstallerVersion="300" Compressed="yes" - Manufacturer="http://golang.org" InstallScope="perMachine" + SummaryCodepage="1252" Languages="1033" /> - <!-- Platform="x86 or x64" --> + <!-- Platform="x86 or x64" --> + + <Property Id="ARPCOMMENTS" Value="The Go programming language is a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language." /> + <Property Id="ARPCONTACT" Value="golang-nuts@googlegroups.com" /> + <Property Id="ARPHELPLINK" Value="golang.org/doc/community.html" /> + <Property Id="ARPREADME" Value="golang.org" /> + <Property Id="ARPURLINFOABOUT" Value="golang.org" /> + <!-- <Upgrade Id=""> <UpgradeVersion @@ -44,6 +52,7 @@ Property="" /> </Upgrade> --> + <Media Id='1' Cabinet="go.cab" EmbedCab="yes" CompressionLevel="high" /> <Condition Message="Windows 2000 or greater required."> VersionNT >= 500</Condition> <SetDirectory Id="INSTALLDIRROOT" Value="C:\"/> @@ -59,36 +68,29 @@ <Directory Id="INSTALLDIR" Name="Go"/> </Directory> <Directory Id="ProgramMenuFolder"> - <Directory Id="GoProgramShortcutsDir" Name="Go Programming"/> + <Directory Id="GoProgramShortcutsDir" Name="Go Programming Language"/> </Directory> <Directory Id="DesktopFolder" Name="Desktop"/> </Directory> -<!-- Programs Menu & Desktop Shortcuts --> +<!-- Programs Menu & Desktop Shortcuts, Registry & Environment Settings --> <DirectoryRef Id="GoProgramShortcutsDir"> <Component Id="Component_GoShortCuts" Guid="f5fbfb5e-6c5c-423b-9298-21b0e3c98f4b"> - <Shortcut - Id="GoEnvStartMenuShortcut" - Name="GoEnv" - Description="Sets the Go environment and spawns a shell window" - Target="[INSTALLDIR]goenv.bat" /> - <Shortcut - Id="GoEnvDesktopShortcut" - Directory="DesktopFolder" - Name="GoEnv" - Description="Sets the Go environment and spawns a shell window" - Target="[INSTALLDIR]goenv.bat" /> <Shortcut Id="GoDocServerStartMenuShortcut" Name="GoDocServer" - Description="Starts the godoc server on localhost:6060" - Target="[INSTALLDIR]godocserver.bat" /> + Description="Starts the Go documentation server (http://localhost:6060)" + Show="minimized" + Arguments='/c "start /d[INSTALLDIR]bin godoc.exe -http=:6060 && start http://localhost:6060"' + Target="[%ComSpec]" /> <Shortcut Id="GoDocServerDesktopShortcut" Directory="DesktopFolder" Name="GoDocServer" - Description="Starts the godoc server on localhost:6060" - Target="[INSTALLDIR]godocserver.bat" /> + Description="Starts the godoc server (http://localhost:6060)" + Show="minimized" + Arguments='/c "start /d[INSTALLDIR]bin godoc.exe -http=:6060 && start http://localhost:6060"' + Target="[%ComSpec]" /> <Shortcut Id="UninstallShortcut" Name="Uninstall Go" @@ -105,24 +107,18 @@ Type="integer" Value="1" KeyPath="yes" /> + <Environment + Id="Environment" + Action="set" + Part="last" + Name="PATH" + Permanent="no" + System="yes" + Value="[INSTALLDIR]bin" /> </Component> </DirectoryRef> <!-- Components --> -<DirectoryRef Id="INSTALLDIR"> - <Component Id="Component_GoDocServerBAT" Guid="c40ea60a-4290-4a91-864d-e1d8eb5cf693"> - <File - Id="FILE_GoDocServerBat" - Source="godocserver.bat" - KeyPath="yes" /> - </Component> - <Component Id="Component_GoEnvBAT" Guid="ee4587d3-fba3-47f9-b45e-ec9ca9c8a9c3"> - <File - Id="FILE_GoEnvBat" - Source="goenv.bat" - KeyPath="yes" /> - </Component> -</DirectoryRef> <!-- Install the files --> <Feature @@ -131,8 +127,6 @@ Level="1"> <ComponentGroupRef Id="AppFiles" /> - <ComponentRef Id="Component_GoDocServerBAT" /> - <ComponentRef Id="Component_GoEnvBAT" /> <ComponentRef Id="Component_GoShortCuts" /> </Feature>
-
misc/dist/windows/godocserver.bat
:- ファイルが削除されました。
-
misc/dist/windows/goenv.bat
:- ファイルが削除されました。
-
misc/dist/windows/LICENSE
:- 新しいバイナリファイルとして追加されました。
-
misc/dist/windows/README
:- 依存関係、パッケージング手順、およびTODOリストが更新されました。
これらの変更は、GoのWindowsディストリビューションのビルド、パッケージング、およびインストールプロセスに直接影響を与えます。
コアとなるコードの解説
このコミットのコアとなる変更は、GoのWindowsインストーラーの機能性とユーザーエクスペリエンスを向上させることにあります。
1. dist.bat
におけるGOARCH
抽出の改善とパッケージ命名の標準化:
-
GOARCH
抽出: 以前はgo tool dist env
の出力をテキストファイルにリダイレクトし、そこからGOARCH
を検索するという間接的な方法が取られていました。これは、出力形式の変更やfind
コマンドの挙動に依存するため、エラーが発生しやすい可能性がありました。-%ROOT%\bin\go tool dist env > env.txt -set GOARCH /p = find "GOARCH" "env.txt">NUL -del /F /Q /S env.txt>NUL +%ROOT%\bin\go tool dist env -w>env.bat +call env.bat +del /F /Q /S env.bat>NUL
新しいアプローチでは、
go tool dist env -w
を使用します。-w
オプションは、環境変数を設定するバッチスクリプト形式(例:set GOARCH=amd64
)で出力を生成します。この出力を一時的なenv.bat
ファイルに保存し、call env.bat
で実行することで、GOARCH
を含む必要な環境変数を現在のスクリプトのコンテキストに直接、かつ確実にロードします。これは、Goツール自体が提供する公式の環境情報取得メカニズムを利用するため、より堅牢で信頼性が高い方法です。 -
パッケージ命名: 生成されるzipおよびMSIパッケージのファイル名が変更されました。
-7za a -tzip -mx=9 gowin%GOARCH%_"%VER%.zip "go/" +7za a -tzip -mx=9 go.%VER%.windows-%GOARCH%.zip "go/" ... -light -nologo -ext WixUIExtension -ext WixUtilExtension installer.wixobj AppFiles.wixobj -o gowin%GOARCH%_"%VER%.msi +light -nologo -ext WixUIExtension -ext WixUtilExtension installer.wixobj AppFiles.wixobj -o go.%VER%.windows-%GOARCH%.msi
この変更は、Goの他のプラットフォーム(LinuxやmacOS)向けパッケージの命名規則(例:
go.<version>.<os>-<arch>.tar.gz
)と一致させることを目的としています。これにより、Goのディストリビューション全体で一貫した命名規則が確立され、自動化されたスクリプトやダウンロードプロセスでの取り扱いが容易になります。
2. installer.wxs
におけるシステムPATHへの自動追加とショートカットの統合:
-
システムPATHへの追加: 最も重要な変更点の一つは、Goのインストールディレクトリ内の
bin
サブディレクトリをシステムPATH
環境変数に自動的に追加する機能です。<Environment Id="Environment" Action="set" Part="last" Name="PATH" Permanent="no" System="yes" Value="[INSTALLDIR]bin" />
このWiXの
<Environment>
要素により、インストーラーは[INSTALLDIR]bin
のパスを既存のPATH
環境変数の末尾に追加します。Permanent="no"
はアンインストール時にこの変更が元に戻されることを保証し、System="yes"
はユーザー固有ではなくシステム全体に適用されることを意味します。これにより、ユーザーはGoのインストール後、手動で環境変数を設定することなく、コマンドプロンプトからgo
コマンドを直接実行できるようになります。 -
ショートカットの統合とバッチファイルの削除: 以前は
godocserver.bat
とgoenv.bat
という2つの補助的なバッチファイルが存在し、それぞれGoドキュメントサーバーの起動とGo環境の設定を行っていました。このコミットでは、これらのバッチファイルが削除され、その機能がinstaller.wxs
内のショートカット定義に直接統合されました。- <Shortcut - Id="GoEnvStartMenuShortcut" - Name="GoEnv" - Description="Sets the Go environment and spawns a shell window" - Target="[INSTALLDIR]goenv.bat" /> - <Shortcut - Id="GoEnvDesktopShortcut" - Directory="DesktopFolder" - Name="GoEnv" - Description="Sets the Go environment and spawns a shell window" - Target="[INSTALLDIR]goenv.bat" /> <Shortcut Id="GoDocServerStartMenuShortcut" Name="GoDocServer" - Description="Starts the godoc server on localhost:6060" - Target="[INSTALLDIR]godocserver.bat" /> + Description="Starts the Go documentation server (http://localhost:6060)" + Show="minimized" + Arguments='/c "start /d[INSTALLDIR]bin godoc.exe -http=:6060 && start http://localhost:6060"' + Target="[%ComSpec]" />
GoEnv
関連のショートカットは、システムPATHへの自動追加により不要になったため削除されました。GoDocServer
のショートカットは、Target="[%ComSpec]"
(cmd.exe
を指す)とArguments
属性を使用して、godoc.exe
を直接起動し、同時にブラウザでドキュメントサーバーのURLを開くコマンドを実行するように変更されました。これにより、インストーラーがより自己完結型になり、外部のバッチファイルへの依存が減少し、メンテナンスが容易になります。
これらの変更は、GoのWindowsディストリビューションのインストールと初期設定を大幅に簡素化し、ユーザーエクスペリエンスを向上させるための重要なステップです。
関連リンク
- Go言語公式サイト: https://golang.org/
- Go言語ドキュメント: https://golang.org/doc/
- WiX Toolset公式サイト: https://wixtoolset.org/
- Mercurial公式サイト: https://www.mercurial-scm.org/
- 7-Zip公式サイト: https://www.7-zip.org/
参考にした情報源リンク
- Go言語の公式リポジトリ (Mercurial時代): https://go.googlesource.com/go (現在はGitに移行)
- Go言語のGerritコードレビューシステム: https://go-review.googlesource.com/
- WiX Toolset Documentation: https://wixtoolset.org/documentation/
- Microsoft Windows Installer (MSI) Documentation: https://learn.microsoft.com/en-us/windows/win32/msi/windows-installer-portal
- Batch file scripting documentation (Microsoft): https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands
- Goの環境変数に関する公式ドキュメント (当時のもの): Goの公式ドキュメントやブログ記事で、環境変数
GOROOT
,GOPATH
,GOARCH
などに関する説明が提供されています。