Windows: Build installers

This commit is contained in:
Asanka C. Herath
2010-09-23 14:59:41 -04:00
parent d247242f63
commit 8aa7a84b7a
5 changed files with 323 additions and 14 deletions

View File

@@ -34,7 +34,7 @@ thirdparty=thirdparty
!endif
SUBDIRS = include lib kuser kdc admin kadmin kpasswd appl doc \
tools tests packages etc $(thirdparty)
tools tests packages etc $(thirdparty) packages\windows\installer
!include windows/NTMakefile.w32

View File

@@ -0,0 +1,88 @@
########################################################################
#
# Copyright (c) 2010, Secure Endpoints Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# - Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# - Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
RELDIR=packages\windows\installer
!include ../../../windows/NTMakefile.w32
VERSIOND=$(VER_PRODUCT_MAJOR)-$(VER_PRODUCT_MINOR)-$(VER_PRODUCT_AUX)-$(VER_PRODUCT_PATCH)
VERSION=$(VER_PRODUCT_MAJOR).$(VER_PRODUCT_MINOR).$(VER_PRODUCT_AUX).$(VER_PRODUCT_PATCH)
!if "$(CPU)"=="AMD64"
PLATFORM=x64
!else
PLATFORM=x86
!endif
MERGEMOD=$(INSTDIR)\Heimdal.msm
$(MERGEMOD): $(OBJ)\heimdal-assemblies.wixobj
$(LIGHT) -out $@ $**
$(OBJ)\heimdal-assemblies.wixobj: heimdal-assemblies.wxs
$(CANDLE) -arch $(PLATFORM) -o $@ $** \
-dVersion=$(VERSION) \
-dBinDir=$(BINDIR) \
-dPlatform=$(PLATFORM)
all:: $(MERGEMOD)
clean::
-$(RM) $(MERGEMOD)
!if exist($(SRC)\thirdparty)
THIRDPARTYOBJS=$(INSTDIR)\apicache.wixobj $(INSTDIR)\lsacache.wixobj
THIRDPARTYDEPS=$(INSTDIR)\Heimdal-krbcompat.msm
THIRDPARTYOPT=-dApiCache=1 -dLsaCache=1 -dKrbCompat=1
!endif
INSTALLER=$(INSTDIR)\Heimdal.msi
RUNTIMEMODULE="$(MSSDK)\Redist\VC\microsoft.vcxx.crt.$(PLATFORM)_msm.msm"
$(INSTALLER): $(OBJ)\heimdal-installer.wixobj $(MERGEMOD) $(THIRDPARTYOBJS) $(THIRDPARTYDEPS)
$(LIGHT) -out $@ $(OBJ)\heimdal-installer.wixobj $(THIRDPARTYOBJS) -sval
$(_CODESIGN)
$(OBJ)\heimdal-installer.wixobj: heimdal-installer.wxs
$(CANDLE) -arch $(PLATFORM) -o $@ $** \
-dVersion=$(VERSION) \
-dBinDir=$(BINDIR) \
-dInstDir=$(INSTDIR) \
-dSrcDir=$(SRC) \
-dPlatform=$(PLATFORM) \
-dRuntimeModule=$(RUNTIMEMODULE) \
$(THIRDPARTYOPT)
all:: $(INSTALLER)
clean::
-$(RM) $(INSTALLER)

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="windows-1252"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?if $(var.Platform)=x64 ?>
<?define Win64=yes ?>
<?define GuidKerberos=78905402-0F4B-48E1-924C-B0E18657C5C5 ?>
<?define GuidGSSAPI=6EDFA308-6825-4395-9C9E-362C890F1343 ?>
<?else?>
<?define Win64=no ?>
<?define GuidKerberos=C5919968-FEC4-4D17-89A4-8697B95F115E ?>
<?define GuidGSSAPI=F1EEAB94-ACF3-425E-85BE-4761A0634F46 ?>
<?endif?>
<Module Id="Heimdal" Language="0" Version="$(var.Version)">
<Package Id="A064012D-F3C3-4059-9AC0-00D8A5283D6D"
InstallerVersion="200"
Languages="1033" Manufacturer="Secure Endpoints Inc."
SummaryCodepage="1252" AdminImage="no"
Platform="$(var.Platform)" />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id="dir.Heimdal.Kerberos" Name="Heimdal.Kerberos"
FileSource="$(var.BinDir)\Heimdal.Kerberos">
<Component Id="comp.Heimdal.Kerberos"
Guid="$(var.GuidKerberos)"
Win64="$(var.Win64)">
<File Name="heimdal.dll" KeyPath="yes" Assembly="win32"
AssemblyManifest="id.Heimdal.Kerberos.manifest" />
<File Name="com_err.dll" />
<File Name="heimdal.pdb" />
<File Name="com_err.pdb" />
<File Name="Heimdal.Kerberos.cat" />
<File Name="Heimdal.Kerberos.manifest" Id="id.Heimdal.Kerberos.manifest" />
</Component>
</Directory>
<Directory Id="dir.Heimdal.GSSAPI" Name="Heimdal.GSSAPI"
FileSource="$(var.BinDir)\Heimdal.GSSAPI">
<Component Id="comp.Heimdal.GSSAPI"
Guid="$(var.GuidGSSAPI)"
Win64="$(var.Win64)">
<File Name="gssapi.dll" KeyPath="yes" Assembly="win32"
AssemblyManifest="id.Heimdal.GSSAPI.manifest" />
<File Name="gssapi.pdb" />
<File Name="Heimdal.GSSAPI.cat" />
<File Name="Heimdal.GSSAPI.manifest" Id="id.Heimdal.GSSAPI.manifest" />
</Component>
</Directory>
</Directory>
</Module>
</Wix>

View File

@@ -0,0 +1,157 @@
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<?if $(var.Platform)=x64 ?>
<?define Win64=yes ?>
<?define PIProgramFilesFolder=ProgramFiles64Folder ?>
<?define GuidKinit=BAA5BD92-163E-4AA5-8C99-EA2100F3D9DE ?>
<?define GuidKlist=60E82A9D-2CD4-4DE5-8DCA-F3A010BE8A19 ?>
<?define GuidKswitch=7320C75F-80C5-4AA3-B133-2AB7F496B291 ?>
<?define GuidKdestroy=289C2C0D-F41D-4E46-9819-6B9B63F83418 ?>
<?define GuidKtutil=28B09087-4731-41F4-B734-C71E84EC31FC ?>
<?define GuidKdigest=D13DA4C0-B1BB-4C02-8ED2-5DFC7D16B19D ?>
<?else?>
<?define Win64=no ?>
<?define PIProgramFilesFolder=ProgramFilesFolder ?>
<?define GuidKinit=038F19D7-F7C9-4B6A-8359-321CD1FAD347 ?>
<?define GuidKlist=36BF8C4E-B0C4-42AF-9F3F-3D6F8CFEBB49 ?>
<?define GuidKswitch=3A4438E7-BBC0-47B4-9146-E0CDCBBE6C86 ?>
<?define GuidKdestroy=07D96FBC-2251-4EBC-AA68-12C6C52F44E6 ?>
<?define GuidKtutil=CE082458-E2C5-4744-A423-88C23AD3C81C ?>
<?define GuidKdigest=3FFBFAB0-FB37-411C-AF4E-53BCC468D7D1 ?>
<?endif?>
<Product Name='Heimdal'
Id='*' UpgradeCode='81E64C32-1D09-4E3D-9EA2-EECD9C4D16CE'
Language='1033' Codepage='1252' Version='$(var.Version)'
Manufacturer='Secure Endpoints Inc.'>
<Package Id='*' Description="Heimdal"
Comments='Heimdal Kerberos tools and libraries'
Manufacturer='Secure Endpoints Inc.'
InstallerVersion='300' Languages='1033' Compressed='yes' SummaryCodepage='1252' />
<Directory Id='TARGETDIR' Name='SourceDir' DiskId='1'>
<Directory Id='$(var.PIProgramFilesFolder)' Name='PFiles'>
<Directory Id='INSTALLDIR' Name='Heimdal'>
<Directory Id='dirBin' Name='bin' FileSource='$(var.BinDir)'>
<Component Id='comp.kinit'
Guid='$(var.GuidKinit)'
Win64='$(var.Win64)'>
<File Name='kinit.exe' KeyPath='yes' />
</Component>
<Component Id='comp.klist'
Guid='$(var.GuidKlist)'
Win64='$(var.Win64)'>
<File Name='klist.exe' KeyPath='yes' />
</Component>
<Component Id='comp.kswitch'
Guid='$(var.GuidKswitch)'
Win64='$(var.Win64)'>
<File Name='kswitch.exe' KeyPath='yes' />
</Component>
<Component Id='comp.ktutil'
Guid='$(var.GuidKtutil)'
Win64='$(var.Win64)'>
<File Name='ktutil.exe' KeyPath='yes' />
</Component>
<Component Id='comp.kdestroy'
Guid='$(var.GuidKdestroy)'
Win64='$(var.Win64)'>
<File Name='kdestroy.exe' KeyPath='yes' />
</Component>
<Component Id='comp.kdigest'
Guid='$(var.GuidKdigest)'
Win64='$(var.Win64)'>
<File Name='kdigest.exe' KeyPath='yes' />
</Component>
<Merge Id='Heimdal.Assemblies' Language='0'
SourceFile='$(var.InstDir)\Heimdal.msm' />
<Merge Id='Runtime' Language='0'
SourceFile='$(var.RuntimeModule)' />
<?ifdef KrbCompat?>
<Merge Id='Heimdal.Compatibility' Language='0'
SourceFile='$(var.InstDir)\Heimdal-krbcompat.msm' />
<?endif?>
<Directory Id='dirPlugin' Name='plugin'>
<Directory Id='PLUGINDIR' Name='krb5'>
<Component Id='comp.Plugin.Reg'
Guid='4BC44234-70A4-4CC1-A5AF-4CA76E9F9487'>
<RegistryKey Action='createAndRemoveOnUninstall' Root='HKLM'
Key='Software\Heimdal'>
<RegistryValue Name='plugin_dir' Type='multiString' Action='append'
Value='"[PLUGINDIR]"' KeyPath='yes' />
</RegistryKey>
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
<Directory Id='CommonAppDataFolder' Name='ProgramData'>
<Directory Id='dirCommonHeimdal' Name='Heimdal' FileSource='$(var.SrcDir)'>
<Component Id='comp.krb5.conf'
Guid='ED28951F-7B17-4DF5-91D7-4DC11C810E66' >
<File Name='krb5.conf' KeyPath='yes' />
</Component>
</Directory>
</Directory>
</Directory>
<Media Id='1' Cabinet='Disk1' CompressionLevel='high' EmbedCab='yes' />
<Feature Id='feature.Main' ConfigurableDirectory='INSTALLDIR'
Title='Heimdal'
Description='Command line tools and libraries for Heimdal Kerberos'
Level='1' TypicalDefault='install' InstallDefault='local'>
<ComponentRef Id='comp.kinit' />
<ComponentRef Id='comp.klist' />
<ComponentRef Id='comp.kdestroy' />
<ComponentRef Id='comp.kswitch' />
<ComponentRef Id='comp.kdigest' />
<ComponentRef Id='comp.ktutil' />
<ComponentRef Id='comp.krb5.conf' />
<?ifdef LsaCache ?>
<ComponentRef Id='comp.LSACache' />
<?endif?>
<?ifdef ApiCache ?>
<ComponentRef Id='comp.APICache' />
<?endif?>
<ComponentRef Id='comp.Plugin.Reg' />
<MergeRef Id='Heimdal.Assemblies' />
<MergeRef Id='Runtime' />
<?ifdef KrbCompat?>
<MergeRef Id='Heimdal.Compatibility' />
<?endif?>
<?ifdef Thirdparty ?>
<ComponentGroupRef Id='comp.Heimdal.Thirdparty' />
<?endif?>
</Feature>
<Property Id='ALLUSERS' Value='1' Secure='yes' />
</Product>
</Wix>

View File

@@ -72,19 +72,20 @@ MCPU=amd64
#----------------------------------------------------------------
# Directory macros
DESTDIR=$(SRC)\out\dest_$(OUTDIR)
OBJDIR =$(SRC)\out\obj_$(OUTDIR)
DESTDIR =$(SRC)\out\dest_$(OUTDIR)
OBJDIR =$(SRC)\out\obj_$(OUTDIR)
INCDIR =$(DESTDIR)\inc
LIBDIR =$(DESTDIR)\lib
BINDIR =$(DESTDIR)\bin
SBINDIR=$(BINDIR)
LIBEXECDIR=$(BINDIR)
ASMDIR=$(BINDIR)
SDKDIR=$(SRC)\out
SDKINCDIR=$(SRC)\out\inc
SDKLIBDIR=$(SRC)\out\lib\$(CPU)
SDKSRCDIR=$(SRC)\out\src
INCDIR =$(DESTDIR)\inc
LIBDIR =$(DESTDIR)\lib
BINDIR =$(DESTDIR)\bin
SBINDIR =$(BINDIR)
LIBEXECDIR =$(BINDIR)
ASMDIR =$(BINDIR)
INSTDIR =$(DESTDIR)\install
SDKDIR =$(SRC)\out
SDKINCDIR =$(SRC)\out\inc
SDKLIBDIR =$(SRC)\out\lib\$(CPU)
SDKSRCDIR =$(SRC)\out\src
!ifdef RELDIR
SRCDIR =$(SRC)\$(RELDIR)
@@ -117,6 +118,9 @@ CMP=cmp.exe
SIGNTOOL=signtool.exe
MAKECAT=makecat.exe
CANDLE=candle.exe
LIGHT=light.exe
# Only used for tests
SH=sh.exe
SED=sed.exe
@@ -141,6 +145,8 @@ pthreadinc= -I$(PTHREAD_INC)
cincdirs=$(cincdirs) -I$(INCDIR) -I$(INCDIR)\krb5 $(pthreadinc)
cdefines=$(cdefines) -DHAVE_CONFIG_H
cdebug=$(cdebug) /Zi
ldebug=$(ldebug) /DEBUG
# ---------------------------------------------------------------
# time_t issues
@@ -220,7 +226,7 @@ RC2RES = $(RC2RES_C) -fo $@ $**
!ifndef RECURSE
check-utils:
@for %%g in ( "$(AWK)" "$(YACC)" "$(LEX)" "$(PYTHON)" "$(PERL)" "$(CMP)" "$(SED)" "$(SIGNTOOL)" "$(MAKECAT)" ) do @( \
@for %%g in ( "$(AWK)" "$(YACC)" "$(LEX)" "$(PYTHON)" "$(PERL)" "$(CMP)" "$(SED)" "$(SIGNTOOL)" "$(MAKECAT)" "$(CANDLE)" "$(LIGHT)") do @( \
for /f %%f in ( "%%g" ) do @( \
if exist %%f @( \
echo Found %%f \