问题标签 [merge-module]

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

asp.net - 如何在 ASP.NET Web 部署项目中包含 (VFP) 合并模块?

我有一个使用 Web 部署项目安装的 ASP.NET 应用程序。我想将 Visual FoxPro 合并模块添加到安装程序中。有没有人有如何做到这一点的例子 - 或者如何在 Web 部署项目中安装任何合并模块?

使用 WiX 将是我的后备方案,但由于 Web 部署项目正在有效运行,如果可以的话,我宁愿坚持下去。

该应用程序是使用 C# 开发的。

0 投票
1 回答
3564 浏览

wix - 引导程序:在运行前检查是否安装了 msi 版本

我正在尝试为以下问题找到解决方案:

我有许多程序(我们称它们为奴隶),它们都依赖于一个程序(主程序)。我需要为每个从站分发一个安装程序。这个安装程序需要安装master。

我希望能够对这两个部分进行版本控制,因此多个 msi 似乎是正确的解决方案,并与引导程序链接在一起。

我的问题是,如果从属安装程序安装了与已安装的主版本相同的版本,.msi 将在修复/删除模式下运行。

从用户的角度来看,这是不可接受的,只会引起混乱。

在尝试运行 msi 之前,有什么方法可以检查当前安装的文件的版本吗?

我目前正在使用 WIX 的 setupbld.exe 作为引导程序。

非常感谢任何其他解决方案(我也尝试过合并模块但没有成功,因为版本控制没用)

0 投票
1 回答
427 浏览

c# - 来自 Dark.exe 反编译的合并模块问题

我已经工作了很长一段时间,将我工作的所有安装从 Wise for Windows Installer 转移到 WiX。从明显的步骤开始(考虑到要传输的安装数量及其大小)并使用 Dark.exe(WiX 工具包)对它们进行反编译。我一直在创建一个通用程序来将输出从黑暗中清理到一个适当的项目中,然后我们可以将其编译到 MSI 中。一段时间以来一直困扰我的@$$ 的问题是合并模块。我们在各种安装中最多有 20 个 Microsoft MSM,并且 dark 无法识别这些,因此会列出所有内容。我已经准备好了所有东西,所以我可以删除这个垃圾代码并用正确的 Merge 标签替换它。因此问题。合并模块对它们的放置位置没有任何押韵或理由,我找不到寻找主文件夹的逻辑。唯一真正的共同点是目录、组件、文件和注册表标记都有一个以 GUID 结尾的 Id。任何想法将不胜感激。我已经有了框架来搜索我们的合并模块列表并检索文件、组件和目录的列表。我只是不知道要寻找什么,因此它不仅仅专门针对一两个模块,而是理论上所有 MICROSOFT 模块(我知道其他公司可能使用其他格式,但这是一个无声的问题)。再次感谢!我已经有了框架来搜索我们的合并模块列表并检索文件、组件和目录的列表。我只是不知道要寻找什么,因此它不仅仅专门针对一两个模块,而是理论上所有 MICROSOFT 模块(我知道其他公司可能使用其他格式,但这是一个无声的问题)。再次感谢!我已经有了框架来搜索我们的合并模块列表并检索文件、组件和目录的列表。我只是不知道要寻找什么,因此它不仅仅专门针对一两个模块,而是理论上所有 MICROSOFT 模块(我知道其他公司可能使用其他格式,但这是一个无声的问题)。再次感谢!

0 投票
2 回答
1288 浏览

wix - 更改 Wix 合并模块包 GUID?

何时需要更改合并模块的包 GUID?

与产品不同,Wix3 要求为合并模块显式指定包 GUID。我的合并模块将与每两周构建的 MSI 一起使用。这些每两周一次的 MSI 需要与单独的安装共存于同一台机器上(例如版本 1、2、3 等...) 我是否需要为每个每两周一次的 MSI 版本更改合并模块的包 GUID ?

0 投票
1 回答
187 浏览

windows-installer - COM 部署依赖项

我遇到了一个问题,即我与我的应用程序一起分发的 COM dll 无法注册,因为 atl.dll 未在机器上注册。

快速修复是在 dll 上运行 regsvr32,但我想要一些更清洁的东西。

我在部署方面没有太多经验,我想知道是否有一种方法可以确定 atl.dll 是否已在机器上注册,如果没有,我可以从代码中注册它。

我目前有一个用于我的 msi 安装程序的 C# 自定义操作,因此我可以在那里添加逻辑来执行任务。

提前致谢。

0 投票
1 回答
2176 浏览

wix - WiX 和共享的版本化组件

这必须是一个普遍的需求,但我在网上几乎找不到任何对它的引用......

我有一个产品,它有三组组件,一组安装在服务器上,一组安装在 Web 头上,一组安装在开发人员的机器上。所有三套都可以安装在一台机器上,并且应该和平共存。

正如我昨天所做的那样,每个组件都安装到不同的地方并且工作正常,但这只是暂时的,因为应该共享一些文件、gac'd 程序集和注册表设置。现在我已经从共享组件中创建了一个合并模块,并且这个新的合并模块方案在理想条件下的安装过程中运行良好,并且我已经对单个 msi 进行了重大升级。

问题是在安装 msi 期间,安装 msi 中的合并模块版本低于已安装版本(不同 msi)的版本 - 较新版本被旧版本覆盖!此外,在卸载三个 msis 中的任何一个时,即使其他已安装的组件仍在使用共享的东西,它也会被删除。

在大多数情况下,我理解为什么会出现这种行为,但我不明白我应该如何配置我的安装程序,以便可以共享这些组件,而无需为共享组件提供单独的安装程序。另外,我也不想要一个大的安装程序 - 这不会很好地扩展。

我想要的是三个安装程序包含合并模块中在构建时可用的任何最新版本的组件。在安装时,如果安装了较新版本的共享组件,请不要覆盖它们。在卸载(和升级)时,应该跟踪的引用计数将确定是否应该删除共享项目。

如果我只是遗漏了一些东西,这里是合并文件的重要部分:我的合并模块的版本号(“wxy”中的 y)随着每次构建而递增,包 ID 保持固定,并且每个组件都有Shared="yes"(尽管我也试过没有这个)。

我已经开始在注册表中存储各种版本号,我想也许只有在注册表中的版本号不存在或更低的情况下,我才能有条件地安装合并模块功能。但是如文档所述,条件参数无法正确评估 wxyz 。然后文档建议 AppSearch,但 AppSearch RegistrySearch 只能检查是否存在,也不能比较版本号。显然 FileSearch 可以,但程序集文件版本号不会随着每次构建而增加。

而且我读到 MergeModules 有很多问题——也许就是这些——但 wixlibs 似乎也没有为这些问题提供任何解决方案。

那么合并模块版本控制的正确方法是什么???我在亚马逊上找到一本书,其中有一个名为“合并模块版本控制”的 TOC 条目,但该书已绝版。:-P

0 投票
1 回答
78 浏览

visual-studio-2008 - 如何自定义第三方 MSM 的功能?

我正在尝试将 Visual Studio 2008 中的项目从 CRT 的静态链接转换为动态链接。这很容易,我将 CRT MSM 和策略 MSM 添加到我的 Wix 文件中,没有任何问题。

不过,我对输出的 MSI 并不满意,它比我预期的要大得多。使用 Orca 查看 MSI 显示了我需要的三个 CRT DLL 副本。从条件来看,其中一组用于 XP 之前的安装。由于系统要求是XP及更高版本,如何在不触及原始MSM的情况下删除此组件?这需要在自动构建中完成,因此 Orca 不是一个可能的解决方案。另外,当我尝试使用 Orca 时,删除文件和组件行后文件大小保持不变。

并且有些相关,我如何在剩余的组件中设置永久属性?

0 投票
1 回答
1204 浏览

visual-studio - 如何通过合并模块将自定义操作数据从 Visual Studio 设置 MSI 传递到输出项目

我在 Visual Studio 2008 中有一个完全正常工作的安装项目,它从 UI 获取输入并通过自定义操作将它们传递到输出 - 这非常有效。

现在我必须更改它,以便 UI 仍在设置项目中,但输出在合并模块中。

当前的自定义操作数据看起来很像以下,其中 EditHostUrl 来自 UI 对话框编辑框。

我现在需要将此值传递给合并模块,然后从那里将其用作自定义操作数据的输入到项目输出,但似乎没有任何文档说明如何实现这一点。

需要明确的是,Wix/InstallShield 等...目前不是选项。我也不想将 UI 嵌入到合并模块中(出于分离的原因,而且它不支持开箱即用的 Visual Studio)。

0 投票
1 回答
928 浏览

dll - 帮助 ActiveX 安装?合并模块 - Windows Vista 和 Windows 7

我正在 VS2008 中构建一个 ActiveX 控件安装程序,它同时使用 CRT 和 MFC 合并模块进行安装。当我的控件尝试在 Windows 7 上注册时,它失败了。

Dependency Walker 说我在尝试注册我的控件并且安装失败时缺少 mfc90u.dll、msvcr90.dll 和 msvcp90.dll 依赖项。合并模块是否应该处理这个问题?我的输出 OCX 正在使用 vsdrpCOMSelfReg 选项进行注册。从我在其他论坛上阅读的内容来看,这可能不是最好的方法,此时我应该尝试什么?

安装在 Windows XP 上运行良好。

2010 年 4 月 8 日更新:

更改为 vsdrpCOM 并且安装通过(不足为奇),但是之后找不到 msvcr90.dll。我认为这是由 CRT (microsoft_vc90_crt_x86.msm) 的合并模块处理的?在 Windows XP 上,Dependency Walker 在 Windows/System32 中找到它,而不是像我预期的那样在 SxS 文件夹中。在 Windows 7 上,它根本找不到它。我应该自己将 msvcr90.dll 放入 Windows/System32 吗?看起来不像。

2010 年 4 月 20 日更新:

看起来 Dependency Walker 似乎在控件本身的顶级依赖项中找到了 msvcr90.dll,尽管 msvcp90.dll 和 mfc90u.dll 都对 msvcr90.dll 具有隐式/转发的依赖项,并且这些无法在依赖沃克。但是,该控件可以正常注册并运行加载这些库。这是可以忽略的事情吗?

0 投票
1 回答
1144 浏览

visual-studio-2008 - 如何通过合并模块调用 wix 自定义操作 dll 以使用调试运行时?

我正在尝试为我们的产品创建一个带有相应调试安装程序的调试版本。我是 Wix 的新手,所以请原谅这里包含的任何幼稚。我项目中的调试 Dll 依赖于 VS2008 和 VS2008SP1 调试运行时。我在 wix 中创建了一个合并模块功能,以将这些运行时与我的安装程序捆绑在一起。

如果我正在对安装程序进行调试构建,我会像这样包含该功能:

唯一的问题是我的安装程序还包括一个也依赖于调试运行时的自定义操作:

那么如何以自定义操作也可以访问它的方式打包调试运行时呢?