Browse Source

Notes on work-around for corrupt cabinet file

pull/11/head^2
fekt 2 years ago
parent
commit
2f0ed73a79
  1. 25
      advanced/creating-silent-dragon-lite-msi-installer-for-windows-with-wixl.md

25
advanced/creating-silent-dragon-lite-msi-installer-for-windows-with-wixl.md

@ -15,12 +15,12 @@ This will unzip into a directory named SilentDragonLite-v1.5.2-win
```
cd SilentDragonLite-v1.5.2-win
```
## Copy silentdragon.ico to SilentDragon directory
## Copy silentdragon.ico to SilentDragonLite directory
The icon file `silentdragon.ico` is currently not included in release zip, but is required to create an MSI installer with a smaller size. Setting icon SourceFile in the .wxs file to SilentDragonLite.exe will duplicate the .exe and make the installer over 100MB instead of ~80MB. How you get this .ico file is up to you. I extracted from .exe on Windows. Maybe it will be included in .zip release in the future to make this easier for anyone trying to create a MSI file for the first time.
## Create WiX source file (.wxs)
This is an XML file. You should name it what you want the .msi file to be named IE: `SilentDragonLite-1.5.2.wxs`
Below is a copy of the contents of the `SilentDragonLite-1.5.2.wxs` file Note that GUID's all need to be unique. This will create shortcuts to SilentDragon on desktop and in the start menu as well as have uninstall support from Add/Remove Programs. A tutorial that explains the basics of creating these files can be found here: https://www.firegiant.com/wix/tutorial/
Below is a copy of the contents of the `SilentDragonLite-1.5.2.wxs` file. Note that GUID's all need to be unique. This will create shortcuts to SilentDragonLite on desktop and in the start menu as well as have uninstall support from Add/Remove Programs. A tutorial that explains the basics of creating these files can be found here: https://www.firegiant.com/wix/tutorial/
```
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
@ -79,4 +79,23 @@ Below is a copy of the contents of the `SilentDragonLite-1.5.2.wxs` file Note th
wixl -v SilentDragonLite-1.5.2.wxs
```
This will create a `SilentDragonLite-1.5.2.msi` file in the same directory which can then be distributed. If it created without error and is larger than 0kb, congratulations!
This will create a `SilentDragonLite-1.5.2.msi` file in the same directory which can then be distributed. If it created without error and is larger than 0kb, congratulations!
## Potential known issue and work-around if wixl generates MSI with corrupt cabinet file
There is a known issue where wixl may generate a corrupt cabinet file, causing the Windows installer to fail with a corrupt cabinet file error. This appears related to the file size of `SilentDragonLite.exe` and reported issue with gcab: https://gitlab.gnome.org/GNOME/gcab/-/issues/16
File size where this becomes an issue is not exactly known, but it has occurred when `SilentDragonLite.exe` was ~100 MB. There is no cabinet file corruption when compressing `SilentDragonLite.exe` to ~80 MB. UPX is used to compress the executable and then MSI is created again: https://upx.github.io/
### Install UPX ###
```
sudo apt-get install upx
```
### Compress SilentDragonLite.exe ###
```
upx SilentDragonLite.exe --force
```
### Re-create MSI using compressed exe ###
```
wixl -v SilentDragonLite-1.5.2.wxs
```
Loading…
Cancel
Save