aboutsummaryrefslogtreecommitdiffstats
path: root/msi-example
diff options
context:
space:
mode:
authorSimon Rozman <simon@rozman.si>2020-10-25 00:23:33 +0200
committerSimon Rozman <simon@rozman.si>2020-10-31 06:55:58 +0100
commit202f1dc9b88e2d962573e694a9abf38472575f9d (patch)
treeeab98197015c2760df25f5aa698383530c060d6f /msi-example
parentapi: allow wintun.h use in C++ (diff)
downloadwintun-202f1dc9b88e2d962573e694a9abf38472575f9d.tar.xz
wintun-202f1dc9b88e2d962573e694a9abf38472575f9d.zip
api: update README.md
Signed-off-by: Simon Rozman <simon@rozman.si>
Diffstat (limited to 'msi-example')
-rw-r--r--msi-example/README.md46
-rw-r--r--msi-example/build.bat62
-rw-r--r--msi-example/exampletun.wxs56
3 files changed, 0 insertions, 164 deletions
diff --git a/msi-example/README.md b/msi-example/README.md
deleted file mode 100644
index 0a42201..0000000
--- a/msi-example/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-## Example Standalone MSI
-
-The best way to include Wintun in your software is by including the MSMs in your final MSI,
-as described by [the main README](../README.md). However, if you're stuck with an installation
-system such as NSIS, which can not bundle MSM files, then you must build your own MSI, which
-NSIS can then invoke. ***Do not use an MSI from elsewhere. You must build it yourself and
-distribute only the MSI that you yourself build.*** Otherwise different projects will wind up
-uninstalling each other by accident and disturbing the MSM reference counting. The steps in
-this file should only be taken if you're not able to include an MSM into a MSI, something that
-is easily possible using WiX or most commercial installation solutions.
-
-This `msi-example` folder contains a WiX skeleton and a build script that handles all
-dependencies. use it as follows below.
-
-#### Steps:
-
-1. Generate a UUID using uuidgen.exe and replace `{{{FIXED AMD64 UUID}}}` in exampletun.wxs
-with that UUID. For the life time of your entire product, even across versions, do not change
-that UUID.
-
-2. Generate a UUID using uuidgen.exe and replace `{{{FIXED ARM64 UUID}}}` in exampletun.wxs
-with that UUID. For the life time of your entire product, even across versions, do not change
-that UUID.
-
-3. Generate another UUID using uuidgen.exe and replace `{{{FIXED X86 UUID}}}` in
-exampletun.wxs with that UUID. For the life time of your entire product, even across versions,
-do not change that UUID.
-
-4. Go to [Wintun.net](https://www.wintun.net/) and look at what the latest version is (`0.6`,
-for example). Replace `{{{VERSION}}}` in build.bat with that version.
-
-5. Download the amd64 MSM from [Wintun.net](https://www.wintun.net/) and compute its SHA2-256
-sum in all lowercase hex digits using `CertUtil -hashfile "path/to/file" SHA256`, and replace
-`{{{64BIT HASH}}}` in build.bat with that value.
-
-6. Download the arm64 MSM from [Wintun.net](https://www.wintun.net/) and compute its SHA2-256
-sum in all lowercase hex digits using `CertUtil -hashfile "path/to/file" SHA256`, and replace
-`{{{64BIT HASH}}}` in build.bat with that value.
-
-7. Download the x86 MSM from [Wintun.net](https://www.wintun.net/) and compute its SHA2-256
-sum in all lowercase hex digits using `CertUtil -hashfile "path/to/file" SHA256`, and replace
-`{{{32BIT HASH}}}` in build.bat with that value.
-
-8. Run build.bat.
-
-9. Distribute dist\exampletun-*.msi for your own software only.
diff --git a/msi-example/build.bat b/msi-example/build.bat
deleted file mode 100644
index 08a83ee..0000000
--- a/msi-example/build.bat
+++ /dev/null
@@ -1,62 +0,0 @@
-@echo off
-rem SPDX-License-Identifier: GPL-2.0
-rem Copyright (C) 2019 WireGuard LLC. All Rights Reserved.
-
-setlocal
-set PATHEXT=.exe
-set BUILDDIR=%~dp0
-cd /d %BUILDDIR% || exit /b 1
-
-set WIX_CANDLE_FLAGS=-nologo
-set WIX_LIGHT_FLAGS=-nologo -spdb -sice:ICE71 -sice:ICE61
-
-if exist .deps\prepared goto :build
-:installdeps
- rmdir /s /q .deps 2> NUL
- mkdir .deps || goto :error
- cd .deps || goto :error
- call :download wintun-x86.msm https://www.wintun.net/builds/wintun-x86-{{{VERSION}}}.msm {{{32BIT HASH}}} || goto :error
- call :download wintun-amd64.msm https://www.wintun.net/builds/wintun-amd64-{{{VERSION}}}.msm {{{64BIT HASH}}} || goto :error
- call :download wintun-arm64.msm https://www.wintun.net/builds/wintun-arm64-{{{VERSION}}}.msm {{{64BIT HASH}}} || goto :error
- call :download wix-binaries.zip https://wixtoolset.org/downloads/v3.14.0.3910/wix314-binaries.zip 0904a88a4bcd9dd3c2274caabe73989cd72767ee90c8fa0bf813d004eec90d32 || goto :error
- echo [+] Extracting wix-binaries.zip
- mkdir wix\bin || goto :error
- tar -xf wix-binaries.zip -C wix\bin || goto :error
- echo [+] Cleaning up wix-binaries.zip
- del wix-binaries.zip || goto :error
- copy /y NUL prepared > NUL || goto :error
- cd .. || goto :error
-
-:build
- set WIX=%BUILDDIR%.deps\wix\
- call :msi x86 x86 || goto :error
- call :msi amd64 x64 || goto :error
- call :msi arm64 arm64 || goto :error
- if exist ..\sign.bat call ..\sign.bat
- if "%SigningCertificate%"=="" goto :success
- if "%TimestampServer%"=="" goto :success
- echo [+] Signing
- signtool sign /sha1 "%SigningCertificate%" /fd sha256 /tr "%TimestampServer%" /td sha256 /d "ExampleTun Setup" "dist\exampletun-*.msi" || goto :error
-
-:success
- echo [+] Success.
- exit /b 0
-
-:download
- echo [+] Downloading %1
- curl -#fLo %1 %2 || exit /b 1
- echo [+] Verifying %1
- for /f %%a in ('CertUtil -hashfile %1 SHA256 ^| findstr /r "^[0-9a-f]*$"') do if not "%%a"=="%~3" exit /b 1
- goto :eof
-
-:msi
- if not exist "%~1" mkdir "%~1"
- echo [+] Compiling %1
- "%WIX%bin\candle" %WIX_CANDLE_FLAGS% -dEXAMPLETUN_PLATFORM="%~1" -out "%~1\exampletun.wixobj" -arch %2 exampletun.wxs || exit /b %errorlevel%
- echo [+] Linking %1
- "%WIX%bin\light" %WIX_LIGHT_FLAGS% -out "dist\exampletun-%~1.msi" "%~1\exampletun.wixobj" || exit /b %errorlevel%
- goto :eof
-
-:error
- echo [-] Failed with error #%errorlevel%.
- cmd /c exit %errorlevel%
diff --git a/msi-example/exampletun.wxs b/msi-example/exampletun.wxs
deleted file mode 100644
index 2dab6a0..0000000
--- a/msi-example/exampletun.wxs
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- SPDX-License-Identifier: GPL-2.0
-
- Copyright (C) 2019 WireGuard LLC. All Rights Reserved.
--->
-<?if $(var.EXAMPLETUN_PLATFORM) = "amd64"?>
- <?define UpgradeCode = "{{{FIXED AMD64 UUID}}}"?>
-<?elseif $(var.EXAMPLETUN_PLATFORM) = "arm64"?>
- <?define UpgradeCode = "{{{FIXED ARM64 UUID}}}"?>
-<?elseif $(var.EXAMPLETUN_PLATFORM) = "x86"?>
- <?define UpgradeCode = "{{{FIXED X86 UUID}}}"?>
-<?else?>
- <?error Unknown platform ?>
-<?endif?>
-
-
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
- <Product
- Id="*"
- Name="ExampleTun"
- Language="1033"
- Version="1.0"
- Manufacturer="Acme Widgets Corporation"
- UpgradeCode="$(var.UpgradeCode)">
- <Package
- InstallerVersion="400"
- Compressed="yes"
- InstallScope="perMachine"
- Description="ExampleTun: Acme Widget's Distribution of Wintun"
- ReadOnly="yes" />
-
- <MediaTemplate EmbedCab="yes" CompressionLevel="high" />
-
- <Property Id="ARPNOMODIFY" Value="yes" />
- <Property Id="ARPSYSTEMCOMPONENT" Value="1" />
- <Property Id="DISABLEADVTSHORTCUTS" Value="yes" />
- <Property Id="DISABLEROLLBACK" Value="yes" />
- <Property Id="MSIDISABLERMRESTART" Value="1" />
- <Property Id="MSIRMSHUTDOWN" Value="1" />
-
- <MajorUpgrade
- AllowDowngrades="no"
- AllowSameVersionUpgrades="yes"
- DowngradeErrorMessage="A newer version of [ProductName] is already installed."
- Schedule="afterInstallExecute" />
-
- <Directory Id="TARGETDIR" Name="SourceDir">
- <Merge Id="WintunMergeModule" Language="0" DiskId="1" SourceFile=".deps\wintun-$(var.EXAMPLETUN_PLATFORM).msm" />
- </Directory>
-
- <Feature Id="WintunFeature" Title="Wintun" Level="1">
- <MergeRef Id="WintunMergeModule" />
- </Feature>
- </Product>
-</Wix>