Is your key path and/or component ids changing with each new installer? Open up two versions of your installer in Orca, and for any given file that isn't there after the major upgrade compare the component ID's.
-----Original Message----- From: Dave Moss [mailto:davidm...@omprompt.com] Sent: Thursday, May 23, 2013 4:21 AM To: wix-users@lists.sourceforge.net Subject: [WiX-users] Major upgrade using bootstrapper issue -HELP!! Hi, I am pretty new to the world of WiX but have found it to be a very useful tool. I am having the following issue however and after 2 days of googling it is driving me nuts. I have a bootstrapper that install .net 4.0 if required and then installs my msipackage. I opted for the major upgrade everytime when making changes to the files installed. Each of my executable files have their version number updated to the current revision number in SVN. When I install my application the first time it installs fine and all the services are started and installed and all the required files are there. When I run the next version of the installer (so a major upgrade) it seems to be installing the new msi and then uninstalling the old one. At this point all that is left on my machine is the service executables and nothing else, all the other files have been removed including the .exe.config files rendering the application useless. Any ideas what I am doing wrong, its driving me crazy!!! Here is my bundle.wxs <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Bundle Name="Document Converters" Version="$(var.Version)" Manufacturer="company name" UpgradeCode="UPGRADE-GUID" Condition="((VersionNT >= v5.1) AND (ServicePackLevel >= 3)) OR ((VersionNT >= v5.2) AND (ServicePackLevel >= 2)) OR (VersionNT >= v6.0)"> <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense" /> <WixVariable Id="WixStdbaLogo" Value="Resource\logo.png" /> <WixVariable Id="WixStdbaLicenseUrl" Value="" /> <Variable Name="InstallFolder" Type="string" Value="[WindowsVolume]company name\application" /> <Variable Name="LaunchTarget" Value="[InstallFolder]\application.exe"/> <Chain> <PackageGroupRef Id="NetFx40Redist" /> <RollbackBoundary /> <MsiPackage Id="WIXConverterInstaller" Compressed="yes" SourceFile="$(var.WIXConverterInstaller.TargetPath)" Vital="yes"> <MsiProperty Name="INSTALLFOLDER" Value="[InstallFolder]" /> </MsiPackage> </Chain> </Bundle> </Wix> Here is my bootstrapper project file. <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">x86</Platform> <ProductVersion>3.7</ProductVersion> <ProjectGuid>{7ae67f4b-d014-4008-9373-35cb5aeffb36}</ProjectGuid> <SchemaVersion>2.0</SchemaVersion> <OutputName>DocumentConverterInstallerV2.8-B$(BuildNo)</OutputName> <OutputType>Bundle</OutputType> <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath> <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath> <Name>DocumentConverterInstaller</Name> <Version> </Version> <BuildNo Condition=" '$(BuildNo)' == ''">1</BuildNo> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <OutputPath>bin\$(Configuration)\</OutputPath> <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> <DefineConstants>Debug</DefineConstants> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> <OutputPath>bin\$(Configuration)\</OutputPath> <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> </PropertyGroup> <ItemGroup> <Compile Include="Bundle.wxs" /> </ItemGroup> <ItemGroup> <WixExtension Include="WixUtilExtension"> <HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath> <Name>WixUtilExtension</Name> </WixExtension> <WixExtension Include="WixNetFxExtension"> <HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath> <Name>WixNetFxExtension</Name> </WixExtension> <WixExtension Include="WixBalExtension"> <HintPath>$(WixExtDir)\WixBalExtension.dll</HintPath> <Name>WixBalExtension</Name> </WixExtension> </ItemGroup> <ItemGroup> <ProjectReference Include="..\WIXConverterInstaller\WIXConverterInstaller.wixproj"> <Name>WIXConverterInstaller</Name> <Project>{a4305231-d2e0-4e1c-9516-a252cd697195}</Project> <Private>True</Private> <DoNotHarvest>True</DoNotHarvest> <RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups> <RefTargetDir>INSTALLFOLDER</RefTargetDir> </ProjectReference> </ItemGroup> <ItemGroup> <Folder Include="Resource" /> </ItemGroup> <ItemGroup> <Content Include="Resource\logo.png" /> </ItemGroup> <Import Project="$(WixTargetsPath)" /> <Target Name="BeforeBuild"> <PropertyGroup> <DefineConstants>Version=2.8.$(BuildNo).0</DefineConstants> </PropertyGroup> </Target> <!-- <Target Name="BeforeBuild"> </Target> <Target Name="AfterBuild"> </Target> --> </Project> Here is my product.wxs (there is also and appfiles.wxs which is autogenerated by heat and referenced in the product.wxs) <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="*" Name="Document Converters" Language="1033" Version="$(var.Version)" Manufacturer="OmPrompt" UpgradeCode="C50A2027-E77A-43AE-B891-7F0B7FB6389F"> <Package Id="*" InstallerVersion="301" Compressed="yes" InstallScope="perMachine" Keywords="Installer" Description="Document Converter installer" /> <MajorUpgrade Schedule='afterInstallInitialize' DowngradeErrorMessage="A newer version of [ProductName] is already installed. Setup will now exit." /> <MediaTemplate EmbedCab="yes" /> <Feature Id="ProductFeature" Title="WIXConverterInstaller" Level="1"> <ComponentGroupRef Id="ServicesExecutables" /> <ComponentGroupRef Id="AppFiles" /> <ComponentRef Id="ApplicationShortcutDesktop"/> <ComponentRef Id="AppMenuShortcutComponent" /> </Feature> </Product> <Fragment> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="DesktopFolder" Name="Desktop"> <Component Id="ApplicationShortcutDesktop" Guid="814088EA-67DE-4204-BA61-4468834A6514"> <Shortcut Id="ApplicationDesktopShortcut" Name="Converter Controller" Description="Starts the converter controller application" Target="[INSTALLFOLDER]ConverterController.exe" WorkingDirectory="INSTALLFOLDER"/> <RemoveFolder Id="DesktopFolder" On="uninstall"/> <RegistryValue Root="HKCU" Key="Software/OmPrompt/DocumentConverters" Name="installed" Type="integer" Value="1" KeyPath="yes"/> </Component> </Directory> <Directory Id="ProgramMenuFolder"> <Directory Id="ShortcutFolder" Name="Document Converters"> <Component Id="AppMenuShortcutComponent" Guid="CF36B368-D225-40A4-8AA0-A6248DE86029"> <RegistryValue Name="installed" Type="integer" Value="1" KeyPath="yes" Root="HKCU" Key="Software/OmPrompt/DocumentConverters/menushortcut"/> <Shortcut Id="AppMenuShortcut" Name="Converter Controller" Description="Starts the converter controller application" Target="[INSTALLFOLDER]ConverterController.exe" WorkingDirectory="INSTALLFOLDER"/> <RemoveFolder Id="RemoveShorcutFolder" On="uninstall" /> </Component> </Directory> </Directory> <Directory Id="INSTALLFOLDER" Name="Document Converters" /> </Directory> </Fragment> <Fragment> <ComponentGroup Id="ServicesExecutables" Directory="INSTALLFOLDER"> <Component Id="OmpMessageServerService" Guid="{68C84145-94FD-4150-823A-E24BF4B24565}"> <CreateFolder /> <File Id="OmpMessageServerExecutable" KeyPath="yes" Source="$(var.BasePath)\OmpMessageServer.exe" /> <ServiceInstall Id="OmpMessageServerServiceInstaller" Type="ownProcess" Vital="yes" Name="OmpMessageServerService" DisplayName="OmpMessageServer" Description="Service to control the message flows between ConverterController and the converters." Start="auto" Account="LocalSystem" ErrorControl="ignore" Interactive="yes" /> <ServiceControl Id="StartOmpMessageServerService" Start="install" Stop="both" Remove="uninstall" Name="OmpMessageServerService" Wait="yes" /> </Component> <Component Id="OmpCSVtoDOCService" Guid="{B3036364-D4B0-406F-8D75-B2C932589C5E}"> <CreateFolder /> <File Id="OmpCSVtoDOCExecutable" KeyPath="yes" Source="$(var.BasePath)\OmpCSVtoDOC.exe" /> <ServiceInstall Id="OmpCSVtoDOCServiceInstaller" Type="ownProcess" Vital="yes" Name="OmpCSVtoDOCService" DisplayName="OmpCSVtoDOC" Description="The CSV to DOC Converter." Start="auto" Account="LocalSystem" ErrorControl="ignore" Interactive="yes" /> <ServiceControl Id="StartOmpCSVtoDOCService" Start="install" Stop="both" Remove="uninstall" Name="OmpCSVtoDOCService" Wait="yes" /> </Component> <Component Id="OmpCSVtoXLSService" Guid="{F7F435DA-413B-474A-B1AB-9D662E5F6E6B}"> <CreateFolder /> <File Id="OmpCSVtoXLSExecutable" KeyPath="yes" Source="$(var.BasePath)\OmpCSVtoXLS.exe" /> <ServiceInstall Id="OmpCSVtoXLSServiceInstaller" Type="ownProcess" Vital="yes" Name="OmpCSVtoXLSService" DisplayName="OmpCSVtoXLS" Description="The CSV to XLS converter." Start="auto" Account="LocalSystem" ErrorControl="ignore" Interactive="yes" /> <ServiceControl Id="StartOmpCSVtoXLSService" Start="install" Stop="both" Remove="uninstall" Name="OmpCSVtoXLSService" Wait="yes" /> </Component> <Component Id="OmpDOCtoTXTService" Guid="{F5F87BF3-0F29-40F2-A135-E77AEC887CE6}"> <CreateFolder /> <File Id="OmpDOCtoTXTExecutable" KeyPath="yes" Source="$(var.BasePath)\OmpDOCtoTXT.exe" /> <ServiceInstall Id="OmpDOCtoTXTServiceInstaller" Type="ownProcess" Vital="yes" Name="OmpDOCtoTXTService" DisplayName="OmpDOCtoTXT" Description="The DOC to TXT converter." Start="auto" Account="LocalSystem" ErrorControl="ignore" Interactive="yes" /> <ServiceControl Id="StartOmpDOCtoTXTService" Start="install" Stop="both" Remove="uninstall" Name="OmpDOCtoTXTService" Wait="yes" /> </Component> <Component Id="OmpPDFtoTXTService" Guid="{4A41D81B-19EA-4646-A926-EB4037CB080B}"> <CreateFolder /> <File Id="OmpPDFtoTXTExecutable" KeyPath="yes" Source="$(var.BasePath)\OmpPDFtoTXT.exe" /> <ServiceInstall Id="OmpPDFtoTXTServiceInstaller" Type="ownProcess" Vital="yes" Name="OmpPDFtoTXTService" DisplayName="OmpPDFtoTXT" Description="The PDF to TXT converter." Start="auto" Account="LocalSystem" ErrorControl="ignore" Interactive="yes" /> <ServiceControl Id="StartOmpPDFtoTXTService" Start="install" Stop="both" Remove="uninstall" Name="OmpPDFtoTXTService" Wait="yes" /> </Component> <Component Id="OmpPrintService" Guid="{BAA3F918-4F3D-49F4-9DB3-D5547E5E29F1}"> <CreateFolder /> <File Id="OmpPrintExecutable" KeyPath="yes" Source="$(var.BasePath)\OmpPrint.exe" /> <ServiceInstall Id="OmpPrintServiceInstaller" Type="ownProcess" Vital="yes" Name="OmpPrintService" DisplayName="OmpPrint" Description="The print converter." Start="auto" Account="LocalSystem" ErrorControl="ignore" Interactive="yes" /> <ServiceControl Id="StartOmpPrintService" Start="install" Stop="both" Remove="uninstall" Name="OmpPrintService" Wait="yes" /> </Component> <Component Id="OmpXLStoCSVService" Guid="{AA0CC97B-3A3C-4A8A-A132-348BC8AE474A}"> <CreateFolder /> <File Id="OmpXLStoCSVExecutable" KeyPath="yes" Source="$(var.BasePath)\OmpXLStoCSV.exe" /> <ServiceInstall Id="OmpXLStoCSVServiceInstaller" Type="ownProcess" Vital="yes" Name="OmpXLStoCSVService" DisplayName="OmpXLStoCSV" Description="The XLS to CSV converter." Start="auto" Account="LocalSystem" ErrorControl="ignore" Interactive="yes" /> <ServiceControl Id="StartOmpXLStoCSVService" Start="install" Stop="both" Remove="uninstall" Name="OmpXLStoCSVService" Wait="yes" /> </Component> <Component Id="OmpXMLtoPDFService" Guid="{AE5B5080-C149-4C6C-BCE5-AC4A8283D0BA}"> <CreateFolder /> <File Id="OmpXMLtoPDFExecutable" KeyPath="yes" Source="$(var.BasePath)\OmpXMLtoPDF.exe" /> <ServiceInstall Id="OmpXMLtoPDFServiceInstaller" Type="ownProcess" Vital="yes" Name="OmpXMLtoPDFService" DisplayName="OmpXMLtoPDF" Description="The XML to PDF converter." Start="auto" Account="LocalSystem" ErrorControl="ignore" Interactive="yes" /> <ServiceControl Id="StartOmpXMLtoPDFService" Start="install" Stop="both" Remove="uninstall" Name="OmpXMLtoPDFService" Wait="yes" /> </Component> </ComponentGroup> </Fragment> </Wix> Here is my application WiX project <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">x86</Platform> <ProductVersion>3.7</ProductVersion> <ProjectGuid>{a4305231-d2e0-4e1c-9516-a252cd697195}</ProjectGuid> <SchemaVersion>2.0</SchemaVersion> <OutputName>WIXConverterInstaller</OutputName> <OutputType>Package</OutputType> <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath> <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath> <SccProjectName>Svn</SccProjectName> <SccProvider>SubversionScc</SccProvider> <SccAuxPath>Svn</SccAuxPath> <SccLocalPath>Svn</SccLocalPath> <Version> </Version> <BuildNo Condition=" '$(BuildNo)' == ''">1</BuildNo> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <OutputPath>bin\$(Configuration)\</OutputPath> <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> <DefineConstants>Debug</DefineConstants> <WixVariables> </WixVariables> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> <OutputPath>bin\$(Configuration)\</OutputPath> <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> </PropertyGroup> <ItemGroup> <Compile Include="Product.wxs" /> <Compile Include="AppFiles.wxs" /> </ItemGroup> <ItemGroup> <Content Include="AppFilesTransform.xslt" /> </ItemGroup> <Import Project="$(WixTargetsPath)" /> <Target Name="BeforeBuild"> <PropertyGroup> <DefineConstants>BasePath=$(SolutionDir)BuildFiles\;Version=2.8.$(BuildNo).0</DefineConstants> </PropertyGroup> <HeatDirectory OutputFile="AppFiles-temp.xml" Directory="$(SolutionDir)BuildFiles\" DirectoryRefId="INSTALLFOLDER" ComponentGroupName="AppFiles" SuppressCom="true" SuppressFragments="true" SuppressRegistry="true" SuppressRootDirectory="true" AutoGenerateGuids="false" GenerateGuidsNow="true" ToolPath="$(WixToolPath)" PreprocessorVariable="var.BasePath" /> <XslTransformation XmlInputPaths="AppFiles-temp.xml" XslInputPath="AppFilesTransform.xslt" OutputPaths="AppFiles.wxs" /> </Target> <Target Name="AfterBuild"> </Target> <PropertyGroup> <PreBuildEvent /> </PropertyGroup> </Project> I use a transform on the heat generated file to remove my service executables as they are defined in the product.wxs If anyone can help me resolve this I will be eternally grateful, if you need to see logs from the upgrade install just let me know. Thanks in advance Dave Moss ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users