mirror of
https://github.com/DNSCrypt/dnscrypt-proxy.git
synced 2025-03-04 02:14:40 +01:00
Added support to package dnscrypt for windows into an msi
This commit is contained in:
parent
b37a5c991a
commit
4a361dbb05
7 changed files with 190 additions and 0 deletions
58
.ci/ci-package.sh
Executable file
58
.ci/ci-package.sh
Executable file
|
@ -0,0 +1,58 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
PACKAGE_VERSION="$1"
|
||||||
|
|
||||||
|
cd dnscrypt-proxy || exit 1
|
||||||
|
|
||||||
|
|
||||||
|
# setup the environment
|
||||||
|
#######################
|
||||||
|
sudo apt-get update -y
|
||||||
|
sudo apt-get install -y wget wine dotnet-sdk-6.0
|
||||||
|
sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install -y wine32
|
||||||
|
|
||||||
|
sudo apt-get install -y unzip
|
||||||
|
|
||||||
|
export WINEPREFIX=$HOME/.wine32
|
||||||
|
export WINEARCH=win32
|
||||||
|
export WINEDEBUG=-all
|
||||||
|
|
||||||
|
wget https://dl.winehq.org/wine/wine-mono/8.1.0/wine-mono-8.1.0-x86.msi
|
||||||
|
WINEPREFIX="$HOME/.wine32" WINEARCH=win32 wineboot --init
|
||||||
|
WINEPREFIX="$HOME/.wine32" WINEARCH=win32 wine msiexec /i wine-mono-8.1.0-x86.msi
|
||||||
|
|
||||||
|
mkdir $HOME/.wine32/drive_c/temp
|
||||||
|
mkdir -p $HOME/.wine/drive_c/temp
|
||||||
|
wget https://github.com/wixtoolset/wix3/releases/download/wix3112rtm/wix311-binaries.zip -nv -O wix.zip
|
||||||
|
|
||||||
|
unzip wix.zip -d $HOME/wix
|
||||||
|
rm -f wix.zip
|
||||||
|
|
||||||
|
builddir=$(pwd)
|
||||||
|
srcdir=$(cd ..;pwd)
|
||||||
|
version=$PACKAGE_VERSION
|
||||||
|
|
||||||
|
cd $HOME/wix
|
||||||
|
|
||||||
|
|
||||||
|
ln -s $builddir $HOME/wix/build
|
||||||
|
ln -s $srcdir/contrib/msi $HOME/wix/wixproj
|
||||||
|
echo "builddir: $builddir"
|
||||||
|
|
||||||
|
# build the msi's
|
||||||
|
#################
|
||||||
|
for arch in x64 x86
|
||||||
|
do
|
||||||
|
binpath="win32"
|
||||||
|
if [[ "$arch" == "x64" ]]; then
|
||||||
|
binpath="win64"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $arch
|
||||||
|
|
||||||
|
wine candle.exe -dVersion=$version -dPlatform=$arch -dPath=build\\$binpath -arch $arch wixproj\\dnscrypt.wxs -out build\\dnscrypt-$arch.wixobj
|
||||||
|
wine light.exe -out build\\dnscrypt-proxy-$arch-$version.msi build\\dnscrypt-$arch.wixobj -sval
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
cd $builddir
|
6
.github/workflows/releases.yml
vendored
6
.github/workflows/releases.yml
vendored
|
@ -49,6 +49,11 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
.ci/ci-build.sh "${{ steps.get_version.outputs.VERSION }}"
|
.ci/ci-build.sh "${{ steps.get_version.outputs.VERSION }}"
|
||||||
|
|
||||||
|
- name: Package
|
||||||
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
run: |
|
||||||
|
.ci/ci-package.sh "${{ steps.get_version.outputs.VERSION }}"
|
||||||
|
|
||||||
- name: Install minisign and sign
|
- name: Install minisign and sign
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
run: |
|
run: |
|
||||||
|
@ -87,3 +92,4 @@ jobs:
|
||||||
dnscrypt-proxy/*.zip
|
dnscrypt-proxy/*.zip
|
||||||
dnscrypt-proxy/*.tar.gz
|
dnscrypt-proxy/*.tar.gz
|
||||||
dnscrypt-proxy/*.minisig
|
dnscrypt-proxy/*.minisig
|
||||||
|
dnscrypt-proxy/*.msi
|
||||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -14,3 +14,6 @@ dnscrypt-proxy/dnscrypt-proxy
|
||||||
.ci/*.md
|
.ci/*.md
|
||||||
.ci/*.md.minisig
|
.ci/*.md.minisig
|
||||||
.ci/test-dnscrypt-proxy.toml
|
.ci/test-dnscrypt-proxy.toml
|
||||||
|
contrib/msi/*.msi
|
||||||
|
contrib/msi/*.wixpdb
|
||||||
|
contrib/msi/*.wixobj
|
||||||
|
|
21
contrib/msi/Dockerfile
Normal file
21
contrib/msi/Dockerfile
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
FROM ubuntu:latest
|
||||||
|
MAINTAINER dnscrypt-authors
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y wget wine dotnet-sdk-6.0 && \
|
||||||
|
dpkg --add-architecture i386 && apt-get update && apt-get install -y wine32
|
||||||
|
|
||||||
|
|
||||||
|
ENV WINEPREFIX=/root/.wine32 WINEARCH=win32 WINEDEBUG=-all
|
||||||
|
|
||||||
|
RUN wget https://dl.winehq.org/wine/wine-mono/8.1.0/wine-mono-8.1.0-x86.msi && \
|
||||||
|
WINEPREFIX="$HOME/.wine32" WINEARCH=win32 wineboot --init && \
|
||||||
|
WINEPREFIX="$HOME/.wine32" WINEARCH=win32 wine msiexec /i wine-mono-8.1.0-x86.msi && \
|
||||||
|
mkdir $WINEPREFIX/drive_c/temp && \
|
||||||
|
apt-get install -y unzip && \
|
||||||
|
wget https://github.com/wixtoolset/wix3/releases/download/wix3112rtm/wix311-binaries.zip -nv -O wix.zip && \
|
||||||
|
unzip wix.zip -d /wix && \
|
||||||
|
rm -f wix.zip
|
||||||
|
|
||||||
|
WORKDIR /wix
|
||||||
|
|
13
contrib/msi/README.md
Normal file
13
contrib/msi/README.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# Scripts and utilities related to building an .msi (Microsoft Standard Installer) file.
|
||||||
|
|
||||||
|
## Docker test image for building an MSI locally
|
||||||
|
|
||||||
|
```
|
||||||
|
docker build . -f Dockerfile -t ubuntu:dnscrypt-msi
|
||||||
|
```
|
||||||
|
|
||||||
|
## Test building msi files for intel win32 & win64
|
||||||
|
|
||||||
|
```
|
||||||
|
./build.sh
|
||||||
|
```
|
29
contrib/msi/build.sh
Executable file
29
contrib/msi/build.sh
Executable file
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
version=0.0.0
|
||||||
|
gitver=$(git describe --tags --always --match="[0-9]*.[0-9]*.[0-9]*" --exclude='*[^0-9.]*')
|
||||||
|
if [[ "$gitver" != "" ]]; then
|
||||||
|
version=$gitver
|
||||||
|
fi
|
||||||
|
|
||||||
|
# build the image by running: docker build . -f Dockerfile -t ubuntu:dnscrypt-msi
|
||||||
|
if [[ "$(docker image list -q ubuntu:dnscrypt-msi)" == "" ]]; then
|
||||||
|
docker build . -f Dockerfile -t ubuntu:dnscrypt-msi
|
||||||
|
fi
|
||||||
|
|
||||||
|
image=ubuntu:dnscrypt-msi
|
||||||
|
|
||||||
|
|
||||||
|
for arch in x64 x86
|
||||||
|
do
|
||||||
|
binpath="win32"
|
||||||
|
if [[ "$arch" == "x64" ]]; then
|
||||||
|
binpath="win64"
|
||||||
|
fi
|
||||||
|
src=$(cd ../../dnscrypt-proxy/$binpath; pwd)
|
||||||
|
echo $src
|
||||||
|
|
||||||
|
docker run --rm -v $(pwd):/wixproj -v $src:/src $image wine candle.exe -dVersion=$version -dPlatform=$arch -dPath=\\src -arch $arch \\wixproj\\dnscrypt.wxs -out \\wixproj\\dnscrypt-$arch.wixobj
|
||||||
|
docker run --rm -v $(pwd):/wixproj -v $src:/src $image wine light.exe -out \\wixproj\\dnscrypt-proxy-$arch-$version.msi \\wixproj\\dnscrypt-$arch.wixobj -sval
|
||||||
|
|
||||||
|
done
|
60
contrib/msi/dnscrypt.wxs
Normal file
60
contrib/msi/dnscrypt.wxs
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
|
<?if $(var.Platform)="x64" ?>
|
||||||
|
<?define Program_Files="ProgramFiles64Folder"?>
|
||||||
|
<?else ?>
|
||||||
|
<?define Program_Files="ProgramFilesFolder"?>
|
||||||
|
<?endif ?>
|
||||||
|
<?ifndef var.Version?>
|
||||||
|
<?error Undefined Version variable?>
|
||||||
|
<?endif ?>
|
||||||
|
<?ifndef var.Path?>
|
||||||
|
<?error Undefined Path variable?>
|
||||||
|
<?endif ?>
|
||||||
|
|
||||||
|
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||||
|
<Product Id="*"
|
||||||
|
UpgradeCode="fbf99dd8-c21e-4f9b-a632-de53bb64c45e"
|
||||||
|
Name="dnscrypt-proxy"
|
||||||
|
Version="$(var.Version)"
|
||||||
|
Manufacturer="DNSCrypt"
|
||||||
|
Language="1033">
|
||||||
|
|
||||||
|
<Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package" InstallScope="perMachine" />
|
||||||
|
<Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
|
||||||
|
<MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />
|
||||||
|
|
||||||
|
<Upgrade Id="fbf99dd8-c21e-4f9b-a632-de53bb64c45e">
|
||||||
|
<UpgradeVersion Minimum="$(var.Version)" OnlyDetect="yes" Property="NEWERVERSIONDETECTED" />
|
||||||
|
<UpgradeVersion Minimum="2.1.0" Maximum="$(var.Version)" IncludeMinimum="yes" IncludeMaximum="no" Property="OLDERVERSIONBEINGUPGRADED" />
|
||||||
|
</Upgrade>
|
||||||
|
<Condition Message="A newer version of this software is already installed.">NOT NEWERVERSIONDETECTED</Condition>
|
||||||
|
|
||||||
|
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||||
|
<Directory Id="$(var.Program_Files)">
|
||||||
|
<Directory Id="INSTALLDIR" Name="DNSCrypt">
|
||||||
|
<Component Id="ApplicationFiles" Guid="7d693c0b-71d8-436a-9c84-60a11dc74092">
|
||||||
|
<File Id="dnscryptproxy.exe" KeyPath="yes" Source="$(var.Path)\dnscrypt-proxy.exe" DiskId="1"/>
|
||||||
|
<File Source="$(var.Path)\LICENSE"></File>
|
||||||
|
<File Source="$(var.Path)\service-install.bat"></File>
|
||||||
|
<File Source="$(var.Path)\service-restart.bat"></File>
|
||||||
|
<File Source="$(var.Path)\service-uninstall.bat"></File>
|
||||||
|
<File Source="$(var.Path)\example-dnscrypt-proxy.toml"></File>
|
||||||
|
</Component>
|
||||||
|
<Component Id="ConfigInstall" Guid="db7b691e-f7c7-4c9a-92e1-c6f21ce6430f" KeyPath="yes">
|
||||||
|
<Condition><![CDATA[CONFIGFILE]]></Condition>
|
||||||
|
<CopyFile Id="dnscryptproxytoml" DestinationDirectory="INSTALLDIR" DestinationName="dnscrypt-proxy.toml" SourceProperty="CONFIGFILE">
|
||||||
|
</CopyFile>
|
||||||
|
<RemoveFile Id="RemoveConfig" Directory="INSTALLDIR" Name="dnscrypt-proxy.toml" On="uninstall" />
|
||||||
|
</Component>
|
||||||
|
</Directory>
|
||||||
|
</Directory>
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<Feature Id="Complete" Level="1">
|
||||||
|
<ComponentRef Id="ApplicationFiles" />
|
||||||
|
<ComponentRef Id="ConfigInstall" />
|
||||||
|
</Feature>
|
||||||
|
|
||||||
|
</Product>
|
||||||
|
</Wix>
|
Loading…
Add table
Reference in a new issue