mirror of
https://github.com/golang/go
synced 2024-11-21 20:14:52 -07:00
misc/windows packager development intermediate check-in
The installer now: allows a user to select an alternative install directory, it now adds a Go folder to the Programs Menu, and it places two shortcuts on the user's desktop. The Program Menu folder contains shortcuts to the uninstaller and two batch files, go.bat and godoc.bat. The desktop shortcuts also point to go.bat and godoc.bat. go.bat sets the Go environment, including Path, and spawns a Window's shell. godoc.bat starts the godoc server at localhost:6060 then spawns a browser window pointing to the document server. Setting the environment temporarily and spawning a shell, via go.bat, should be safer than messing with the system's environment and it makes the user experience a bit more streamlined. The packager does work in its current state but it still needs some polishing. And yes, the plan is to add a dialogue to allow the user to decline the desktop shortcuts. R=rsc, alex.brainman, tjyang2001 CC=golang-dev https://golang.org/cl/5399042
This commit is contained in:
parent
ac17fd4cd2
commit
984b4e381d
BIN
misc/windows/LICENSE
Normal file
BIN
misc/windows/LICENSE
Normal file
Binary file not shown.
14
misc/windows/godocserver.bat
Normal file
14
misc/windows/godocserver.bat
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
for /f "delims=" %%i in ('cd') do set cwd=%%i
|
||||||
|
|
||||||
|
if exist bin\godoc.exe goto ok
|
||||||
|
echo Unable to find the godoc executable
|
||||||
|
echo This batch file must run from the root Go folder
|
||||||
|
pause
|
||||||
|
exit
|
||||||
|
|
||||||
|
:ok
|
||||||
|
start bin\godoc -http=localhost:6060 -goroot="%cwd%"
|
||||||
|
start http://localhost:6060
|
||||||
|
endlocal
|
29
misc/windows/goenv.bat
Normal file
29
misc/windows/goenv.bat
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
for /f %%i in ("%0") do set cwd=%%~dpi
|
||||||
|
cd /d %cwd%
|
||||||
|
|
||||||
|
:: sanity checks
|
||||||
|
if exist "%cwd%"\bin\6g.exe (
|
||||||
|
set GOARCH=amd64
|
||||||
|
goto ok
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "%cwd%"\bin\8g.exe (
|
||||||
|
set GOARCH=386
|
||||||
|
goto ok
|
||||||
|
)
|
||||||
|
|
||||||
|
echo Unable to find the Go compiler
|
||||||
|
echo This batch file must run from the root Go folder
|
||||||
|
pause
|
||||||
|
exit
|
||||||
|
|
||||||
|
:ok
|
||||||
|
set GOROOT=%cwd%
|
||||||
|
set GOBIN=%GOROOT%\bin
|
||||||
|
set PATH=%GOBIN%;%PATH%
|
||||||
|
|
||||||
|
@CMD /F:ON
|
||||||
|
endlocal
|
||||||
|
|
@ -1,80 +1,152 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||||
<!--
|
<!--
|
||||||
# Copyright 2010 The Go Authors. All rights reserved.
|
# Copyright 2010 The Go Authors. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style
|
# Use of this source code is governed by a BSD-style
|
||||||
# license that can be found in the LICENSE file.
|
# license that can be found in the LICENSE file.
|
||||||
-->
|
-->
|
||||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
|
||||||
|
|
||||||
<Product Id="FF5B30B2-08C2-11E1-85A2-6ACA4824019B"
|
<?if $(var.Arch) = 386 ?>
|
||||||
Name="The Go Programming Language $(var.Arch) $(var.Version)"
|
<?define SYSFOLDER=SystemFolder ?>
|
||||||
Language="1033"
|
<?define Win64=no ?>
|
||||||
Version="0.0.0.0"
|
<?else?>
|
||||||
Manufacturer="http://golang.org"
|
<?define SYSFOLDER=System64Folder ?>
|
||||||
UpgradeCode="1C3114EA-08C3-11E1-9095-7FCA4824019B" >
|
<?define Win64=yes ?>
|
||||||
<!-- Version="$(var.Version)" TODO: Version requires X.X.X.X format -->
|
<?endif?>
|
||||||
|
|
||||||
<Package Id='*' Keywords='Installer'
|
|
||||||
Description="The Go Programming Language Installer"
|
|
||||||
Comments="The Go programming language is an open source project to make programmers more productive. Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language."
|
|
||||||
InstallerVersion="300"
|
|
||||||
Compressed="yes"
|
|
||||||
Languages="1033" />
|
|
||||||
|
|
||||||
<Media Id='1' Cabinet="go.cab" EmbedCab="yes" />
|
<Product
|
||||||
<Condition Message="Windows 2000 or greater required."> VersionNT >= 500</Condition>
|
Id="FF5B30B2-08C2-11E1-85A2-6ACA4824019B"
|
||||||
|
Name="The Go Programming Language $(var.Arch) $(var.Version)"
|
||||||
<SetDirectory Id="SYS_ROOT" Value="C:\"/>
|
Language="1033"
|
||||||
<Property Id="EnableEV" Value="1" />
|
Version="0.0.0.0"
|
||||||
|
Manufacturer="http://golang.org"
|
||||||
<!-- Define the directory structure and environment variables -->
|
UpgradeCode="1C3114EA-08C3-11E1-9095-7FCA4824019B" >
|
||||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
<!-- Version="$(var.Version)" TODO: Version requires X.X.X.X format -->
|
||||||
<Directory Id="SYS_ROOT">
|
|
||||||
<Directory Id="APPLICATIONROOTDIRECTORY" Name="Go"/>
|
|
||||||
|
|
||||||
<Component Id="GoEnvVars"
|
<Package
|
||||||
Guid="067EE394-08EF-11E1-ACBC-43FF4824019B">
|
Id='*' Keywords='Installer'
|
||||||
<CreateFolder />
|
Description="The Go Programming Language Installer"
|
||||||
<Environment Id="GoRootPath"
|
Comments="The Go programming language is an open source project to make programmers more productive."
|
||||||
Action="set"
|
InstallerVersion="300"
|
||||||
Part="all"
|
Compressed="yes"
|
||||||
Name="GOROOT"
|
Manufacturer="http://golang.org"
|
||||||
Permanent="no"
|
InstallScope="perMachine"
|
||||||
System="yes"
|
Languages="1033" />
|
||||||
Value="C:\Go" />
|
<!-- Platform="x86 or x64" -->
|
||||||
|
<!--
|
||||||
|
<Upgrade Id="">
|
||||||
|
<UpgradeVersion
|
||||||
|
IncludeMaximum="yes"
|
||||||
|
IncludeMinimum="yes"
|
||||||
|
Language="1033"
|
||||||
|
Maximum=""
|
||||||
|
Minimum=""
|
||||||
|
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:\"/>
|
||||||
|
|
||||||
<Environment Id="GoBinPath"
|
<CustomAction
|
||||||
Action="set"
|
Id="SetApplicationRootDirectory"
|
||||||
Part="all"
|
Property="ARPINSTALLLOCATION"
|
||||||
Name="GOBIN"
|
Value="[INSTALLDIR]" />
|
||||||
Permanent="no"
|
|
||||||
System="yes"
|
|
||||||
Value="C:\Go\bin" />
|
|
||||||
|
|
||||||
<Environment Id="Environment"
|
<!-- Define the directory structure and environment variables -->
|
||||||
Action="set"
|
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||||
Part="last"
|
<Directory Id="INSTALLDIRROOT">
|
||||||
Name="PATH"
|
<Directory Id="INSTALLDIR" Name="Go"/>
|
||||||
Permanent="no"
|
</Directory>
|
||||||
System="yes"
|
<Directory Id="ProgramMenuFolder">
|
||||||
Value="C:\Go\bin" />
|
<Directory Id="GoProgramShortcutsDir" Name="Go Programming"/>
|
||||||
</Component>
|
</Directory>
|
||||||
|
<Directory Id="DesktopFolder" Name="Desktop"/>
|
||||||
|
</Directory>
|
||||||
|
|
||||||
</Directory>
|
<!-- Programs Menu & Desktop Shortcuts -->
|
||||||
</Directory>
|
<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" />
|
||||||
|
<Shortcut
|
||||||
|
Id="GoDocServerDesktopShortcut"
|
||||||
|
Directory="DesktopFolder"
|
||||||
|
Name="GoDocServer"
|
||||||
|
Description="Starts the godoc server on localhost:6060"
|
||||||
|
Target="[INSTALLDIR]godocserver.bat" />
|
||||||
|
<Shortcut
|
||||||
|
Id="UninstallShortcut"
|
||||||
|
Name="Uninstall Go"
|
||||||
|
Description="Uninstalls Go and all of its components"
|
||||||
|
Target="[$(var.SYSFOLDER)]msiexec.exe"
|
||||||
|
Arguments="/x [ProductCode]" />
|
||||||
|
<RemoveFolder
|
||||||
|
Id="GoProgramShortcutsDir"
|
||||||
|
On="uninstall" />
|
||||||
|
<RegistryValue
|
||||||
|
Root="HKCU"
|
||||||
|
Key="Software\Microsoft\TheGoProgrammingLanguage"
|
||||||
|
Name="installed"
|
||||||
|
Type="integer"
|
||||||
|
Value="1"
|
||||||
|
KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
</DirectoryRef>
|
||||||
|
|
||||||
<!-- Install the files -->
|
<!-- Components -->
|
||||||
<Feature Id="GoTools"
|
<DirectoryRef Id="INSTALLDIR">
|
||||||
Title="Go"
|
<Component Id="Component_GoDocServerBAT" Guid="c40ea60a-4290-4a91-864d-e1d8eb5cf693">
|
||||||
Level="1">
|
<File
|
||||||
<ComponentGroupRef Id="AppFiles" />
|
Id="FILE_GoDocServerBat"
|
||||||
<ComponentRef Id="GoEnvVars" />
|
Source="godocserver.bat"
|
||||||
</Feature>
|
KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="Component_GoEnvBAT" Guid="ee4587d3-fba3-47f9-b45e-ec9ca9c8a9c3">
|
||||||
|
<File
|
||||||
|
Id="FILE_GoEnvBat"
|
||||||
|
Source="goenv.bat"
|
||||||
|
KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
</DirectoryRef>
|
||||||
|
|
||||||
<!-- Update the environment -->
|
<!-- Install the files -->
|
||||||
<InstallExecuteSequence>
|
<Feature
|
||||||
<WriteEnvironmentStrings>EnableEV=1</WriteEnvironmentStrings>
|
Id="GoTools"
|
||||||
</InstallExecuteSequence>
|
Title="Go"
|
||||||
|
Level="1">
|
||||||
|
|
||||||
</Product>
|
<ComponentGroupRef Id="AppFiles" />
|
||||||
</Wix>
|
<ComponentRef Id="Component_GoDocServerBAT" />
|
||||||
|
<ComponentRef Id="Component_GoEnvBAT" />
|
||||||
|
<ComponentRef Id="Component_GoShortCuts" />
|
||||||
|
</Feature>
|
||||||
|
|
||||||
|
<!-- Update the environment -->
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom
|
||||||
|
Action="SetApplicationRootDirectory"
|
||||||
|
Before="InstallFinalize" />
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
|
||||||
|
<!-- Include the user interface -->
|
||||||
|
<WixVariable Id="WixUILicenseRtf" Value="LICENSE" />
|
||||||
|
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />
|
||||||
|
<UIRef Id="WixUI_InstallDir" />
|
||||||
|
|
||||||
|
</Product>
|
||||||
|
</Wix>
|
||||||
|
@ -42,11 +42,11 @@ echo "%%%%% Starting zip packaging %%%%%" 1>&2
|
|||||||
7za a -tzip -mx=9 gowin$GOARCH"_"$ver.zip "go/" >/dev/null
|
7za a -tzip -mx=9 gowin$GOARCH"_"$ver.zip "go/" >/dev/null
|
||||||
|
|
||||||
echo "%%%%% Starting Go directory file harvesting %%%%%" 1>&2
|
echo "%%%%% Starting Go directory file harvesting %%%%%" 1>&2
|
||||||
heat dir go -nologo -cg AppFiles -gg -g1 -srd -sfrag -template fragment -dr APPLICATIONROOTDIRECTORY -var var.SourceDir -out AppFiles.wxs
|
heat dir go -nologo -cg AppFiles -gg -g1 -srd -sfrag -template fragment -dr INSTALLDIR -var var.SourceDir -out AppFiles.wxs
|
||||||
|
|
||||||
echo "%%%%% Starting installer packaging %%%%%" 1>&2
|
echo "%%%%% Starting installer packaging %%%%%" 1>&2
|
||||||
candle -nologo -dVersion=$ver -dArch=$GOARCH -dSourceDir=go installer.wxs AppFiles.wxs
|
candle -nologo -dVersion=$ver -dArch=$GOARCH -dSourceDir=go installer.wxs AppFiles.wxs
|
||||||
light -nologo installer.wixobj AppFiles.wixobj -o gowin$GOARCH"_"$ver.msi
|
light -nologo -ext WixUIExtension -ext WixUtilExtension installer.wixobj AppFiles.wixobj -o gowin$GOARCH"_"$ver.msi
|
||||||
|
|
||||||
rm -f *.wixobj AppFiles.wxs *.wixpdb
|
rm -f *.wixobj AppFiles.wxs *.wixpdb
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user