I am using Eclipse 4.5.2 to deploy a JavaFX application (JDK 1.8). I want to change IniFile during installation. An Ant task or JavaFX deployment generates a dynamic wxi file that will be included in the wxs file. When I configure my wxs file, it does 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" /> <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" /> <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 <?include bundle.wxi ?> . This will use the dynamically generated bundle.wxi file.
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 in how can I change IniFile?
When I look at the MSI file, it does not contain any IniFile settings.
But nothing changed during the installation. The msi log file does not indicate any change to any change.
What am I doing wrong?
Is there a way to do this using custom actions?
Is there any description of customization deployed using JavaFX Packager?
EDIT
The wxi file is included and all files defined in the wxi file are installed correctly. But I can not modify the wxi file because it is generated by the compiler. Therefore, I need to modify the wxs file, but I do not know how to do this.
Here is the wxi file generated during compilation:
<?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 modify the wxs file in several ways. It seems that my changes are somehow not included in the MSI package. I added the 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" /> <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" /> <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 myself understood what the problem is. The log states that the compiler uses the default wxs file instead of the custom wxs file.
The configuration files are saved in the C: \ Users \ xxx \ AppData \ Local \ Temp \ fxbundler5060494280971686435 \ windows directory. Use them to customize the package.
Using the default package resource [WiX configuration file] (add the package /windows/test.wxs to the class path to configure)
Where should I add / place a custom wxs file in my project?