I am using Eclipse 4.5.2 to deploy JavaFX application (JDK 1.8). I want to change an IniFile during the installation. Ant task or JavaFX deploy is generating a dynamic wxi file which will be included in wxs file. When I customize my wxs file it is doing nothing during installation.
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="ca010b32-9fce-45aa-83f3-3a38f0903b26" Name="test"
Language="1033" Version="1.00"
Manufacturer="Test GmbH"
UpgradeCode="ab0ba5d0-6760-4c00-991d-75816e2409a7">
<Package Description="test" Comments="None"
InstallerVersion="200" Compressed="yes"
InstallScope="perUser" Platform="x86"/>
<Media Id="1" Cabinet="simple.cab" EmbedCab="yes" />
<!-- Check some requirements ONLY on "install", but not on modify or uninstall. -->
<Property Id="JAVA_CURRENT_VERSION">
<RegistrySearch Id="JRE_CURRENT_VERSION_REGSEARCH" Root="HKLM" Key="SOFTWARE\JavaSoft\Java Runtime Environment" Name="CurrentVersion" Type="raw" Win64="no" />
</Property>
<Condition Message="Java Runtime Environment (32 Bit) is not installed. Please install Oracle JRE."><![CDATA[(Installed OR JAVA_CURRENT_VERSION)]]></Condition>
<!-- We use RemoveFolderEx to ensure application folder is fully
removed on uninstall. Including files created outside of MSI
after application had been installed (e.g. on AU or user state).
Hovewer, RemoveFolderEx is only available in WiX 3.6,
we will comment it out if we running older WiX.
RemoveFolderEx requires that we "remember" the path for uninstall.
Read the path value and set the APPLICATIONFOLDER property with the value.
-->
<Property Id="APPLICATIONFOLDER">
<RegistrySearch Key="SOFTWARE\test GmbH\test"
Root="HKCU" Type="raw"
Id="APPLICATIONFOLDER_REGSEARCH" Name="Path" />
</Property>
<DirectoryRef Id="APPLICATIONFOLDER">
<Component Id="CleanupMainApplicationFolder" Guid="*" Win64="no">
<RemoveRegistryKey Id="RemoveValidationRegistryKeys" Action="removeOnUninstall" Root="HKCU" Key="Software\test GmbH"/>
<RegistryValue Root="HKCU"
Key="SOFTWARE\test GmbH\test"
Name="Path" Type="string" Value="[APPLICATIONFOLDER]"
KeyPath="yes" />
<!-- We need to use APPLICATIONFOLDER variable here or RemoveFolderEx
will not remove on "install". But only if WiX 3.6 is used. -->
<util:RemoveFolderEx On="uninstall" Property="APPLICATIONFOLDER" />
</Component>
</DirectoryRef>
<?include bundle.wxi ?>
<UI/>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Name="AppData" Id="LocalAppDataFolder">
<Directory Id="APPLICATIONFOLDER" Name="test">
<Directory Id="dirid6" Name="app">
<Component Id="comp1" DiskId="1" Guid="ec2f648f-05ec-4deb-bf65-b938e40209f4">
<IniFile Id="ConfigFile" Action="removeLine" Directory="INSTALLDIR" Name="test.cfg" Section="Application" Key="app.runtime" />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
<Icon Id="DesktopIcon.exe" SourceFile="test.ico" />
<Icon Id="StartMenuIcon.exe" SourceFile="test.ico" />
</Product>
</Wix>
As you can see there is a part <?include bundle.wxi ?>
. Here the dynamically created bundle.wxi file will be used.
I tried to do this with wix inifile => <IniFile Id="ConfigFile" Action="removeLine" Directory="INSTALLDIR" Name="test.cfg" Section="Application" Key="app.runtime" />
My Problem is, how can I change the IniFile?
When I look in the MSI file, it does not contain any IniFile settings.
And at installation there is nothing changed. In the msi log file there is no indication that there is any inifile changed.
What am I doing wrong?
Is there a way to do this with custom action?
Is there any description how to customize setup deployed with JavaFX Packager?
EDIT
The wxi file gets included and all files defined in wxi file are installed correct. But I cannot change the wxi file as it is generated by the compiler. So I have to change the wxs file, but I don't know how.
Here is the wxi file generated during compiling:
<?xml version="1.0" encoding="UTF-8" ?>
<Include>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Name="AppData" Id="LocalAppDataFolder">
<Directory Id="APPLICATIONFOLDER" Name="test">
<Component Id="comp0" DiskId="1" Guid="39ba98fa-6285-4336-8bd0-47ba5e16f622">
<CreateFolder/>
<RemoveFolder Id="RemoveDir0" On="uninstall" />
<RegistryKey Root="HKCU" Key="Software\test GmbH\test" Action="createAndRemoveOnUninstall">
<RegistryValue Name="Version" Value="1.6" Type="string" KeyPath="yes"/>
</RegistryKey>
<File Id="FileId1" Name="msvcp120.dll" Source="msvcp120.dll">
</File>
<File Id="FileId2" Name="msvcr100.dll" Source="msvcr100.dll">
</File>
<File Id="FileId3" Name="msvcr120.dll" Source="msvcr120.dll">
</File>
<File Id="LauncherId" Name="test.exe" Source="test.exe">
<Shortcut Id="desktopShortcut" Directory="DesktopFolder" Name="test" WorkingDirectory="INSTALLDIR" Advertise="no" Icon="DesktopIcon.exe" IconIndex="0" />
<Shortcut Id="ExeShortcut" Directory="ProgramMenuDir" Name="test" Advertise="no" Icon="StartMenuIcon.exe" IconIndex="0" />
</File>
<File Id="FileId4" Name="test.ico" Source="test.ico">
</File>
<File Id="FileId5" Name="packager.dll" Source="packager.dll">
</File>
</Component>
<Directory Id="dirid6" Name="app">
<Component Id="comp1" DiskId="1" Guid="ec2f648f-05ec-4deb-bf65-b938e40209f4">
<CreateFolder/>
<RemoveFolder Id="RemoveDir7" On="uninstall" />
<RegistryKey Root="HKCU" Key="Software\test GmbH\test" Action="createAndRemoveOnUninstall">
<RegistryValue Name="Version" Value="1.6" Type="string" KeyPath="yes"/>
</RegistryKey>
<File Id="FileId8" Name="jacob-1.18-M2-x86.dll" Source="app\jacob-1.18-M2-x86.dll">
</File>
<File Id="FileId9" Name="test.cfg" Source="app\test.cfg">
</File>
<File Id="FileId10" Name="test.jar" Source="app\test.jar">
</File>
</Component>
<Directory Id="dirid11" Name="libs">
<Component Id="comp2" DiskId="1" Guid="d41462cb-43f3-4705-94b6-20b30405a6dd">
<CreateFolder/>
<RemoveFolder Id="RemoveDir12" On="uninstall" />
<RegistryKey Root="HKCU" Key="Software\test GmbH\test" Action="createAndRemoveOnUninstall">
<RegistryValue Name="Version" Value="1.6" Type="string" KeyPath="yes"/>
</RegistryKey>
<File Id="FileId13" Name="bcprov-ext-jdk15on-152.jar" Source="app\libs\bcprov-ext-jdk15on-152.jar">
</File>
<File Id="FileId14" Name="jacob.jar" Source="app\libs\jacob.jar">
</File>
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
<Directory Id="DesktopFolder" />
<Directory Id="ProgramMenuFolder">
<Directory Id="ProgramMenuDir" Name="test GmbH">
<Component Id="comp3" Guid="b81b7415-1f39-47a9-9a99-435b3269bc7e">
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\test GmbH\test" Type="string" Value="" />
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="DefaultFeature" Title="Main Feature" Level="1">
<ComponentRef Id="comp0" />
<ComponentRef Id="comp1" />
<ComponentRef Id="comp2" />
<ComponentRef Id="comp3" />
<ComponentRef Id="CleanupMainApplicationFolder" />
</Feature>
</Include>
EDIT 2
I tried to changed the wxs file in several ways. It seems, that my changes somehow are not included in MSI package. I added a file, registry keys and IniFile. But nothing changes in the MSI package.
Here is my current wxs file:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="ca010b32-9fce-45aa-83f3-3a38f0903b26" Name="test" Language="1033" Version="1.00" Manufacturer="test GmbH" UpgradeCode="ab0ba5d0-6760-4c00-991d-75816e2409a7">
<Package Description="test" Comments="None" InstallerVersion="200" Compressed="yes" InstallScope="perUser" Platform="x86" />
<Media Id="1" Cabinet="simple.cab" EmbedCab="yes" />
<!-- Check some requirements ONLY on "install", but not on modify or uninstall. -->
<Property Id="JAVA_CURRENT_VERSION">
<RegistrySearch Id="JRE_CURRENT_VERSION_REGSEARCH" Root="HKLM" Key="SOFTWARE\JavaSoft\Java Runtime Environment" Name="CurrentVersion" Type="raw" Win64="no" />
</Property>
<Condition Message="Java Runtime Environment (32 Bit) is not installed. Please install Oracle JRE."><![CDATA[(Installed OR JAVA_CURRENT_VERSION)]]></Condition>
<Property Id="APPLICATIONFOLDER">
<RegistrySearch Key="SOFTWARE\test GmbH\test" Root="HKCU" Type="raw" Id="APPLICATIONFOLDER_REGSEARCH" Name="Path" />
</Property>
<DirectoryRef Id="APPLICATIONFOLDER">
<Component Id="CleanupMainApplicationFolder" Guid="*" Win64="no">
<RemoveRegistryKey Id="RemoveValidationRegistryKeys" Action="removeOnUninstall" Root="HKCU" Key="Software\test GmbH" />
<RegistryValue Root="HKCU" Key="SOFTWARE\test GmbH\test" Name="Path" Type="string" Value="[APPLICATIONFOLDER]" KeyPath="yes" />
<!-- We need to use APPLICATIONFOLDER variable here or RemoveFolderEx
will not remove on "install". But only if WiX 3.6 is used. -->
<util:RemoveFolderEx On="uninstall" Property="APPLICATIONFOLDER" />
<IniFile Id="ConfigFile" Action="removeLine" Key="app.runtime" Name="test.cfg" Section="Application" Directory="dirid6" />
</Component>
</DirectoryRef>
<DirectoryRef Id="dirid6">
<Component>
<IniFile Id="ConfigFileasasd" Action="removeLine" Key="app.runtime" Name="test.cfg" Section="Application" Directory="dirid6" />
<RegistryValue Key="SOFTWARE\test GmbH\test" KeyPath="yes" Root="HKCU" Value="[APPLICATIONFOLDER]" Type="string" Name="Path2" />
</Component>
</DirectoryRef>
<?include bundle.wxi ?>
<UI />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Name="AppData" Id="LocalAppDataFolder">
<Directory Id="APPLICATIONFOLDER" Name="test">
<Directory Id="dirid6" Name="app">
<Component Id="comp1" DiskId="1" Guid="ec2f648f-05ec-4deb-bf65-b938e40209f4">
<IniFile Id="ConfigFile" Action="addLine" Directory="INSTALLDIR" Name="test.cfg" Section="Application" Key="app.runtime" />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
<Icon Id="DesktopIcon.exe" SourceFile="test.ico" />
<Icon Id="StartMenuIcon.exe" SourceFile="test.ico" />
</Product>
</Wix>
EDIT 3
I found out myself what the problem is. The log states that the compiler is using default wxs file instead of custom wxs file.
Config files are saved to C:\Users\xxx\AppData\Local\Temp\fxbundler5060494280971686435\windows. Use them to customize package.
Using default package resource [WiX config file] (add package/windows/test.wxs to the class path to customize)
Where do I have to add/place the custom wxs file in my project?