{"id":22582920,"url":"https://github.com/n13org/wixtoolset-tutorials","last_synced_at":"2025-04-10T19:32:08.566Z","repository":{"id":134247738,"uuid":"171511011","full_name":"n13org/WixToolset-Tutorials","owner":"n13org","description":"A collection of tutorials for the Wix Toolset, which include a bunch of samples and examples","archived":false,"fork":false,"pushed_at":"2024-06-02T21:38:50.000Z","size":371,"stargazers_count":24,"open_issues_count":2,"forks_count":5,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-24T17:11:06.299Z","etag":null,"topics":["msi","windows-installer","wix-toolset","wixtoolset-tutorials"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/n13org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-19T16:40:10.000Z","updated_at":"2025-03-24T13:26:14.000Z","dependencies_parsed_at":"2023-08-07T16:16:38.449Z","dependency_job_id":null,"html_url":"https://github.com/n13org/WixToolset-Tutorials","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n13org%2FWixToolset-Tutorials","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n13org%2FWixToolset-Tutorials/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n13org%2FWixToolset-Tutorials/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n13org%2FWixToolset-Tutorials/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/n13org","download_url":"https://codeload.github.com/n13org/WixToolset-Tutorials/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248281413,"owners_count":21077423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["msi","windows-installer","wix-toolset","wixtoolset-tutorials"],"created_at":"2024-12-08T06:12:54.748Z","updated_at":"2025-04-10T19:32:08.540Z","avatar_url":"https://github.com/n13org.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WixToolset-Tutorials\n\nA collection of tutorials for the [Wix Toolset][Wix Toolset], which include a bunch of samples and examples.  \n\nWix toolset (v3, v4 and v5) is the tool to create:\n\n* Modern `MSI` setups for the Windows Installer, main file is `Product.wxs`\n* Boostrapper `EXE` installer to handle prerequisites, main file is `Bundle.wxs`\n* Custom Actions to write your own C# code inside the Windows Installer, main file is `CustomAction.cs`\n\nSlogan from the official Website:\n\u003e THE MOST POWERFUL SET OF TOOLS AVAILABLE TO CREATE YOUR WINDOWS INSTALLATION EXPERIENCE.\n\nA MSI can be inspected by the tool **Orca** from Microsoft ([Orca - Documenation][Orca - Documenation]), which is part of the Windows Installer SDK and installed at `C:\\Program Files (x86)\\Orca\\Orca.exe`. As an Alternative there is also [SuperOrca][SuperOrca] which is **NOT** from Microsoft.\n\nThe [Roadmap][ROADMAP] of the project.\n\n\u003e When GPG signing is not working, try command `gpgconf --launch gpg-agent`\n\n## WixToolset v5\n\n### Visual Studio Extension\n\nInstall [HeatWave for VS2022 by FireGiant](https://marketplace.visualstudio.com/items?itemName=FireGiant.FireGiantHeatWaveDev17) to Visual Studio 2022.\nWith this extension WixToolset v5 will be available and be supported.\n\n### Offical documentation for WixToolset v5\n\n* [Get started with WiX](https://wixtoolset.org/docs/intro/)\n* [Update from v4 to v5](https://wixtoolset.org/docs/fivefour/)\n* [Update from v3 to v4](https://wixtoolset.org/docs/fourthree/)\n\n## Docker - debian based\n\nThe docker usage is for the shell (bash) scripts to do download the HTML pages from Microsoft dotnet SDKs.\n\n|Major|Max Version|\n|:---:|:---------:|\n| [5.0](https://dotnet.microsoft.com/en-us/download/dotnet/5.0) | 5.0.17 |\n| [6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) | 6.0.31 |\n| [7.0](https://dotnet.microsoft.com/en-us/download/dotnet/7.0) | 7.0.20 |\n| [8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) | 8.0.6  |\n\nThese versions are stored (additionally) in [_variables.sh](docker/scripts/_variables.sh).\n\nCreate the docker image\n\n```powershell\ndocker build --tag wixtoolset .\n```\n\nRun container interactive from docker image, use PWD as volume inside\n\n```powershell\ndocker run -it --rm -v ${pwd}:/ws/data wixtoolset /bin/bash\n```\n\nInside the docker container\n\n1. Download the dotnet pages [`./download-pages.sh`](docker/scripts/download-pages.sh), will be stored outside the container in the local `download` folder. This folder should be in gitignore and not under version controls.\n2. Parse the local HTML files to JSON with [`./html2json.sh`](docker/scripts/html2json.sh), the json files will be stored in a local `data`folder. These json files can be under source control. For each SDK Runtime `asp`, `desktop` and `runtime` a file will be generated.\n3. Generate the WXS (wix toolset components) files with [`./generateWixToolsetFragment.sh`](docker/scripts/generateWixToolsetFragment.sh) a local `wix-dotnet` folder will be generated.\n\nAn example wxs code, for dotnet `v8.0.6` SDK `Desktop` runtime for `x64`, the original link would be [.NET 8.0 Desktop Runtime (v8.0.6) Windows x64](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-8.0.6-windows-x64-installer).\n\nThe code is copied from [DotNet_DesktopRuntime_v8_0_6_x64.wxs](wix-dotnet/DotNet_DesktopRuntime_v8.0.6_x64.wxs) below the folder [wix-dotnet](wix-dotnet/), where all other wxs-files are stored. \n\n```xml\n\u003cWix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\"\n     xmlns:netfx=\"http://wixtoolset.org/schemas/v4/wxs/netfx\"\n     xmlns:bal=\"http://wixtoolset.org/schemas/v4/wxs/bal\"\u003e\n\n    \u003cFragment\u003e\n    \u003cnetfx:DotNetCoreSearch\n        RuntimeType=\"desktop\"\n        Platform=\"x64\"\n        MajorVersion=\"8\"\n        Variable=\"DOT_NET_VER\" /\u003e\n\n    \u003cPackageGroup Id=\"DotNet_DesktopRuntime_v8_0_6_x64\"\u003e\n    \u003cExePackage Id=\"Netfx80\"\n                DisplayName=\"Microsoft .NET 8.0 Desktop Runtime\"\n                Description=\"Microsoft .NET 8.0 (8.0.6) Desktop Runtime for windows x64\"\n                PerMachine=\"yes\" Permanent=\"yes\" Vital=\"yes\" InstallArguments=\"/norestart /quiet\"\n                DetectCondition=\"DOT_NET_VER \u0026gt;= v8.0.6\"\n                bal:PrereqPackage=\"yes\"\u003e\n        \u003cExePackagePayload\n            Name=\"runtime-desktop-8.0.6-windows-x64.exe\"\n            DownloadUrl=\"https://download.visualstudio.microsoft.com/download/pr/76e5dbb2-6ae3-4629-9a84-527f8feb709c/09002599b32d5d01dc3aa5dcdffcc984/windowsdesktop-runtime-8.0.6-win-x64.exe\"\n            Hash=\"91bec94f32609fd194ac47a893cea1466e6ad25a16bbaf39cd6989fa9f09e865ba87669aabfe26cd3c8f2a57296170cc021dc762e238a6c5cb5e843d3df3169f\"\n            Size=\"58663408\" /\u003e\n        \u003cExitCode Value=\"0\" Behavior=\"success\" /\u003e\n        \u003cExitCode Behavior=\"scheduleReboot\" /\u003e\n    \u003c/ExePackage\u003e\n    \u003c/PackageGroup\u003e\n    \u003c/Fragment\u003e\n\u003c/Wix\u003e\n```\n\nRun the playwright tests inside the docker container. This command will execute all tests and will create a local folder `playwright-report`, which should be excluded from source control. Before the test can run, run [./joinjson.sh](docker/scripts/joinjson.sh).\n\n```powershell\ndocker run -it --rm -v ${pwd}:/ws/data -v ${pwd}/playwright-report:/ws/playwright-report wixtoolset npx playwright test\n```\n\n## History / Change Log\n\n1. Create the project on [GitHub][GitHub WixToolset-Tutorials] inside the \"[n13.org][GitHub Org n13.org] - Open-Source by [KargWare][KargWare Website]\"\n1. Change UI sequence [UIRef][Wix Toolset UIRef] from `WixUI_Minimal` to `WixUI_Advanced`\n1. Use [Wix-Variables][Wix Toolset Wix-Variables] to avoid repeating your self many times, extract version to separate WXI file\n1. Add a customized dialog `PrerequisitesDlg` to the default `WixUI_FeatureTree` UI. It is also shared as a [GitHub Gist][GitHub Gist PrerequisitesDlg]. The branch [features/AddPrerequisitesPage][GitHub WixToolset-Tutorials branch AddPrerequisitesPage] will stay.\n1. Add a wixtoolset bootstrapper project and add the MSI to it\n1. Move the folders to a file 'Directories.wxs', [Folders and Directories in WixToolset][KargWare Notes #8274e8]\n1. Support WixToolset v5 driven by firegiant\n\n## Wix Toolset Extensions\n\nWix Toolset Extensions are stored inside `C:\\Program Files (x86)\\WiX Toolset v3.11\\bin` (replace the version v3.11 with your version) as `.dll` and can be used as references inside your project.  \n\n| Name           | Description                                                                                                              |\n| -------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| [WixUIExtension][GitHub WixUIExtension] | UI Dialoges, [UIRef][Wix Toolset UIRef], e.g. WixUI_Advanced, WixUI_FeatureTree and WixUI_Mondo |\n\n[ROADMAP]: ./ROADMAP.md\n[KargWare Website]: https://kargware.com\n[KargWare Notes]: https://notes.kargware.com\n[KargWare Notes #8274e8]: https://notes.kargware.com/2020/04/25/Folders-and-Directories-in-WixToolset/\n[GitHub Org n13.org]: https://github.com/n13org\n[GitHub WixToolset-Tutorials]: https://github.com/n13org/WixToolset-Tutorials\n[GitHub WixToolset-Tutorials branch AddPrerequisitesPage]: https://github.com/n13org/WixToolset-Tutorials/tree/features/AddPrerequisitesPage\n[GitHub Gist PrerequisitesDlg]: https://gist.github.com/N7K4/8b146328db03484a61543c4f612c5dd3\n[Wix Toolset]: http://wixtoolset.org/\n[Wix Toolset UIRef]: https://wixtoolset.org/documentation/manual/v3/xsd/wix/uiref.html\n[Wix Toolset Wix-Variables]: https://wixtoolset.org/documentation/manual/v3/votive/votive_project_references.html\n[Orca - Documenation]: https://docs.microsoft.com/en-us/windows/win32/msi/orca-exe\n[SuperOrca]: http://www.pantaray.com/msi_super_orca.html\n[GitHub WixUIExtension]: https://github.com/wixtoolset/wix3/tree/develop/src/ext/UIExtension/wixlib\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fn13org%2Fwixtoolset-tutorials","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fn13org%2Fwixtoolset-tutorials","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fn13org%2Fwixtoolset-tutorials/lists"}