I have a WiX 3 setup project, using VS 2017 community with Wix toolset v3.11, install the output using:
msiexec /i cient.setup.msi /lv output.log
everything is good. uninstalling using
msiexec /x cient.setup.msi /lv output.log
is fine also. BUT if I rebuild the WiS setup project and then try and uninstall using the above command, I get the error 1602 from the MSI output. which is "This action is only valid for projects that are currently installed"
Here is the content of my Product.wxs
file:
<?xml version="1.0" encoding="UTF-8"?>
<!-- The name of the product -->
<?define Name = "Notification Client" ?>
<!-- The manufacturer, for setup package publisher and folder info -->
<?define Manufacturer = "MyCompanies IT" ?>
<!-- The version number of this setup package-->
<?define Version = "1.0.1" ?>
<!-- UpgradeCode must be unique and not changed once the first version of the program is installed. -->
<?define UpgradeCode = "{GUID-HERE}" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<?define ClientService_TargetDir=$(var.ClientService.TargetDir)?>
<Product Id="*" Name="$(var.Name)" Manufacturer="$(var.Manufacturer)" Language="1033" Version="$(var.Version)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<Feature Id="ProductFeature" Title="Client.Setup" Level="1">
<ComponentGroupRef Id="ProductComponents" />
<ComponentRef Id="ApplicationShortcut" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="ROOTDIRECTORY" Name="$(var.Manufacturer)">
<Directory Id="INSTALLFOLDER" Name="$(var.Name)" />
<Component Feature="ProductFeature" Id="SetFolderPermissions" Guid="*">
<CreateFolder>
<util:PermissionEx User="Users" GenericAll="yes" />
</CreateFolder>
</Component>
</Directory>
</Directory>
<Directory Id="StartupFolder" SourceName="Startup"/>
</Directory>
</Fragment>
<Fragment>
<DirectoryRef Id="StartupFolder">
<Component Id="ApplicationShortcut" Guid="*">
<Shortcut Id="StartupShortcut"
Directory="StartupFolder"
Name="Notification Client"
Target="[INSTALLFOLDER]\NotificationClient.exe"
WorkingDirectory="INSTALLFOLDER"
/>
<RemoveFolder Id="CleanUpShortCut" Directory="StartupFolder" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\Microsoft\NotificationClient" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
<!-- <Component Id="ProductComponent"> -->
<!-- TODO: Insert files, registry keys, and other resources here. -->
<!-- </Component> -->
<Component Id="NotificationClient.exe" Guid="*">
<File Id="NotificationClient.exe" Name="NotificationClient.exe" Source="$(var.ClientService_TargetDir)NotificationClient.exe" DiskId="1" KeyPath="yes" />
</Component>
<Component Id="NotificationClient.exe.config" Guid="*">
<File Id="NotificationClient.exe.config" Name="NotificationClient.exe.config" Source="$(var.ClientService_TargetDir)NotificationClient.exe.config" KeyPath="no" />
</Component>
<Component Id="Newtonsoft.Json.dll" Guid="*">
<File Id="Newtonsoft.Json.dll" Name="Newtonsoft.Json.dll" Source="$(var.ClientService_TargetDir)Newtonsoft.Json.dll" KeyPath="no" />
</Component>
<Component Id="Notifications.dll" Guid="*">
<File Id="Notifications.dll" Name="Notifications.dll" Source="$(var.ClientService_TargetDir)Notifications.dll" KeyPath="no" />
</Component>
<Component Id="OHR_StdFunctions.dll" Guid="*">
<File Id="OHR_StdFunctions.dll" Name="OHR_StdFunctions.dll" Source="$(var.ClientService_TargetDir)OHR_StdFunctions.dll" KeyPath="no" />
</Component>
<Component Id="OHR_MSGraph.dll" Guid="*">
<File Id="OHR_MSGraph.dll" Name="OHR_MSGraph.dll" Source="$(var.ClientService_TargetDir)OHR_MSGraph.dll" KeyPath="no" />
</Component>
<Component Id="ServiceInstallation" Guid="*">
<!-- Remove all files from the INSTALLFOLDER on uninstall -->
<RemoveFile Id="ALLFILES" Name="*.*" On="both" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
I have a feeling it is to do with a GUID issue, but I have followed the guidelines in other posts about uppercasing GUIDs and having the product Id re-generate every time to ensure upgrades can be rolled out without issues.
I'm new to Wix (this is my first project) therefore please be kind! :)