问题标签 [wix3.9]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1409 浏览

wix - 在次要更新期间删除或重命名文件(wix 3.9 补丁)

我们每周都会自动生成设置,以修复错误或为我们的产品引入新功能。

所有组件都在 Wix 库预构建步骤中自动收集。例如:

"%WIX%bin\Heat.exe" 项目 "%SolutionDir%projectNameXXX.Web\projectNameXXX.Web.csproj" -configuration %FlavorToBuild% -directoryid dirBE9FDAE56D974104BBF8070FB6CC7F69 -platform AnyCPU -pog Content -projectname projectNameXXX.Web -ag -sfrag -out "%ProjectDir%projectNameXXX.Web.wxs"

因此,我们部署的每个文件都有一个带有“*”Guid 的组件。

我们还自动化了我们设置的任何先前版本(比如说 V0)和当前版本 (V1) 之间的补丁创建。只要 V1 没有删除(或重命名)文件,补丁就会被创建并被部署。我们不介意 V0 中的文件是否不被删除,只要部署了更新的文件和新文件即可。

到目前为止,我已经做了几十次测试,使用不同的参数,例如:在蜡烛上添加 –sfdvital 以强制文件不重要,但我最终发现问题来自组件,而不是文件……;

另一个重要的测试是在 V0 中的 3 个组件上设置硬编码的 Guid,我在 V1 设置中将其删除。生成的补丁被安装(要删除的文件仍在磁盘上,所有其他文件更新都已部署)。当安装程序被卸载时,除了 3 个文件之外的所有内容都将被删除。不幸的是,如果安装程序 V1 删除了 3 个文件但添加了 1 个其他文件,则不会安装补丁,它会在遇到第一个要删除的文件时立即停止。

SELMGR:ComponentId '{68FB7BC2-8D59-4CFB-88F5-9AA8CA570345}' 已注册到功能 'ProductFeature',但未出现在 Component 表中。不支持从功能中删除组件!相关主题:

在次要升级期间删除文件

没有提出可行的解决方案,因为我无法应用“穿刺模式”技术,或添加标签,因为这无法自动完成。或者可以吗?如果用户必须编辑 V0 msi,获取组件 ID 并将它们添加到新的 msi 或补丁中,这不是我们的解决方案。我们正在部署超过 25000 个文件。重大升级也不是解决方案。任何想法都会受到欢迎!

0 投票
1 回答
1904 浏览

wix - 修复时Wix“指定帐户已存在”

我读过这个:
Windows msi: error 1316: the specified account already exists

这: WiX 中各种 GUID 的作用(“错误:指定的帐户已存在”)

而且我没有找到任何解决我的问题的方法。

当我安装 app.msi 时一切正常。当我想再次安装 app.msi 时,我使用修复,一切都很好。但是当我在修复点击后将安装程序名称从 app.msi 更改为 app2.msi 时出现错误

“指定的帐户已经存在”

为什么它会这样工作以及如何解决它?

谢谢

0 投票
1 回答
1333 浏览

wix - Wix 3.9 安装程序 - 错误 CNDL0006

这是(部分)我的代码:

这是我得到的错误:

错误 CNDL0006 : Shortcut/@WorkingDirectory 属性的值不能是空字符串。如果不需要值,只需删除整个属性。

如您所见,属性的值不是空字符串。我该如何解决这个错误?

提前致谢,

0 投票
0 回答
754 浏览

windows - 用户固定的任务栏快捷方式和重大升级

我正在努力了解 Windows 资源管理器中用户固定的快捷方式与 Windows 安装程序的关系。我的印象是用户固定的快捷方式完全由用户处理,但似乎 Windows 安装程序会在删除安装程序快捷方式时找到(并修改)用户固定的快捷方式。

这基本上是两个相关的问题,一个与卸载的提前调度有关,一个与延迟调度有关,特别是版本之间从早期到晚期的变化。

升级后来自 msi 的缓存“内部”图标仍然有效

示例:应用程序 v1.0 在桌面上安装非广告快捷方式,并使用 msi 内部的图标。然后用户执行“固定到任务栏”。任务栏和桌面快捷方式现在都引用从 msi 复制到图标缓存中的图标,例如%SystemRoot%\Installer\{CB24D097-4E8F-4E8E-8FE3-EACF5954DE56}\MyApp.ico. 应用程序通过重大升级升级到 v2.0,并计划延迟删除 v1。用户固定的快捷方式不会被损坏/删除,即使图标(大概?)仅属于 v1 安装程序,它也会保持相同的图标?为什么这行得通?是否存在将来删除缓存图标的风险,从而破坏用户固定的快捷方式?

提前安排卸载会损坏用户固定的快捷方式

如果使用早期卸载先前版本的主要升级将应用程序从 v1.0 升级到 v2.0 ,那么当应用程序(暂时)删除桌面上安装程序提供的快捷方式时,也会损坏用户固定的快捷方式。我发现的唯一解决方法(没有以编程方式将快捷方式恢复原位)是让安装程序根本不删除快捷方式,而是通过执行<RemoveFile on="uninstall">快捷方式来删除 .lnk。(请参阅Wix - Do Not Remove Pinned Taskbar on Install)现在,这个 hack 对于一系列重大升级来说已经足够好了,这些升级都提前安排了卸载,如前几段所述 - 即使没有 hack,后期调度似乎也总是有效 -

但是,如果 v1.0 已经自带了后期卸载,而 v2.0 是第一次升级提前卸载之前的版本呢?

有什么办法可以影响 V2.0 msi 中 v1.0 的卸载?具体来说,我可以以某种方式说服 v1.0 卸载跳过删除快捷方式步骤吗?

0 投票
1 回答
942 浏览

wix - WiX 工具集 - 隐藏属性在其他地方引用时不再隐藏

要隐藏我正在使用的 WiX 中的属性

或者

我还没有找到可靠的解决方案是如何在评估后将以前隐藏的密码隐藏在日志文件中:

  • 另一个属性(例如 SetProperty,类型 51 CustomAction,在对话框中发布属性)
  • 一个 util:XmlFile 条目

一旦在另一个 WiX 元素中使用密码,有没有办法在不暴露密码的情况下评估密码?

在 SetProperty 或类型 51 CustomAction 的实例中,有没有一种方法可以隐藏原始密码而无需隐藏字符串的其余部分。

例如设置 Property="SOME_STRING" Value="password=[MY_PASSWORD];other=[ANOTHER_PROPERTY]",让属性字符串显示为“password=********;other=评估字符串”

在使用 util:XmlFile 的情况下,是否有任何方法可以隐藏此处评估的密码,使其不显示在日志文件中?

0 投票
2 回答
927 浏览

wix - Wix - 如何在启用功能选择打开的情况下处理小升级?

我们一直致力于使用自定义引导程序应用程序使用 WIX 和 Burn 重建我们的安装程序。我们在主 MSI 中使用功能树,并设置了 EnableFeatureSelection="yes",以便我们可以在自定义 BA UI 中复制功能树,并在计划/应用时将这些功能选择发送到 MSI。在我们最近开始测试升级过程之前,这一切都运行良好。我们在 Burn 中遇到了一个似乎是开放的错误:

http://wixtoolset.org/issues/4616/

当我们进行次要升级时,已经安装的功能不会升级......最初安装的代码保留在机器上。从我们所做的测试和调查来看,我们认为这是因为 Burn 没有将 REINSTALL="ALL" 传递给 MSI 包(这就是上述错误所说的)。

我们发现了这个问题,Rob 说您必须处理 OnPlanMsiFeature() 回调,我们正在正确执行该回调。

wix pass 选项到 msi 进行维修

由于上述错误自 2014 年 12 月以来一直存在,我们不相信它会很快修复,因此我们决定尝试寻找解决方法。到目前为止,我们的想法充其量只是 hackish,但在概念验证级别上,它显示出一些希望。我们正在复制整个 MsiPackage 节点,为副本提供一个新 ID,并在其上添加一个 REINSTALL=ALL 属性,如下所示:

然后,在我们的自定义 BA 中,我们使用 DetectRelatedMsiPackage 事件来检测次要升级。并使用该次要升级检测将每个 MsiPackage 的 RequestState 设置为 Local 或 None 在我们的 PlanPackageBegin 事件处理程序中,如下所示:

我们希望在打开 EnableFeatureSelection 的情况下在 Burn 中升级时遇到此错误的其他人提供一些指导。我们的解决方法能完成这项工作吗?或者,有没有办法从自定义 BA 动态创建 MsiProperty,以便我们可以根据需要创建 REINSTALL=ALL?是否有人对如何解决这个问题有其他更清洁和/或更可靠的想法?

如果您需要更多信息,请告诉我。我们已经使用 Wix/Burn 工作了几个月,所以我们知道一些事情......但我们还不是专家。

0 投票
1 回答
491 浏览

wix - WiX 刻录降级

所以我有两个安装程序,我的程序的安装程序,用 WiX 创建的,以及正在安装我的程序和他的先决条件的安装程序,这个安装程序是用 WiX Burn 创建的。

在两个安装程序中,我都需要支持降级,并且我已经在我的程序的安装程序中启用了它:

并且在安装程序降级中运行良好。

在刻录安装程序中,我启用了降级:

当已经安装了新版本时,我可以使用 WiX Burn 安装旧版本的程序。但是我遇到的问题是,在使用 WiX Burn 安装程序降级后的 ARP 中,我有两个条目。一种用于较新版本,即已删除但不删除条目,另一种用于较旧版本。

我正在使用 WiX 3.9。

有没有人有类似的问题?有谁知道我该如何解决这个问题?

0 投票
2 回答
1050 浏览

msbuild - 蜡/热:访问在 .wixproj 文件中

我在我的 installer.wixproj 中运行 heat 命令作为预构建事件。我希望我的dir-parameter ( HarvestPath) 成为我包含的项目参考的目标目录。

现在在我的 .wixproj 文件中,我有

如何访问项目引用的目标目录? "@(ProjectReference)"只给了我它的 .csproj 文件的完整路径,我找不到任何文档。

0 投票
1 回答
1002 浏览

c# - 在wix安装的下拉列表中绑定IIS本地网站?

在使用http://wixtoolset.org/为我的应用程序创建安装程序工作了很长时间之后,我使用的是 3.10v,最后我得到了工作的 .msi 安装程序文件。

但我希望 IIS 服务器中存在的网站列表在安装期间显示在下拉列表中,以便我可以从 IIS 服务器中选择现有网站并使用它来安装我的应用程序。

我在我的 UI 页面(.wxs 文件)中创建了一个 ComboBox 控件,并坚持编写自定义操作,任何帮助非常感谢!

0 投票
0 回答
349 浏览

wix - WiX 在嵌入式 cab 项目中偶尔会抛出 cab 文件错误

我有一个 WiX 安装程序,它时不时会生成一个安装包,它会抛出错误

“此安装所需的压缩包文件 'cab1.cab' 已损坏且无法使用。这可能表示网络错误、从 CD-ROM 读取错误或此软件包有问题”

我的标记中有 EmbedCab="yes"

有没有办法防止这种情况发生?

我正在使用 WiX 工具集 v3.9.1208.0

谢谢