我刚开始学习如何使用WiX而且我遇到了麻烦.我的软件包使用第三方库,它需要在GAC和软件包安装目录中存在某些文件.
使用WiX,我可以使文件显示在安装目录或GAC中,但不能同时显示在两者中.
有什么方法可以解决这个问题吗?
我有一个WiX安装程序,它具有需要在卸载时执行的每个功能的自定义操作.现在,我遇到了一个问题,即无论用户是否实际安装了该功能,操作都会执行.自定义操作失败,因为他们希望存在某些资源,然后整个安装陷入破坏状态.
当且仅当正在卸载其相关功能时,运行自定义操作的正确方法是什么?我已经包含了我目前正在使用的片段,如果有帮助的话.
<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles"><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") AND (&FeatureName<=2)]]></Custom>
Run Code Online (Sandbox Code Playgroud) 现在我有以下几点:
1)一个java接口.
2),它的具体的java类不执行上述接口,但不包含的方法签名的接口中定义的方法中的每一个匹配.
由于我无法更改第2项的实现,因此我想知道是否可以创建一个方法来接受第1项的实例作为参数接受第2项而没有类强制转换异常.
感觉就像Spring中的各种编织/强制/ AOP机制应该使这成为可能,但我不知道该怎么做.
有没有办法让这种情况发生?
我目前正在学习WiX和Windows安装程序的变幻莫测,我遇到了绊脚石.
我目前正在打包的项目由六个不连续的块组成.现在让我们称它们为A,B,C,D,E和F.
块A是一组公共库和实用程序,每个其他项目都使用它们.它不提供任何最终用户功能.
块B是另一组需要Chunk A提供的功能的公共库和实用程序.这看起来很奇怪,但架构超出了我的影响或控制能力.
Chunk C是第三组公共库和实用程序,需要由块A和B提供的功能.这看起来比以前更奇怪,但我仍无法改变它.
块D,E和F都需要块A,B和C提供的功能.
如果可能的话,我想确保只有一个块A,B和C的安装,它们在D,E和F的安装中共享.我已经得到了块A,B,和C将保留稳定的API,以便在不破坏D,E或F功能的情况下升级它们.
我的想法是为A,B和C中的组件创建合并模块,然后在D,E和F的单独安装程序提供的功能中引用它们.这会使安装程序膨胀,但它会保证安装必要的组件.不幸的是,我担心升级时会导致Windows Installer验证内部出现问题.
我的另一个想法是为A,B和C制作一个安装程序,并通过ComponentSearch在D,E和F的安装程序中要求它.
这两种想法都有意义吗?如果这两个想法都没有意义,你对正确的方法有什么建议吗?
如果未向msiexec提供任何installlevel参数,Windows Installer Framework假定的默认值是什么?我的测试似乎表明1,但我找不到任何证实这一点的文件.