Skip to content

Commit

Permalink
Add windows wix installer
Browse files Browse the repository at this point in the history
  • Loading branch information
makindotcc committed Mar 23, 2024
1 parent 1463430 commit 5e83751
Show file tree
Hide file tree
Showing 8 changed files with 218 additions and 1 deletion.
47 changes: 46 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions desktop/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,8 @@ serde_json = "1.0.113"
gtk = "0.18"
glib = "0.18"

[target.'cfg(target_os = "windows")'.build-dependencies]
embed-resource = "2.4.2"

[features]
console = []
5 changes: 5 additions & 0 deletions desktop/README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
# Desktop app
Crate containing source code for Windows/mac/linux app.

# Building

## Installer
cargo wix --package urldebloater
4 changes: 4 additions & 0 deletions desktop/build.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
fn main() {
#[cfg(windows)]
embed_resource::compile("./wix/urldebloater.rc", embed_resource::NONE);
}
Binary file added desktop/wix/icon.ico
Binary file not shown.
Binary file added desktop/wix/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
159 changes: 159 additions & 0 deletions desktop/wix/main.wxs
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
<?xml version='1.0' encoding='windows-1252'?>
<!--
Copyright (C) 2017 Christopher R. Field.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<!--
The "cargo wix" subcommand provides a variety of predefined variables available
for customization of this template. The values for each variable are set at
installer creation time. The following variables are available:
TargetTriple = The rustc target triple name.
TargetEnv = The rustc target environment. This is typically either
"msvc" or "gnu" depending on the toolchain downloaded and
installed.
TargetVendor = The rustc target vendor. This is typically "pc", but Rust
does support other vendors, like "uwp".
CargoTargetBinDir = The complete path to the directory containing the
binaries (exes) to include. The default would be
"target\release\". If an explicit rustc target triple is
used, i.e. cross-compiling, then the default path would
be "target\<CARGO_TARGET>\<CARGO_PROFILE>",
where "<CARGO_TARGET>" is replaced with the "CargoTarget"
variable value and "<CARGO_PROFILE>" is replaced with the
value from the "CargoProfile" variable. This can also
be overridden manually with the "target-bin-dir" flag.
CargoTargetDir = The path to the directory for the build artifacts, i.e.
"target".
CargoProfile = The cargo profile used to build the binaries
(usually "debug" or "release").
Version = The version for the installer. The default is the
"Major.Minor.Fix" semantic versioning number of the Rust
package.
-->

<!--
Please do not remove these pre-processor If-Else blocks. These are used with
the `cargo wix` subcommand to automatically determine the installation
destination for 32-bit versus 64-bit installers. Removal of these lines will
cause installation errors.
-->
<?if $(sys.BUILDARCH) = x64 or $(sys.BUILDARCH) = arm64?>
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder"?>
<?else?>
<?define PlatformProgramFilesFolder = "ProgramFilesFolder"?>
<?endif?>

<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product
Id='*'
Name='urldebloater'
UpgradeCode='7615702C-03D6-47B8-897F-C647D60178AE'
Manufacturer='makindotcc'
Language='1033'
Codepage='1252'
Version='$(var.Version)'>

<Package Id='*'
Keywords='Installer'
Description='An url debloater.'
Manufacturer='makindotcc'
InstallerVersion='450'
Languages='1033'
Compressed='yes'
InstallScope='perMachine'
SummaryCodepage='1252'
/>

<MajorUpgrade
Schedule='afterInstallInitialize'
DowngradeErrorMessage='A newer version of [ProductName] is already installed. Setup will now exit.' />

<Media Id='1' Cabinet='media1.cab' EmbedCab='yes' DiskPrompt='CD-ROM #1' />
<Property Id='DiskPrompt' Value='urldebloater Installation' />

<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='$(var.PlatformProgramFilesFolder)' Name='PFiles'>
<Directory Id='APPLICATIONFOLDER' Name='urldebloater'>
<Directory Id='Bin' Name='bin'>
<Component Id='binary0' Guid='*'>
<File
Id='exe0'
Name='urldebloater.exe'
DiskId='1'
Source='$(var.CargoTargetBinDir)\urldebloater.exe'
KeyPath='yes' />
</Component>
</Directory>
</Directory>
</Directory>

<Directory Id="ProgramMenuFolder">
<Directory Id="ApplicationProgramsFolder" Name="UrlDebloater" />
</Directory>
</Directory>

<DirectoryRef Id="ApplicationProgramsFolder">
<Component Id="ApplicationShortcut" Guid="a4167f42-c937-4f6b-988c-a26eeb49efbd">
<Shortcut Id="ApplicationStartMenuShortcut"
Name="UrlDebloater"
Description="An url debloater."
Target="[APPLICATIONFOLDER]bin\urldebloater.exe"
WorkingDirectory="APPLICATIONROOTDIRECTORY" />
<RemoveFolder Id="CleanUpShortCut" Directory="ApplicationProgramsFolder" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\makin\UrlDebloater" Name="installed"
Type="integer" Value="1" KeyPath="yes" />
</Component>
</DirectoryRef>

<Feature
Id='Binaries'
Title='Application'
Description='Installs all binaries and the license.'
Level='1'
ConfigurableDirectory='APPLICATIONFOLDER'
AllowAdvertise='no'
Display='expand'
Absent='disallow'>
<ComponentRef Id='binary0' />
<ComponentRef Id="ApplicationShortcut" />
</Feature>

<SetProperty Id='ARPINSTALLLOCATION' Value='[APPLICATIONFOLDER]' After='CostFinalize' />

<Icon Id='ProductICO' SourceFile='desktop\wix\icon.ico' />
<Property Id='ARPPRODUCTICON' Value='ProductICO' />

<UI>
<UIRef Id='WixUI_FeatureTree' />

<!--
Enabling the EULA dialog in the installer is a three step process:
1. Comment out or remove the two `Publish` tags that follow the
`WixVariable` tag.
2. Uncomment the `<WixVariable Id='WixUILicenseRtf' Value='Path\to\Eula.rft'>` tag further down
3. Replace the `Value` attribute of the `WixVariable` tag with
the path to a RTF file that will be used as the EULA and
displayed in the license agreement dialog.
-->
<Publish Dialog='WelcomeDlg' Control='Next' Event='NewDialog' Value='CustomizeDlg' Order='99'>
1</Publish>
<Publish Dialog='CustomizeDlg' Control='Back' Event='NewDialog' Value='WelcomeDlg' Order='99'>
1</Publish>

</UI>
</Product>
</Wix>
1 change: 1 addition & 0 deletions desktop/wix/urldebloater.rc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DEBLOATER_ICON ICON "icon.ico"

0 comments on commit 5e83751

Please sign in to comment.