Seb*_*ens 5 java eclipse ant javafx wix
我使用Eclipse 4.5.2来部署JavaFX应用程序(JDK 1.8).我想在安装过程中更改IniFile.Ant任务或JavaFX部署正在生成一个动态wxi文件,该文件将包含在wxs文件中.当我自定义我的wxs文件时,它在安装过程中什么都不做.
<?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>
Run Code Online (Sandbox Code Playgroud)
如你所见,有一部分 <?include bundle.wxi ?>
.这里将使用动态创建的bundle.wxi文件.
我尝试用wix inifile做这个=> <IniFile Id="ConfigFile" Action="removeLine" Directory="INSTALLDIR" Name="test.cfg" Section="Application" Key="app.runtime" />
我的问题是,我怎样才能改变IniFile?
当我查看MSI文件时,它不包含任何IniFile设置.
在安装时没有任何改变.在msi日志文件中,没有任何迹象表明存在任何变更.
我究竟做错了什么?
有没有办法通过自定义操作执行此操作?
是否有任何描述如何自定义使用JavaFX Packager部署的设置?
包含wxi文件,并且wxi文件中定义的所有文件都安装正确.但是我无法更改wxi文件,因为它是由编译器生成的.所以我必须更改wxs文件,但我不知道如何.
这是编译期间生成的wxi文件:
<?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>
Run Code Online (Sandbox Code Playgroud)
我尝试以多种方式更改wxs文件.看来,我的更改不知何故不包含在MSI包中.我添加了一个文件,注册表项和IniFile.但是MSI包中没有任何变化.
这是我当前的wxs文件:
<?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>
Run Code Online (Sandbox Code Playgroud)
我发现自己的问题是什么.该日志表明编译器使用的是默认的wxs文件而不是自定义的wxs文件.
配置文件保存到C:\ Users\xxx\AppData\Local\Temp\fxbundler5060494280971686435\windows.使用它们来自定义包.
使用默认包资源[WiX配置文件](将package/windows/test.wxs添加到类路径以进行自定义)
我在哪里必须在我的项目中添加/放置自定义wxs文件?
我的猜测是你的bundle.wxi 文件都在<Fragment>
标签内。您只需将一个添加<Property Id="BundleFile"/>
到生成的文件中,然后在主产品中添加一个<PropertyRef Id="BundleFile"/>
仅引用该文件不足以将其内容实际包含在最终输出中。预处理器将在编译之前检查并基本上重新组织您的代码。如果没有任何地方的引用或任何地方的引用链最终将片段链接到 wix 安装程序的主 <product> 标记,则该代码将被丢弃。这就是我假设当您尝试链接动态生成的 wxi 文件时发生的情况。您将其链接起来,然后预处理器会丢弃其中的所有内容,因为没有任何内容将其与您的主安装程序联系起来。
通常,您将使用 <Something Ref Id="IdOfSomething"/> 标签来引用片段中的某些内容,以便整个片段包含在您的主要产品中。
我再次阅读了这个问题,我不知道我最初写的是否适用。查看<? include ?>
标签,看起来这只是意味着预处理器将“/I file”放入编译器命令行中。它不会将文件插入到 wxs 中放置的位置。
您可能遇到的问题是您告诉安装程序 INI 文件位于 INSTALLDIR 中,但我没有看到您在任何地方设置或定义 INSTALLDIR。
归档时间: |
|
查看次数: |
438 次 |
最近记录: |