问题标签 [wix3]

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 回答
6515 浏览

combobox - 如何在安装时在 WiX 中填充 ComboBox?

编辑:由于 Rob 的回答,我已经更新了下面的代码,现在它可以工作了。

我找到了几个页面来展示如何做到这一点(http://www.cmcrossroads.com/content/view/13160/120/http://www.mail-archive.com/wix-users@ lists.sourceforge.net/msg05103.html)并查看了 WAI 的源代码(http://wai.codeplex.com/),但无论我尝试什么,我似乎都无法让它在我的安装程序中工作. 如果有人能发现我做错了什么,我将不胜感激。我的对话 WiX 片段如下所示:

我的自定义操作代码是:

以前有两个问题:

1) 上面的代码在自定义操作的运行过程中失败,“函数在执行期间失败。数据库:表更新失败。” - 这是因为索引问题导致代码尝试将字符串写入 int 列。

2)如果我换行

然后查看跟踪,该操作似乎成功,但是当安装程序运行时,组合框没有可供选择的条目。

如果我将组合框更改为硬编码值,一切正常,即使我对 lWebsiteName 的等价物进行硬编码。

0 投票
1 回答
1492 浏览

vb6 - WIX 3:对 Visual Basic 6 COM Dll 使用 HEAT

我正在使用 WIX 3。我使用 heat 为 VB6 dll 创建了一个 wxs 文件。msi创建没有任何错误,安装也成功。

一切似乎都很好,我可以从 VB 客户端成功调用该组件。

但是,如果我从 ASP 页面调用该组件,则会得到 0x800401f3。

如果我使用自我注册(regsvr32)而不是安装程序,则两者都可以正常工作。

我做了一个注册表差异来弄清楚自我注册(regsvr32)和安装程序之间有什么区别,我看到了以下内容

  1. HKCR 中的所有条目都匹配 - 在这里都很好
  2. regsvr32 在 HKLM 中添加条目,而安装程序不接触 HKLM

我想知道这是否是问题所在,还是我完全走错了路。

MSDN(http://msdn.microsoft.com/en-us/library/ms694355(VS.85).aspx)提到 HKLM 中需要注册表项,想知道我在这里缺少什么。

以下是 heat 创建的文件。


更新:使用文件的“SelfReg”选项使 ASP 客户端也能正常工作。我从其他帖子中读到,这是不可以使用的。有人能告诉我该怎么做吗?

0 投票
3 回答
18877 浏览

wix - 在 wix 中更改我的组件 GUID?

我应该何时更改或不更改 WIX 中的组件 GUID? Microsoft SDK 信息令人困惑

Glytzhkof 编辑:为了澄清,问题涉及何时应为 MSI 组件更改组件 GUID。组件可以随以下方面发生变化:更改目标路径,向/从同一组件添加或删除文件,添加注册表数据等......这会导致所谓的组件引用问题,即最佳实践在 MSI 中创建组件。

0 投票
1 回答
917 浏览

windows-xp - 卸载正在使用的共享程序集使 WinSxs 处于错误状态

我在 WinXP 上使用 Wix3 卸载共享的 win32 SxS 程序集时遇到问题。我的 wix 文件看起来很像http://n2.nabble.com/Tutorial-How-to-install-files-into-WinSxS-td841475.html中描述的文件。

问题是,如果程序集中的模块正在使用中,卸载程序会以成功错误代码完成,但程序集处于损坏状态:清单和安全目录已被删除,但程序集目录仍然存在,其中包含我的 dll . DLL 在重新启动后仍然存在,因此不会以任何方式标记为删除。MSI 日志文件中没有明显的错误。

如果我尝试重新安装软件包,它会跳过程序集的安装。这些组件不再注册,所以我无法让安装程序再次尝试卸载。以下显示在后续安装的 msi 日志中:

MSI (c) (98:44) [11:46:56:263]:跳过装配组件的安装:{26A273E7-7F9A-4F77-9FA8-5E413A155BEC},因为装配已经存在

除了手动删除我的程序集目录之外,我找不到将 SxS 恢复到良好状态的方法,此时该目录不再受 XP 系统还原的保护。

虽然我的实际安装程序要复杂得多,但我已经能够使用一个非常基本的安装程序来重现它,该安装程序具有包含单个组件的单个功能。该组件包含一个 dll、一个清单和一个安全目录。dlls <File> 元素设置了 KeyPath、Assembly 和 AssemblyManifest 属性。安装后,我可以通过在 MSVS 中打开 DLL 来模拟加载程序集的过程。

我应该在卸载时调用额外的操作来检测和防止这种情况吗?或者,即使 WinSXS 中已经存在 DLL,是否有强制执行安装操作的方法?

有点相关,如果我尝试升级安装了该程序集的软件包,如果程序集没有更改,我也会遇到问题。安装程序决定它不需要重新安装程序集(因为它没有更改),但是当 SxsUninstallCA 运行时,它会继续并删除程序集。从安装程序的角度来看,组件仍然安装,但文件已消失。

0 投票
5 回答
2915 浏览

windows - 动态创建 WIX 文件,无需手动编辑 wix 文件

假设您发布了软件的下一个版本,您将不得不手动更新您的 WIX 文件以删除过时的文件并添加新文件等。

我的用例就像“在用户目标 C:\Program Files\MyApp 中递归添加 /sample/path 下的文件”一样简单。

有没有这样的自动化程序?

0 投票
1 回答
5314 浏览

installation - wix 产品 ID 应该为补丁号更改自动生成?

我使用 wix 为产品构建设置。产品有版本格式

例子:

在每个版本中,最后一个补丁号不断变化,如 1314、1315 等。

我想知道是否应该将产品元素中的 id 属性保留为仅在补丁号更改之间自动生成的,还是应该保持不变?

0 投票
1 回答
516 浏览

wix - 如何根据 WIX 中的属性动态设置文件源?

我们有四个区域(dev、test、qa、prod),它们都需要特定于环境的配置文件。我正在尝试开发一个 WIX 安装,它将接受来自 msiexec 命令行的属性分配并动态设置配置文件的文件源。我已经尝试了几乎所有内容并阅读了每一页,但我似乎无法让它发挥作用。这似乎是一个微不足道的问题。

0 投票
1 回答
607 浏览

wix - Wix 中的组件 GUID

我有一个 .net dll,由我的 2 个应用程序、客户端和服务器共享。

当用户选择安装时,我不知道文件将安装在哪里,他可能只安装客户端或同时安装客户端和服务器。

我在服务器和客户端 wix 上都有组件,它只包含共享程序集。

我应该为他们两个设置相同的 GUID 吗?在同一路径上安装服务器和客户端是否会以任何方式影响安装?服务器和客户端可能需要不同的程序集版本,但文件名相同。

0 投票
1 回答
5402 浏览

wix - Wix:将模块与多个 wxs 文件合并

所以,我正在尝试创建一个合并模块,其中有多个 wxs 文件。自从我的项目构建成功以来,我认为一切都很好。后来,我意识到其中一个二级 wxs 文件的 Source 属性中使用的路径完全错误,但编译器没有给出以下错误:

系统找不到文件'..\..\release_area\WrongPath\Component2.dll'。

在辅助 wxs 文件中,我添加了一个DirectoryRef元素,该元素引用主 wxs 文件中的文件夹AssemblyFolder以创建两个文件之间的引用。

主 wxs 文件

辅助 wxs 文件

只是为了澄清:为了测试,我<Component Id="Component2.dll">直接在主 wxs 中复制了我的错误:系统找不到文件 '..\..\release_area\WrongPath\Component2.dll'。

所以,我的猜测是辅助 wxs 文件和主 wxs 文件之间的引用是完全错误的,这就是编译器不验证文件路径但我无法弄清楚问题所在的原因。

0 投票
1 回答
259 浏览

wix - 用于安装网站的 Wix UI

任何人都有用于安装 ASP.Net 网站的 WiX UI 序列?要求虚拟目录和类似于 Visual Studio 安装项目的应用名称的东西?