66fb5a29bb
Apply the pre-commit hook whitespace fixes to all files in the repo. (Line endings, blank lines at end of file, trailing whitespace) |
||
---|---|---|
.. | ||
cmdlinerunner | ||
.gitignore | ||
build_installer.sh | ||
choice_page.iss.inc | ||
cmdline_page.iss.inc | ||
git_find_installed.iss.inc | ||
git_page.iss.inc | ||
idf_cmd_init.bat | ||
idf_download_page.iss.inc | ||
idf_page.iss.inc | ||
idf_setup.iss.inc | ||
idf_tool_setup.iss | ||
license.txt | ||
main.iss.inc | ||
python_find_installed.iss.inc | ||
python_page.iss.inc | ||
README.md | ||
sign_installer.sh | ||
summary.iss.inc | ||
tools_fallback.json | ||
tools_WD_clean.ps1 | ||
tools_WD_excl.ps1 | ||
utils.iss.inc |
ESP-IDF Tools Installer for Windows
This directory contains source files required to build the tools installer for Windows.
The installer is built using Inno Setup. At the time of writing, the installer can be built with Inno Setup version 6.0.2.
The main source file of the installer is idf_tools_setup.iss
. PascalScript code is split into multiple *.iss.inc
files.
Some functionality of the installer depends on additional programs:
-
Inno Download Plugin — used to download additional files during the installation.
-
7-zip — used to extract downloaded IDF archives.
-
cmdlinerunner — a helper DLL used to run external command line programs from the installer, capture live console output, and get the exit code.
Building the installer
In Docker
This uses wine-innosetup
Docker image and build_installer.sh
script. This is how the installer is built in CI.
docker run --rm -v $IDF_PATH:/idf -w /idf/tools/windows/tool_setup -it $CI_DOCKER_REGISTRY/wine-innosetup:1 /bin/bash build_installer.sh
Manually, step by step
-
Build cmdlinerunner DLL.
- On Linux/Mac, install mingw-w64 toolchain (
i686-w64-mingw32-gcc
). Then build the DLL using CMake:
This will producemkdir -p cmdlinerunner/build cd cmdlinerunner/build cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-i686-w64-mingw32.cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build .
cmdlinerunner.dll
in the build directory. - On Windows, it is possible to build using Visual Studio, with CMake support installed. By default, VS produces build artifacts in some hard to find directory. You can adjust this in CmakeSettings.json file generated by VS.
- On Linux/Mac, install mingw-w64 toolchain (
-
Download 7zip.exe ("standalone console version") and put it into
unzip
directory (to getunzip/7za.exe
). -
Download idf_versions.txt and place it into the current directory. The installer will use it as a fallback, if it can not download idf_versions.txt at run time.
-
Create the
dist
directory and populate it with the tools which should be bundled with the installer. At the moment the easiest way to obtain it is to useinstall.sh
/install.bat
in IDF, and then copy the contents of$HOME/.espressif/dist
directory. If the directory is empty, the installer should still work, and the tools will be downloaded during the installation. -
Build the installer using Inno Setup Compiler:
ISCC.exe idf_tools_setup.iss
.
Signing the installer
-
Obtain the signing key (e.g
key.pem
) and the certificate chain (e.g.certchain.pem
). Set the environment variables to point to these files:export KEYFILE=key.pem
export CERTCHAIN=certchain.pem
-
Run
sign_installer.sh
script. This will ask for thekey.pem
password, and produce the signed installer in the Output directory. If you plan to run the script multiple times, you may also setKEYPASSWORD
environment variable to thekey.pem
password, to avoid the prompt.