我们有一个使用WIX构建的Windows安装程序。它安装在某个服务器上。我们更改了一个文件夹的名称,但相应组件的GUID是相同的。然后我们进行卸载和安装。该文件夹是用旧名称创建的。我试图在Windows注册表中找到解决方案,但失败了。应该在系统上进行哪些清理以删除旧安装程序的痕迹?当然,更改组件的GUID、安装此文件夹是一种解决方法,但无需更改代码就可以实现。 最佳答案 更改名称需要更改组件GUID。任何其他行为都违反了组件规则。 关于当WindowsInstaller在已安装的旧版本中
例如,我有以下WIX标记指示MSI安装程序从包含的DLL调用自定义操作:并且DLL本身具有以下用于自定义操作的C++代码:#pragmacomment(linker,"/EXPORT:msiOnInstallFinalize=_msiOnInstallFinalize@4")extern"C"UINT__stdcallmsiOnInstallFinalize(MSIHANDLEhInstall){//Dotheworkif(doWork(hInstall)==FALSE){//Error,cannotcontinue!returnERROR_INSTALL_FAILURE;}retur
我很怀疑为什么我们不能使用wix以外的任何语言来创建msi安装程序。使用以下设置功能:Windows安装程序3.1WIX工具集 最佳答案 WindowsInstaller是一种Windows平台服务,由客户端、服务、API、数据库规范和SDK组成。主要的数据库类型是.MSI(安装程序)、.MSM(合并模块)、.MSP(补丁)、.MST(转换)、.CUB(单元测试).PCP(补丁源代码)等等忘记了。WindowsInstallerXML是一种XML/XSD语言和编译器,可将XML转换为WindowsInstaller数据库。还有其他工
如果用户从CMD和GUI运行MSI,我需要在安装程序中执行不同的操作。有人知道我如何在运行时区分MSI是从Windows资源管理器还是从CMD(无人值守安装)启动的吗?我需要知道这一点的原因是我需要让安装程序仅在设置了某些参数时在无人值守模式下执行,或者在用户同意我执行的操作时在UI模式下执行。 最佳答案 这是一种“部署味道”也就是“代码味道”。请解释需要做哪些不同的事情,以及为什么。可能有另一种方法可以达到相同的效果,但不会影响设置的核心。UILevelpropertyWindowsInstaller的会告诉您安装程序是否已静默启
我有一个WIXBurnBootstapper,但遇到了问题。在某些计算机上,它会安装链中的两个MSI文件。但是大多数时候它会跳过Chain中的第一个项目,就像它甚至不存在一样,有什么想法吗?具体来说,它不会安装IntelSDK。日志文件(有2个):LogFileLongLogFile(Verbose) 最佳答案 它认为它已经安装了:i101:Detectedpackage:IntelSDK,state:Present,cached:Complete如果它被检测为Present,它不会安装包。
我有一个在VisualStudio2012中构建的应用程序,其中一部分使用C#,一部分使用C++。应用程序的GUI使用第三方GUI控件。因此,我需要检查三个依赖项并将其安装在我的项目中:MicrosoftVisualC++可再发行组件.NET框架4.5GUI控件我的项目安装程序目前是使用WiX构建的。有没有办法让WiX执行以下操作?:在安装时检查是否存在(例如)C++可再发行组件,如果不存在则安装在卸载时删除这些组件(显然,当且仅当它们在安装时安装时)如果不是,我猜答案是创建另一个C#项目,它可以依次运行每个msi,但我希望能够通过WiX完成所有事情-这可能吗?如果是,怎么办?
我最近完成了我的第一个WixIntaller,但是我有一个问题,我的MSI文件只能在我的计算机上运行,我正在生成一个嵌入式CAB文件。我正在安装程序中注册一个DLL。我收到错误消息:“此Windows安装程序包存在问题。作为安装程序的一部分运行的程序未按预期完成。”这就是为什么我认为DLL是问题的一部分。我在下面有一些代码片段,如果您需要查看更多,请告诉我,谢谢!DLL安装的自定义操作:安装顺序:NOTInstalledREMOVE="ALL"NOTInstalledREMOVE="ALL" 最佳答案 此类注册失败通常是因为Dl
我有一个用WiX编写的简单msi,它安装了nativeNT服务。在我对msi进行一些更改后,它在StartServices标准操作中失败,并显示错误“服务无法启动,请验证您是否具有足够的权限”。如果我按忽略并手动启动该服务,则它会成功启动。问题绝对不是权限不足。我如何诊断/调试此类问题?WindowsInstaller的详细日志似乎不包含任何有用的信息。 最佳答案 安装程序不会有任何有用的信息,因为错误仅由安装程序显示。以下是我的处理方法。注释掉ServiceControl元素,这样安装程序就不会尝试启动该服务。运行安装程序并完成所
我们有产品A和产品A'。它们几乎相同并且很容易混淆。出于法律原因,有必要保持这些微妙的不同。由于技术原因,两者不可能共存并正确运行。因此,如果产品A'已经安装,我们希望阻止用户安装产品A,反之亦然。是否有在Windows上执行此操作的最佳实践?我最初的想法是为产品A和A'使用不同的升级代码,并以此来提示另一个已安装,但我确信还有其他方法和/或最佳实践。 最佳答案 我相信WindowsInstaller包开发人员能够做到这一点,而无需借助UsingPropertiesinConditionalStatements的自定义操作.Laun
我的wxs文件中的两个组件标签如下=602]]>但是我收到如下错误ICE08:Component:Comp.Comp2hasaduplicateGUID:{2963D8E7-CBEC-50C8-AF4B-65E895FE3283}尽管我给了一个autogenguid值“*”,我怎么会收到这个错误谢谢, 最佳答案 Component元素的star-GUID根据文件的目标位置计算稳定的GUID。GUID的稳定性对于future的更新(尤其是打补丁)至关重要。它在许多情况下都很好用,但将文件放入完全相同位置的互斥组件不是一个。在这种情况下