mirror of
https://github.com/freedomofpress/dangerzone.git
synced 2025-04-29 02:12:36 +02:00
Merge branch 'main' into circleci
This commit is contained in:
commit
18d3cecc52
8 changed files with 44 additions and 57 deletions
33
BUILD.md
33
BUILD.md
|
@ -152,21 +152,21 @@ Dangerzone uses PyInstaller to turn the python source code into Windows executab
|
|||
|
||||
Here's how to compile the PyInstaller bootloader:
|
||||
|
||||
Download and install [Microsoft Build Tools for Visual Studio 2019](https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2019). I downloaded `vs_buildtools__719988613.1603831511.exe`. In the installer, check the box next to "C++ build tools". Click "Individual components", and under "Compilers, build tools and runtimes", check "Windows Universal CRT SDK". Then click install. When installation is done, you may have to reboot your computer.
|
||||
Download and install [Microsoft Build Tools for Visual Studio 2022](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022). I downloaded `vs_BuildTools.exe`. In the installer, check the box next to "Desktop development with C++". Click "Individual components", and under "Compilers, build tools and runtimes", check "Windows Universal CRT SDK". Then click install. When installation is done, you may have to reboot your computer.
|
||||
|
||||
Then, enable the 32-bit Visual C++ Toolset on the Command Line like this:
|
||||
|
||||
```
|
||||
cd "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build"
|
||||
vcvars32.bat
|
||||
cd 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build'
|
||||
.\vcvars32.bat
|
||||
```
|
||||
|
||||
Change to a folder where you keep source code, and clone the PyInstaller git repo and checkout the `v4.3` tag:
|
||||
Change to a folder where you keep source code, and clone the PyInstaller git repo and checkout the `v4.7` tag:
|
||||
|
||||
```
|
||||
git clone https://github.com/pyinstaller/pyinstaller.git
|
||||
cd pyinstaller
|
||||
git checkout v4.3
|
||||
git checkout v4.7
|
||||
```
|
||||
|
||||
The next step is to compile the bootloader. We should do this all in dangerzone's poetry shell:
|
||||
|
@ -180,7 +180,7 @@ cd ..\pyinstaller
|
|||
Then, compile the bootloader:
|
||||
|
||||
```
|
||||
cd bootloader
|
||||
cd .\bootloader\
|
||||
python waf distclean all --target-arch=32bit --msvc_targets=x86
|
||||
cd ..
|
||||
```
|
||||
|
@ -202,8 +202,7 @@ Now the next time you use PyInstaller to build dangerzone, the `.exe` file shoul
|
|||
|
||||
### If you want to sign binaries with Authenticode
|
||||
|
||||
* You'll need a code signing certificate. I got an open source code signing certificate from [Certum](https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml).
|
||||
* Once you get a code signing key and certificate and covert it to a pfx file, import it into your certificate store.
|
||||
You'll need a code signing certificate.
|
||||
|
||||
## To make a .exe
|
||||
|
||||
|
@ -224,24 +223,10 @@ mklink dangerzone-container.exe dangerzone.exe
|
|||
|
||||
### To build the installer
|
||||
|
||||
Note that you must have a codesigning certificate installed in order to use the `install\windows\build.bat` script, because it codesigns `dangerzone.exe` and `Dangerzone.msi`.
|
||||
|
||||
Open a command prompt, cd to the dangerzone directory, and run:
|
||||
Note that you must have a codesigning certificate installed in order to use the `install\windows\build-app.bat` script, because it codesigns `dangerzone.exe` and `Dangerzone.msi`.
|
||||
|
||||
```
|
||||
poetry run install\windows\step1-build-exe.bat
|
||||
```
|
||||
|
||||
Open a second command prompt _as an administratror_, cd to the dangerzone directory, and run:
|
||||
|
||||
```
|
||||
install\windows\step2-make-symlink.bat
|
||||
```
|
||||
|
||||
Then back in the first command prompt, run:
|
||||
|
||||
```
|
||||
poetry run install\windows\step3-build-installer.bat
|
||||
poetry run .\install\windows\build-app.bat
|
||||
```
|
||||
|
||||
When you're done you will have `dist\Dangerzone.msi`.
|
||||
|
|
|
@ -430,7 +430,9 @@ class GlobalCommon(object):
|
|||
print("Installing Dangerzone container image...")
|
||||
|
||||
p = subprocess.Popen(
|
||||
[self.get_container_runtime(), "load"], stdin=subprocess.PIPE
|
||||
[self.get_container_runtime(), "load"],
|
||||
stdin=subprocess.PIPE,
|
||||
startupinfo=self.get_subprocess_startupinfo(),
|
||||
)
|
||||
|
||||
chunk_size = 1024
|
||||
|
@ -473,6 +475,7 @@ class GlobalCommon(object):
|
|||
self.container_name,
|
||||
],
|
||||
text=True,
|
||||
startupinfo=self.get_subprocess_startupinfo(),
|
||||
)
|
||||
found_image_id = found_image_id.strip()
|
||||
|
||||
|
@ -484,7 +487,8 @@ class GlobalCommon(object):
|
|||
print(f"Deleting old dangerzone container image")
|
||||
|
||||
subprocess.check_output(
|
||||
[self.get_container_runtime(), "rmi", found_image_id]
|
||||
[self.get_container_runtime(), "rmi", found_image_id],
|
||||
startupinfo=self.get_subprocess_startupinfo(),
|
||||
)
|
||||
|
||||
return installed
|
||||
|
|
|
@ -512,7 +512,9 @@ class ConvertThread(QtCore.QThread):
|
|||
except:
|
||||
print(f"Invalid JSON returned from container: {line}")
|
||||
self.error = True
|
||||
self.update.emit(True, "Invalid JSON returned from container", 0)
|
||||
self.update.emit(
|
||||
True, f"Invalid JSON returned from container:\n\n{line}", 0
|
||||
)
|
||||
return
|
||||
|
||||
s = Style.BRIGHT + Fore.CYAN + f"{status['percentage']}% "
|
||||
|
|
26
install/windows/build-app.bat
Normal file
26
install/windows/build-app.bat
Normal file
|
@ -0,0 +1,26 @@
|
|||
REM delete old dist and build files
|
||||
rmdir /s /q dist
|
||||
rmdir /s /q build
|
||||
|
||||
REM build the exe with pyinstaller
|
||||
pyinstaller install\pyinstaller\pyinstaller.spec
|
||||
|
||||
REM code sign dangerzone.exe
|
||||
signtool.exe sign /v /d "Dangerzone" /sha1 28a4af3b6ba5ed0ef307e1b96a140e1b42450c3b /tr http://timestamp.digicert.com dist\dangerzone\dangerzone.exe
|
||||
|
||||
REM build the wix file
|
||||
python install\windows\build-wxs.py > install\windows\Dangerzone.wxs
|
||||
|
||||
REM build the msi package
|
||||
cd build
|
||||
mkdir wix
|
||||
cd wix
|
||||
candle.exe ..\..\install\windows\Dangerzone.wxs
|
||||
light.exe -ext WixUIExtension Dangerzone.wixobj
|
||||
|
||||
REM code sign dangerzone.msi
|
||||
signtool.exe sign /v /d "Dangerzone" /sha1 28a4af3b6ba5ed0ef307e1b96a140e1b42450c3b /tr http://timestamp.digicert.com Dangerzone.msi
|
||||
|
||||
REM moving Dangerzone.msi to dist
|
||||
cd ..\..
|
||||
move build\wix\Dangerzone.msi dist
|
|
@ -222,7 +222,6 @@ def main():
|
|||
print(f'<?define ProductVersion = "{version}"?>')
|
||||
print('<?define ProductUpgradeCode = "12b9695c-965b-4be0-bc33-21274e809576"?>')
|
||||
|
||||
ET.indent(root_el)
|
||||
ET.dump(root_el)
|
||||
|
||||
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
REM delete old dist and build files
|
||||
rmdir /s /q dist
|
||||
rmdir /s /q build
|
||||
|
||||
REM build the exe with pyinstaller
|
||||
pyinstaller install\pyinstaller\pyinstaller.spec
|
||||
|
||||
REM code sign dangerzone.exe
|
||||
signtool.exe sign /v /d "Dangerzone" /a /tr http://time.certum.pl/ dist\dangerzone\dangerzone.exe
|
|
@ -1,4 +0,0 @@
|
|||
REM make dangerzone-container.exe symbolic link (as administrator)
|
||||
cd dist\dangerzone
|
||||
mklink dangerzone-container.exe dangerzone.exe
|
||||
cd ..\..
|
|
@ -1,16 +0,0 @@
|
|||
REM build the wix file
|
||||
python install\windows\build-wxs.py > install\windows\Dangerzone.wxs
|
||||
|
||||
REM build the msi package
|
||||
cd build
|
||||
mkdir wix
|
||||
cd wix
|
||||
candle.exe ..\..\install\windows\Dangerzone.wxs
|
||||
light.exe -ext WixUIExtension Dangerzone.wixobj
|
||||
|
||||
REM code sign dangerzone.msi
|
||||
signtool.exe sign /v /d "Dangerzone" /a /tr http://time.certum.pl/ Dangerzone.msi
|
||||
|
||||
REM moving Dangerzone.msi to dist
|
||||
cd ..\..
|
||||
move build\wix\Dangerzone.msi dist
|
Loading…
Reference in a new issue