我从light.exe收到错误,表明它在我的安装项目中定位其中一个文件时遇到问题。在有问题的PC上,我使用的相对路径超过了260个字符。目前Wix设置如下:我遇到的问题是Wix安装项目位于D:\Path\To\ProjectFolder\WixInstaller\WixInstallerProject和\Path\To\Built\等文件夹中Executable\FoobarAppl10.exe存在于D:\Path\To\ProjectFolder文件夹下。当light.exe尝试解析路径时,最终结果为D:\Path\To\ProjectFolder\WixInstaller\WixI
有什么方法可以在第一个对话框(欢迎)出现时立即在WIX中执行自定义操作?要求是检查先决条件,其中一些需要自定义操作。自定义操作可以在我们单击下一个对话框时执行,但是标准的WIX先决条件是在我们的自定义先决条件之外确定的。(我们需要的自定义操作是检查IIS6元数据库兼容性是否已打开并且注册表搜索在具有32位安装程序的x64计算机上不起作用) 最佳答案 添加如下内容:1您可能需要放置其他标准操作而不是FindRelatedProducts。您只需在Orca中打开当前的msi即可查看InstallExecuteSequence。您可能
我们的主要安装程序正在调用另一个产品(产品B)安装程序这会在“添加删除程序”窗口中创建两个条目。当我卸载主要产品时,产品B没有从机器中删除。有没有一种方法可以在卸载主要产品时卸载产品B? 最佳答案 您可以尝试使用customaction使用这些设置:应该安排在InstallExecuteSequence中的InstallFinalize之后它应该使用这个条件:删除="全部"使用ExeCommand属性指定msiexec.exe卸载命令行(您将使用实际的ProductCode):msiexec.exe/x/qb将Return属性设置为
我想使用WIX创建一个Windows服务并为该服务设置一些参数(不是参数)。我指的是出现在System->[X]ControlSet->[ServiceName]->Parameters下的参数。任何人都知道我该怎么做?谢谢。 最佳答案 我通过手动添加我需要的注册表值来做到这一点,它工作正常:在Orca中检查生成的msi文件后,我认为它在创建服务之前创建注册表值。最好在创建后立即执行此操作,但它对我有用,所以我就到此为止了。 关于windows-使用WIX注册带有参数的Windows服务
我可以使用WiX设置64位注册表项来引用32位程序文件路径吗?我正在为另一个软件编写插件。我希望我的插件dll进入C:\ProgramFiles(x86)\MyPlugin\MyPlugin.dllnot在C:\ProgramFiles\MyPlugin\MyPlugin.dll因为dll是32位的,而不是64位的。但是,我需要注册表项才能进入HKLM/Software/Company/Product/Etc....不HKLM/Wow6432Node/Software/Company/Product/Etc....因为实际读取注册表项的进程是64位的。该64位进程读取注册表并启动32位
我有一个在WiX3.6中创建的MSI,它显然安装了各种东西并创建了一个exe的快捷方式,但我的MSI实际上没有安装它(我们确定该exe位于特定文件夹中,因为它已安装通过一个单独的MSI,这是我的MSI所需的先决条件)。我们创建的快捷方式传递了一些参数,这些参数实际上告诉exe使用我们刚刚安装的东西。一切正常,但我现在希望MSI使用与我们在快捷方式中使用的参数相同的参数自动运行exe。我尝试关注这篇文章-http://wixtoolset.org/documentation/manual/v3/howtos/ui_and_localization/run_program_after_in
我有一个文件,有32位版本和64位版本。如果我在32位机器上安装我的应用程序,我希望安装该文件的32位版本。同样,如果在64位机器上运行安装,则应安装64位版本。如何检查使用WiX运行安装程序的机器类型?拜托,没有一行答案。我正在寻找特定的WiX标签以及将它们放在我的WiX脚本中的什么位置。 最佳答案 你可以可能只做两个独立的组件,使用条件VersionNT64和NotVersionNT64但正确的方法是为32位和64位操作系统编译单独的安装程序,64位组件也应该这样标记(使用Win64="yes")——我不知道如果甚至可以将Win
我们有一个使用WIX安装程序的产品,只有我们的支持团队执行安装程序。用于升级应用程序的唯一方法包含两个步骤:删除已安装的任何以前版本的应用程序。我们有一个所有产品GUID的列表,我们可以通过它删除所有可能的版本(msiexec/xGUID)安装最新的本产品永远不会使用旧版本升级、修复或安装的场景(这是不可能的,因为部署是由脚本执行的)。如果我们不使用升级功能,是否有必要使所有新版本的产品ID唯一,或者是否可以保留相同的产品和升级ID? 最佳答案 来自ProductCodeproperty的文档:此ID必须因不同的版本和语言而异。因此
我正在尝试编写一个使用WiX防火墙扩展的WiX脚本,但它似乎没有找到扩展dll(我认为)。我看到的错误是这样的:TheFileelementcontainsanunhandledextensionelement'fire:FirewallException'.Pleaseensurethattheextensionforelementsinthe'http://schemas.microsoft.com/wix/FirewallExtension'namespacehasbeenprovided.我的WiX源代码的相关部分是这样的:如果我尝试使用regsrv32注册WixFirewal
我们有一个使用Wix创建的产品安装程序,其中包含一个程序包(“V1”)和一些配置文件。现在,我们将使用新的产品代码进行重大升级,其中旧版本的产品将被卸载并安装“V2”。我们想要的是保存其中一个配置文件免于卸载,因为V2也需要它。不幸的是,我们在交付V1时忘记设置Permanent="yes"选项(readthisquestion了解更多信息)。问题来了:有没有一种简单的方法可以防止卸载文件?当然,我们可以在脚本中添加一个自定义操作来在卸载前备份文件,并在卸载后添加另一个自定义操作来恢复它,但是恕我直言,这对于这个任务来说似乎有点过头了,并且可能会干扰MSI注册过程的其他部分.编辑:是的