Initial commit
This commit is contained in:
1
release/.gitignore
vendored
Normal file
1
release/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
maketarball
|
||||
172
release/kasmvnc.iss.in
Normal file
172
release/kasmvnc.iss.in
Normal file
@@ -0,0 +1,172 @@
|
||||
[Setup]
|
||||
#ifdef WIN64
|
||||
ArchitecturesInstallIn64BitMode=x64
|
||||
AppName=KasmVNC 64-bit
|
||||
AppVerName=KasmVNC 64-bit @VERSION@ (@BUILD@)
|
||||
#else
|
||||
AppName=KasmVNC
|
||||
AppVerName=KasmVNC v@VERSION@ (@BUILD@)
|
||||
#endif
|
||||
AppVersion=@VERSION@
|
||||
AppPublisher=KasmVNC project
|
||||
AppPublisherURL=http://kasmweb.com
|
||||
DefaultDirName={pf}\KasmVNC
|
||||
#ifdef WIN64
|
||||
DefaultGroupName=KasmVNC 64-bit
|
||||
#else
|
||||
DefaultGroupName=KasmVNC
|
||||
#endif
|
||||
LicenseFile=@CMAKE_SOURCE_DIR@\LICENCE.txt
|
||||
|
||||
[Dirs]
|
||||
; This directory is necessary to prevent the X509 file chooser from causing
|
||||
; an error dialog to appear when GetOpenFileName is called by SYSTEM account.
|
||||
Name: "{sys}\config\systemprofile\Desktop"
|
||||
|
||||
[Files]
|
||||
#ifdef BUILD_WINVNC
|
||||
Source: "@CMAKE_CURRENT_BINARY_DIR@\win\winvnc\winvnc4.exe"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
|
||||
Source: "@CMAKE_CURRENT_BINARY_DIR@\win\wm_hooks\wm_hooks.dll"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
|
||||
Source: "@CMAKE_CURRENT_BINARY_DIR@\win\vncconfig\vncconfig.exe"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
|
||||
#endif
|
||||
Source: "@CMAKE_CURRENT_BINARY_DIR@\vncviewer\vncviewer.exe"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
|
||||
Source: "@CMAKE_SOURCE_DIR@\README.md"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "@CMAKE_SOURCE_DIR@\LICENCE.TXT"; DestDir: "{app}"; Flags: ignoreversion
|
||||
|
||||
|
||||
[Icons]
|
||||
Name: "{group}\KasmVNC Viewer"; FileName: "{app}\vncviewer.exe";
|
||||
Name: "{group}\Listening KasmVNC Viewer"; FileName: "{app}\vncviewer.exe"; Parameters: "-listen";
|
||||
|
||||
#ifdef BUILD_WINVNC
|
||||
Name: "{group}\VNC Server (User-Mode)\Run VNC Server"; FileName: "{app}\winvnc4.exe"; Parameters: "-noconsole";
|
||||
Name: "{group}\VNC Server (User-Mode)\Configure VNC Server"; FileName: "{app}\vncconfig.exe"; Parameters: "-user";
|
||||
|
||||
Name: "{group}\VNC Server (Service-Mode)\Configure VNC Service"; FileName: "{app}\vncconfig.exe"; Parameters: "-noconsole -service";
|
||||
Name: "{group}\VNC Server (Service-Mode)\Register VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-register";
|
||||
Name: "{group}\VNC Server (Service-Mode)\Unregister VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-unregister";
|
||||
Name: "{group}\VNC Server (Service-Mode)\Start VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-noconsole -start";
|
||||
Name: "{group}\VNC Server (Service-Mode)\Stop VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-noconsole -stop";
|
||||
#endif
|
||||
Name: "{group}\License"; FileName: "write.exe"; Parameters: "LICENCE.TXT"; WorkingDir: "{app}"; Flags: "useapppaths"
|
||||
Name: "{group}\Read Me"; FileName: "write.exe"; Parameters: "README.md"; WorkingDir: "{app}"; Flags: "useapppaths"
|
||||
Name: "{group}\Uninstall KasmVNC"; FileName: "{uninstallexe}"; WorkingDir: "{app}";
|
||||
|
||||
#ifdef BUILD_WINVNC
|
||||
[Tasks]
|
||||
Name: installservice; Description: "&Register new KasmVNC Server as a system service"; GroupDescription: "Server configuration:";
|
||||
Name: startservice; Description: "&Start or restart KasmVNC service"; GroupDescription: "Server configuration:";
|
||||
|
||||
[Run]
|
||||
Filename: "{app}\winvnc4.exe"; Parameters: "-register"; Tasks: installservice
|
||||
Filename: "net"; Parameters: "start winvnc4"; Tasks: startservice
|
||||
#endif
|
||||
|
||||
#ifdef BUILD_WINVNC
|
||||
[Code]
|
||||
|
||||
{--- IShellLink ---}
|
||||
|
||||
const
|
||||
CLSID_ShellLink = '{00021401-0000-0000-C000-000000000046}';
|
||||
SLDF_RUNAS_USER = $2000;
|
||||
|
||||
type
|
||||
IShellLinkW = interface(IUnknown)
|
||||
'{000214F9-0000-0000-C000-000000000046}'
|
||||
procedure Dummy;
|
||||
procedure Dummy2;
|
||||
procedure Dummy3;
|
||||
function GetDescription(pszName: String; cchMaxName: Integer): HResult;
|
||||
function SetDescription(pszName: String): HResult;
|
||||
function GetWorkingDirectory(pszDir: String; cchMaxPath: Integer): HResult;
|
||||
function SetWorkingDirectory(pszDir: String): HResult;
|
||||
function GetArguments(pszArgs: String; cchMaxPath: Integer): HResult;
|
||||
function SetArguments(pszArgs: String): HResult;
|
||||
function GetHotkey(var pwHotkey: Word): HResult;
|
||||
function SetHotkey(wHotkey: Word): HResult;
|
||||
function GetShowCmd(out piShowCmd: Integer): HResult;
|
||||
function SetShowCmd(iShowCmd: Integer): HResult;
|
||||
function GetIconLocation(pszIconPath: String; cchIconPath: Integer;
|
||||
out piIcon: Integer): HResult;
|
||||
function SetIconLocation(pszIconPath: String; iIcon: Integer): HResult;
|
||||
function SetRelativePath(pszPathRel: String; dwReserved: DWORD): HResult;
|
||||
function Resolve(Wnd: HWND; fFlags: DWORD): HResult;
|
||||
function SetPath(pszFile: String): HResult;
|
||||
end;
|
||||
|
||||
IShellLinkDataList = interface(IUnknown)
|
||||
'{45E2B4AE-B1C3-11D0-B92F-00A0C90312E1}'
|
||||
function AddDataBlock(pDataBlock : DWORD) : HResult;
|
||||
function CopyDataBlock(dwSig : DWORD; var ppDataBlock : DWORD) : HResult;
|
||||
function RemoveDataBlock(dwSig : DWORD) : HResult;
|
||||
function GetFlags(var pdwFlags : DWORD) : HResult;
|
||||
function SetFlags(dwFlags : DWORD) : HResult;
|
||||
end;
|
||||
|
||||
IPersist = interface(IUnknown)
|
||||
'{0000010C-0000-0000-C000-000000000046}'
|
||||
function GetClassID(var classID: TGUID): HResult;
|
||||
end;
|
||||
|
||||
IPersistFile = interface(IPersist)
|
||||
'{0000010B-0000-0000-C000-000000000046}'
|
||||
function IsDirty: HResult;
|
||||
function Load(pszFileName: String; dwMode: Longint): HResult;
|
||||
function Save(pszFileName: String; fRemember: BOOL): HResult;
|
||||
function SaveCompleted(pszFileName: String): HResult;
|
||||
function GetCurFile(out pszFileName: String): HResult;
|
||||
end;
|
||||
|
||||
var
|
||||
OSVersion: TWindowsVersion;
|
||||
|
||||
function InitializeSetup: Boolean;
|
||||
begin
|
||||
GetWindowsVersionEx(OSVersion);
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
procedure SetRunAsUserFlag(Path: String);
|
||||
var
|
||||
Obj: IUnknown;
|
||||
SL: IShellLinkW;
|
||||
SDL: IShellLinkDataList;
|
||||
PF: IPersistFile;
|
||||
Flags: DWord;
|
||||
begin
|
||||
Obj := CreateComObject(StringToGuid(CLSID_ShellLink));
|
||||
SL := IShellLinkW(Obj);
|
||||
PF := IPersistFile(Obj);
|
||||
SDL := IShellLinkDataList(Obj);
|
||||
Path := ExpandConstant(Path);
|
||||
OleCheck(PF.Load(Path, 0));
|
||||
OleCheck(SDL.GetFlags(Flags));
|
||||
OleCheck(SDL.SetFlags(Flags or SLDF_RUNAS_USER));
|
||||
OleCheck(PF.Save(Path, True));
|
||||
end;
|
||||
|
||||
procedure CurStepChanged(CurStep: TSetupStep);
|
||||
var
|
||||
Flags: DWord;
|
||||
begin
|
||||
{ Post-install actions on Windows Vista and higher:
|
||||
o Modify Service-Mode start menu commands so they run as administrator.
|
||||
o Set up the SoftwareSASGeneration system policy so as to allow services to simulate Ctrl+Alt+Del. }
|
||||
if (CurStep = ssPostInstall) and (OSVersion.Major >= 6) then begin
|
||||
SetRunAsUserFlag('{group}\VNC Server (Service-Mode)\Configure VNC Service.lnk');
|
||||
SetRunAsUserFlag('{group}\VNC Server (Service-Mode)\Register VNC Service.lnk');
|
||||
SetRunAsUserFlag('{group}\VNC Server (Service-Mode)\Unregister VNC Service.lnk');
|
||||
SetRunAsUserFlag('{group}\VNC Server (Service-Mode)\Start VNC Service.lnk');
|
||||
SetRunAsUserFlag('{group}\VNC Server (Service-Mode)\Stop VNC Service.lnk');
|
||||
if not RegQueryDWordValue(
|
||||
HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System',
|
||||
'SoftwareSASGeneration', Flags
|
||||
) then Flags := 0;
|
||||
RegWriteDWordValue(
|
||||
HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System',
|
||||
'SoftwareSASGeneration', Flags or 1
|
||||
);
|
||||
end;
|
||||
end;
|
||||
#endif
|
||||
73
release/makemacapp.in
Normal file
73
release/makemacapp.in
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -u
|
||||
set -e
|
||||
trap onexit INT
|
||||
trap onexit TERM
|
||||
trap onexit EXIT
|
||||
|
||||
TMPDIR=
|
||||
|
||||
onexit()
|
||||
{
|
||||
if [ ! "$TMPDIR" = "" ]; then
|
||||
rm -rf $TMPDIR
|
||||
fi
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "$0 [universal]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
UNIVERSAL=0
|
||||
|
||||
PACKAGE_NAME=KasmVNC
|
||||
VERSION=@VERSION@
|
||||
BUILD=@BUILD@
|
||||
SRCDIR=@CMAKE_SOURCE_DIR@
|
||||
BUILDDIR32=@OSX_X86_BUILD@
|
||||
if [ $# -gt 0 ]; then
|
||||
if [ "$1" = "universal" ]; then
|
||||
UNIVERSAL=1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -f $PACKAGE_NAME.dmg ]; then
|
||||
rm -f $PACKAGE_NAME.dmg
|
||||
fi
|
||||
|
||||
umask 022
|
||||
TMPDIR=`mktemp -d /tmp/$PACKAGE_NAME-build.XXXXXX`
|
||||
APPROOT="$TMPDIR/dmg/KasmVNC Viewer $VERSION.app"
|
||||
mkdir -p "$APPROOT/Contents/MacOS"
|
||||
mkdir -p "$APPROOT/Contents/Resources"
|
||||
|
||||
install -m 755 vncviewer/vncviewer "$APPROOT/Contents/MacOS/KasmVNC Viewer"
|
||||
if [ $UNIVERSAL = 1 ]; then
|
||||
if [ ! -d $BUILDDIR32 ]; then
|
||||
echo ERROR: 32-bit build directory $BUILDDIR32 does not exist
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -f $BUILDDIR32/Makefile ]; then
|
||||
echo ERROR: 32-bit build directory $BUILDDIR32 is not configured
|
||||
exit 1
|
||||
fi
|
||||
pushd $BUILDDIR32
|
||||
make
|
||||
popd
|
||||
lipo -create -arch i386 $BUILDDIR32/vncviewer/vncviewer -arch x86_64 \
|
||||
"$APPROOT/Contents/MacOS/KasmVNC Viewer" \
|
||||
-output "$APPROOT/Contents/MacOS/KasmVNC Viewer"
|
||||
fi
|
||||
|
||||
install -m 644 $SRCDIR/LICENCE.TXT $TMPDIR/dmg/
|
||||
install -m 644 $SRCDIR/README.md $TMPDIR/dmg/
|
||||
|
||||
hdiutil create -fs HFS+ -volname $PACKAGE_NAME-$VERSION \
|
||||
-srcfolder "$TMPDIR/dmg" \
|
||||
$TMPDIR/$PACKAGE_NAME-$VERSION.dmg
|
||||
cp $TMPDIR/$PACKAGE_NAME-$VERSION.dmg .
|
||||
|
||||
exit
|
||||
65
release/maketarball.in
Normal file
65
release/maketarball.in
Normal file
@@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -u
|
||||
set -e
|
||||
trap onexit INT
|
||||
trap onexit TERM
|
||||
trap onexit EXIT
|
||||
|
||||
TMPDIR=
|
||||
|
||||
onexit()
|
||||
{
|
||||
if [ ! "$TMPDIR" = "" ]; then
|
||||
rm -rf $TMPDIR
|
||||
fi
|
||||
}
|
||||
|
||||
PACKAGE_NAME=@CMAKE_PROJECT_NAME@
|
||||
VERSION=@VERSION@
|
||||
BUILD=@BUILD@
|
||||
SRCDIR=@CMAKE_SOURCE_DIR@
|
||||
OS=@CMAKE_SYSTEM_NAME@
|
||||
CPU=@CMAKE_SYSTEM_PROCESSOR@
|
||||
PREFIX=@CMAKE_INSTALL_PREFIX@
|
||||
CFLAGS="@CMAKE_C_FLAGS@"
|
||||
if [[ $CFLAGS = *-m32* ]]; then
|
||||
CPU=i686
|
||||
fi
|
||||
PACKAGE_FILE=$PACKAGE_NAME-$OS-$CPU-$VERSION.tar.gz
|
||||
SERVER=0
|
||||
|
||||
if [ $# -gt 0 ]; then
|
||||
if [ "$1" = "server" ]; then
|
||||
SERVER=1
|
||||
fi
|
||||
fi
|
||||
|
||||
umask 022
|
||||
TMPDIR=`mktemp -d /tmp/$PACKAGE_NAME-build.XXXXXX`
|
||||
rm -f $PACKAGE_FILE
|
||||
OUTDIR=$TMPDIR/inst/$PREFIX
|
||||
|
||||
mkdir -p $OUTDIR/bin
|
||||
mkdir -p $OUTDIR/man/man1
|
||||
|
||||
make DESTDIR=$TMPDIR/inst install
|
||||
if [ $SERVER = 1 ]; then
|
||||
install -m 755 ./xorg.build/bin/Xvnc $OUTDIR/bin/
|
||||
install -m 644 ./xorg.build/man/man1/Xvnc.1 $OUTDIR/man/man1/Xvnc.1
|
||||
install -m 644 ./xorg.build/man/man1/Xserver.1 $OUTDIR/man/man1/Xserver.1
|
||||
mkdir -p $OUTDIR/lib/dri/
|
||||
install -m 755 ./xorg.build/lib/dri/swrast_dri.so $OUTDIR/lib/dri/
|
||||
mkdir -p $OUTDIR/share/kasmvnc
|
||||
cp -r $SRCDIR/kasmweb $OUTDIR/share/kasmvnc/www
|
||||
fi
|
||||
|
||||
#pushd $TMPDIR/inst
|
||||
CWD=$(pwd)
|
||||
cd $TMPDIR/inst
|
||||
tar cfz ../$PACKAGE_FILE .
|
||||
#popd
|
||||
cd $CWD
|
||||
cp $TMPDIR/$PACKAGE_FILE .
|
||||
|
||||
exit
|
||||
Reference in New Issue
Block a user