有关使用Windows Installer XML,版本3进行部署的问题。
WiX:在 WiX 4 中实施重大升级,以使用 WiX 3 构建安装程序
我在 WiX v3.11 安装程序中进行了重大升级,遵循本教程并学习了很多内容(仅限德语)。 但现在 WiX 4 来了,我想尝试从 2.0.0 开始更新(b...
我有一个安装程序需要更改 app.config 中的 bindingRedirect 值。目前,我有: 我有一个安装程序需要更改 app.config 中的 bindingRedirect 值。目前,我有: <util:XmlFile Id="Config" Action="setValue" ElementPath="configuration/runtime/assemblyBinding/dependentAssembly/assemblyIdentity[\[]@publicKeyToken='89845dcd8080cc91'[\]]/bindingRedirect/@newVersion" File="[INSTALLFOLDER]\app.config" Value="13.0.0.0"/> 但这会引发错误,因为它找不到节点。我猜这是因为 BindingRedirect 不是 assemblyIdentity 的子元素。 我将如何更新 newVersion 字段? 谢谢 您的元素路径不正确。这不是有效的 XPath 查询(具有特定于 msi 的转义)。您可能需要一个前导的正斜杠。 这就是这个问题的解决方案,如果其他人也遇到这个问题! <util:XmlFile Id="Config" Action="setValue" ElementPath="configuration/runtime/assemblyBinding/dependentAssembly[\[]assemblyIdentity/@publicKeyToken='89845dcd8080cc91'[\]]/bindingRedirect/@newVersion" File="[INSTALLFOLDER]\app.config" Value="13.0.0.0"/> 并且配置文件中的 assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" 需要更改为 assemblyBinding @JWoodley13,你是我的英雄,非常感谢你的回答。 为了使其与 WiX v4.0.2 一起使用,我还需要安装全局工具并安装 WixToolset.Util.wixext 扩展,然后才能在 .wixproj 中将其作为 PackageReference 引用。 在命令行上: dotnet tool install --global wix --version 4.0.2 wix extension add -g WixToolset.Util.wixext 在.wixproj中: <ItemGroup> <PackageReference Include="WixToolset.Util.wixext" Version="4.0.2" /> </ItemGroup> 在 .wxs 文件中,导入更新的 wxs 和 wxs/util 命名空间: <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> 我也调整了 xpath 以使用包名称: <Component Id="ChangeConfig" Guid="18C80C2F-D0CC-486D-A80A-23646BBAB8FF"> <util:XmlFile Id="Config" Action="setValue" ElementPath="configuration/runtime/assemblyBinding/dependentAssembly[\[]assemblyIdentity/@name='Newtonsoft.Json'[\]]/bindingRedirect/@newVersion" File="[INSTALLFOLDER]\app.config" Value="13.0.0.0"/> </Component>
使用 WixQuietExec 静默执行 Powershell 脚本
我是使用 WixToolset 的新手,我正在尝试使用 WixQuietExec 执行 ps1 文件 - https://wixtoolset.org/docs/v3/customactions/qtexec/。如果我直接使用
在使用 Wix3 生成安装程序的遗留应用程序上工作,我想在 C++ 中实现一个自定义操作,该操作将对 libcurl 进行一些调用。问题是 libcurl 有一些依赖性......
Wix 工具集 3.11.2 - 本地化标识符“xx”已在多个位置重复。请解决冲突
这是我使用 Wix Toolset 和 Visual Stdio 的第一个项目 - 我不算带有“Hello World”类型应用程序的简单教程。 在我当前的项目中,我只有一个本地化文件,
使用 Wix V3 打包 Windows 窗体桌面应用程序时出现 ICE 18 和 ICE50 错误
我的应用程序有这个wix代码 - 我的应用程序有这个wix代码- <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="*" Name="Viveks_Alarm_Clock" Language="1033" Version="1.0.0.0" Manufacturer="Vivek Singh" UpgradeCode="68c68d32-7939-426c-97e5-c329f58c2076"> <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> <MediaTemplate /> <Feature Id="ProductFeature" Title="Viveks_Alarm_Clock" Level="1"> <ComponentGroupRef Id="ProductComponents" /> </Feature> <Icon Id="AlarmClockIconFile" SourceFile="..\Alarm Clock\alarmclock_alarm_3338.ico"/> </Product> <Fragment> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLFOLDER" Name="Viveks_Alarm_Clock"> <Component Id="ApplicationFiles" Guid="95158faf-49c8-4efc-83b0-4e2bcb0cf367"> <File Id="AlarmClockExe" Source="..\Alarm Clock\bin\Debug\Alarm Clock.exe" KeyPath="yes"/> </Component> <Component Id="ShortcutAndIconFiles" Guid="77640577-6144-4007-a287-a37f921dcdb5"> <Shortcut Id="startmenuViveks_Alarm_Clock" Directory="ProgramMenuFolder" Name="Vivek's Alarm Clock" WorkingDirectory="INSTALLFOLDER" Icon="AlarmClockIconFile" IconIndex="0" Advertise="yes" /> <Shortcut Id="desktopViveks_Alarm_Clock" Directory="DesktopFolder" Name="Vivek's Alarm Clock" WorkingDirectory="INSTALLFOLDER" Icon="AlarmClockIconFile" IconIndex="0" Advertise="yes" /> </Component> </Directory> </Directory> <Directory Id="ProgramMenuFolder" Name="Programs" /> <Directory Id="DesktopFolder" Name="Desktop" /> </Directory> </Fragment> <Fragment> <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> <ComponentRef Id="ApplicationFiles"/> <ComponentRef Id="ShortcutAndIconFiles"/> </ComponentGroup> </Fragment> </Wix> 现在我收到 ICE18 和 ICE50 错误 严重性代码描述项目文件行抑制状态 错误 ICE50:组件“ShortcutAndIconFiles”具有广告的快捷方式,但 KeyPath 为空。 Vivek 的闹钟 C:\Users ivek.singh\source epos\Vivek 的闹钟\Product.wxs 20 严重性代码描述项目文件行抑制状态 错误 ICE18:组件的 KeyPath:“ShortcutAndIconFiles”是目录:“INSTALLFOLDER”。目录/组件对必须列在 CreateFolders 表中。 Vivek 的闹钟 C:\Users ivek.singh\source epos\Vivek 的闹钟\Product.wxs 20 严重性代码描述项目文件行抑制状态 错误 ICE50:组件“ShortcutAndIconFiles”具有广告的快捷方式,但 KeyPath 为空。 Vivek 的闹钟 C:\Users ivek.singh\source epos\Vivek 的闹钟\Product.wxs 20 我该如何解决这些问题?我已经尝试了一切。我正在将 wix Tooset v3 扩展与 Visual Studio 2022 社区版一起使用。我在打包我使用 C# Windows 窗体桌面应用程序为自己创建的闹钟应用程序时遇到了这个问题 我尝试更改文件路径,它们是绝对的,所以我将其设置为相对的。我以多种方式使用树结构,例如将标签放置在标签内等等。我遵循了 wix 指南预期的结构,但似乎没有任何效果 广告的快捷方式必须与快捷方式目标文件放置在同一组件中。因此,将两个快捷方式元素移动到 ApplicationFiles 组件中,这些错误就会消失。
我有一个基于 WiX 3.11 的捆绑安装程序,其中包含托管引导程序应用程序。 我想在升级过程中删除相关捆绑包后,在安装程序结束时执行清理操作。
我有以下 WiX 捆绑链: 我有以下 WiX 捆绑链: <Chain> <ExePackage Id="epVisualCPP2013Redist" SourceFile="$(var.Visual2013CPPRedistDir)vcredist_x64.exe" Permanent="yes" Vital="yes" Cache="no" Compressed="yes" PerMachine="yes" DetectCondition="0" InstallCondition="1"/> <MsiPackage Id="mpTestMsiPackage" SourceFile="$(var.TestMsiPackage.TargetPath)" Vital="yes" Visible="yes" LogPathVariable="LogLocation" Permanent="no" Compressed="yes"/> </Chain> 在这种情况下,我尝试强制安装 Visual C++ 2013 Redistributable Package (vcredist_x64.exe)。问题是,它永远不会被安装,与 DetectCondition 或 InstallCondition 的设置无关(包括我省略它们的情况)。带有 Id="mpTestMsiPackage" 的软件包已正确安装。 注意:我已经可以检测是否是redist。软件包是否已安装。此时适当设置条件是次要的。目前,我希望能够强制执行 redist。始终安装软件包。 检查日志,我发现以下条目: [D0D8:CE50][2023-08-19T01:05:38]i101: Detected package: epVisualCPP2013Redist, state: Absent, cached: None ... [D0D8:CE50][2023-08-19T01:05:41]w321: Skipping dependency registration on package with no dependency providers: epVisualCPP2013Redist ... [D0D8:CE50][2023-08-19T01:05:41]i201: Planned package: epVisualCPP2013Redist, state: Absent, default requested: Present, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: None 如果我在 Bootstrapper 应用程序中执行以下操作,它将根据需要进行安装: private void bootstrapperApplication_PlanPackageBegin(object sender, PlanPackageBeginEventArgs e) { if (e.PackageId == "epVisualCPP2013Redist") e.State = RequestState.Present; } 我错过了什么? ExePackage 是否配置不正确或者我在 Bootstrapper 应用程序中遗漏了某些内容? 非常感谢任何帮助! 捆绑日志非常清晰: [D0D8:CE50][2023-08-19T01:05:41]i201: Planned package: epVisualCPP2013Redist, state: Absent, default requested: Present, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: None 这部分意味着 ba requested: None 您的 BoostrapperApplication 代码正在强制包Absent。您没有提供足够的代码来理解为什么会发生这种情况,但是去调试您的 BA。
我一直在修改我的安装项目中的一些 WiX 脚本。当我想声明新的字符串资源并修改现有的字符串资源时,我正在寻找项目中使用的现有字符串资源。 我当时……
是否可以使用 Harvest Tool (Heat) 和 wxs 将文件从一个文件夹复制到另一个文件夹
我有一个场景,根据用户的选择,安装时将几个 dll 复制到特定文件夹。我正在尝试使用 Harvest Tool (Heat) 生成输出。每次加热它
无法使用 Wix 工具集在我的 Virtual Box 上安装 dotnet 4.8
我已经构建了一个 msi,它将使用 wix 工具集安装 dotnet 4.8,但是在安装过程中它给出了一些其他安装正在运行的错误,所以为什么如果我无法安装它...
如何使用 Wix 创建自定义 VerifyReadyDlg?
如何在 Wix 设置中创建这样的对话框?它是在 Inno Setup 中默认实现的,但我现在正在考虑如何在 Wix 中执行相同的操作。我的主要问题是如何通过描述
Wix InstallExecuteSequence在支持第47个msi实例时抛出错误。
在支持第47个实例时抛出了该错误。如果我删除SetMyInstance_Instance47这个动作,它就能正常运行。我需要支持100个实例。代码片段如下。
具有第三方msi的ProductCode和UpgradeCode,如何在安装我的产品时强制卸载msi
通过测试,我发现第三方软件的升级在某种程度上使我们的产品无法运行。但是,同一测试人员告诉我,卸载了旧的第三方软件和...
我正在使用自定义操作从dll运行功能,但是当我运行自己构建的msi时,出现错误消息:“此Windows Installer软件包存在问题。此安装需要DLL。 。
我有两种通过自定义wix安装程序安装的不同产品(A,B)。由于某种原因,当我安装了A并尝试安装B时,A作为B安装的一部分被卸载,反之亦然...
我已经为WIX安装程序编写了一个自定义操作。该操作的Execute-attribute设置为Deferd and Impersonate并在InstallFinalize之前运行,但是在此操作内遇到问题...
Wix Installer应用程序运行两次后将无法安装并卸载该应用程序
我用gui编写了一个简单的wix安装程序,可以很好地安装。但是,当我第二次运行相同的.msi文件时,它将带我完成gui中的正常安装过程,但是会在...