问题标签 [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.
wix - wix 安装程序不安装 VS 2005 合并模块文件
这可能是一个愚蠢的问题,但我花了几个小时测试各种可能性并没有找到答案。
我在 VS 2005 中准备了一个标准合并模块(它可能很好,我已经准备了标准 VS 2005 安装项目,包括合并模块并且它工作正常)
Wix 项目(主要是因为 GUI 的原因)要小心安装。代码示例(为简洁起见)
目录部分:
特色部分:
构建 WIX 项目后,它会引发如下错误:
ICE83:MsiPublishAssemblies 和 MsiUnpublishAssemblies 动作都必须出现在 InstallExecuteSequence 表中。ICE83:MsiPublishAssemblies 操作必须存在于 AdvtExecuteSequence 表中。
我添加了行:
和:
在构建过程之后不会返回任何错误,但尽管安装了该功能(在功能列表中选择),但 HDD 上没有功能文件。我认为这可能是由序列号引起的,但我不知道如何修复它们,有人可以帮忙吗?
如果需要更多信息,我一定会提供。
wix - Wix合并模块升级代码
我对 Wix 很陌生,所以也许这个问题没有任何意义,但为什么合并模块没有升级代码?我目前有一个小型应用程序,我为其制作了常规 MSI。现在我还想为这个应用程序创建一个合并模块,以便它可以与其他应用程序一起安装(它将作为一堆相关应用程序的一部分发送给客户端)。我希望我的合并模块检测我的应用程序是否已安装,并在必要时对其进行升级,但合并模块没有升级代码。有没有办法做到这一点?
我想要的是这样的行为:假设您可以使用自己的 MSI 分别安装 Words、Excel 等,但您也可以安装整个 Microsoft Office,其中包括 Words、Excel 的 MSM...当然,如果您先从 MSI 安装 Excel,然后再运行 MSI for Office,则 MSM for Excel 将检测到它已安装并在必要时升级,如果它是最新的,则不执行任何操作。
感谢你的帮助
wix - Wix:将对话控制值传递给可配置的合并模块
我无法使用 Wix 工具集完成任务。特别是,我有一个配置 MSM(可配置模块)的 MSI 的场景。MSI 有一个自定义 UI 对话框,用户输入将用于配置 MSM。
当我尝试使用地址属性的硬编码值配置 MSM 时,如下所示,它工作正常并且 MSM 配置正确。(我相信这种配置发生在构建时而不是运行时 - 问题可能就在那里。)。
当我使用自定义对话框在安装时(即运行时)设置地址属性的值时,就会出现问题。可配置模块仍然使用硬编码值,而不是用户输入。问题是因为合并模块配置仅在构建时完成。有没有办法从主 MSI 的 UI 向合并模块传递一个值?
这是一个过度简化的版本:
这是合并模块的片段:
最终在合并模块中配置的属性使用如下:
installshield - 安装 Shield-Merge 模块依赖问题。DLL没有注册
我的问题:
我创建了两个合并模块。让我们称它们为 A 和 B。合并模块 B 依赖于 A。A 将 aaa.dll 并排安装到 Windows。B 包含 bbb.dll,它在安装过程中注册并依赖于 aaa.dll。作为旁注,合并模块 A 是在 Install shield 2012 中创建的,合并模块 B 是使用 Visual Studio 2010 向导创建的。
我有一个安装屏蔽项目,它安装了两个合并模块。我进入 Application Data-> Redistributables 并将 B 添加到安装中。这会自动检查 A。如果我转到 Organization->Setup Design 并展开包含 B 的功能,然后单击 B。它会显示有关 B 的信息的窗口。其中有一个正确列出 A 的 Dependencies 标题。
我构建项目并尝试将其安装在干净的 VM 上。在安装过程中我收到一条错误消息,说 bbb.dll 注册失败我想忽略,取消。此时我在机器上查看了winsxs,并注意到aaa.dll 不存在于它的正确文件夹中。相反,它存在于 winsxs\InstallTemp\ 子文件夹中。然后,如果我在错误弹出窗口上单击忽略,安装将继续,不会出现更多错误。然后完成后我可以手动注册 bbb.dll 就好了,并且 aaa.dll 存在于正确的 winsxs 子文件夹中。
我的问题是如何让合并模块 A 完全完成并将 aaa.dll 放置在正确的位置,以便一切都能正确安装?
我尝试过的事情:
- 我尝试在组织->设置设计下的安装盾项目中制作多个功能。所以我创建了 3 个功能。顶部的特征 1 仅包含 A。特征 2 包含 A 然后 B。最后特征 3 再次包含 A。我完成了所有 3 个必需的功能。我希望这意味着整个功能将完成安装并将 aaa.dll 放置在正确的并排位置。然而,没有这样的运气。(我创建了 3 个功能,以防万一我有倒序之类的东西)
- 我相当确定问题在于 aaa.dll 没有及时安装或安装在正确的位置。为了测试这一点,我首先尝试使用刚刚安装合并模块 A 的 install shield 安装程序安装 aaa.dll。然后我运行我的主安装程序,一切正常。
很抱歉文字墙和任何不正确的语法\拼写。如果我自己弄清楚这个问题,我会发布,以防其他人最终遇到这个问题,因为这真的很令人沮丧。
dll - MSI:从合并模块 (MSM) 中的自定义操作中读取属性
我在尝试构建 MSM 时遇到了这个问题。显然,模块属性(以及与此相关的所有标识符)在模块生成期间通过在其名称末尾添加模块 GUID 来重命名。例如,属性“MY_PROPERTY”重命名为“MY_PROPERTY.803A3089_928F_46F1_BBAE_CBD39A7D6A72”(假设 803A3089-928F-46F1-BBAE-CBD39A7D6A72 是模块 GUID)。我相信这是用于防止多个模块尝试使用具有相同名称的标识符之间发生冲突的机制。
在 MSM 中,我需要调用一个 DLL 自定义操作,该操作需要使用某个值设置特定属性(我们称之为“THE_PROPERTY”)。问题是 THE_PROPERTY 如上所述被重命名为 THE_PROPERTY.803A3089_928F_46F1_BBAE_CBD39A7D6A72,因此自定义操作永远找不到该属性并失败。
有没有办法解决这个问题?我正在考虑修改自定义操作,以便它尝试(以某种方式)找出调用它的模块的 GUID。一种方法是查看当前操作名称,该名称还应包括 GUID。但是我可以从自定义操作中获取当前操作名称吗?你能想出另一种解决方案吗?
谢谢!
sql-server-2008 - 使用合并模块和 InstallShield 安装 SQL Server 2008?
如何使用合并模块和 InstallShield 在客户端系统上安装 SQL Server 2008?
windows-installer - 合并模块是如何工作的,我怎样才能为我没有安装的 Visual Studio 版本获得一个?
我有一个依赖于 VS 2005 的供应商依赖项。根据 Depends.exe,它匹配:
x86_microsoft.vc80.mfc_1fc8b3b9a1e18e3b_8.0.50727.5592_none_cbf62b764709d1c9\MFC80.DLL
x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.5592_none_d09196c24426e2d4\MSVCR80.DLL
x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.5592_none_d09196c24426e2d4\MSVCP80.DLL
我是否必须获得具有此确切版本的合并模块,还是可以使用更高版本?我在以下列出的可再发行组件中找不到此版本:http: //blogs.msdn.com/b/astebner/archive/2007/01/24/updated-vc-8-0-runtime-redistributable-packages-are -included-in-visual-studio-2005-sp1.aspx
事实上,版本似乎较低,所以我不确定什么是“后来的”版本。我需要在不安装 2005 的情况下获取此合并模块,因为我自己实际上并没有使用 2005 进行编译。
.net - 使用合并模块部署应用程序 - 并排程序集
我有一个内置于 VS2010 的 WPF 应用程序,但引用了一个内置于 VS2008 的 C++/CLI 库。C++/CLI 库使用 VC90 版本的 CRT 模块(MSVCM90.dll、MSVCP90.dll、MSVCR90.dll) - 项目属性告诉我“使用标准 Windows 库”、“不使用 ATL”和“通用语言”运行时支持 (/clr)”。
在我的开发机器上,一切都正确构建;CRT 模块是从它们在 %WINDIR%/WinSxS 中的位置加载的,每个人都很高兴。但是,当部署到我的没有开发软件的测试机器上时,应用程序似乎找不到这些模块(基于 Dependency Walker 告诉我的内容)。
我已将必要的合并模块添加到我的设置项目中,并且它们安装在与我的开发机器完全相同的位置。只是,在运行应用程序时找不到它们。该应用程序只是在启动时失败,并显示“Windows 正在检查问题的解决方案......”(然后什么也没有退出)。
我错过了什么?
我还尝试在安装项目中添加 VC++ 2010 可再发行组件,以及 .NET Framework 3.5 SP1 客户端配置文件,但它们似乎没有做任何事情。
我尝试在测试机器上运行 sxstrace.exe,但除了显示 exe 正在运行的第一部分之外,我没有得到任何信息。
visual-studio-2010 - 是否可以为来自 Visual Studio 安装项目中的合并模块的文件创建快捷方式?
我在 Visual Studio 2010 中有一个安装和部署项目,它使用一些合并模块来安装我的程序运行所需的一些依赖项。其中一个 MSM 文件包含一个可执行文件,我想在“程序文件”菜单中创建一个快捷方式。这是可能的还是这(我继续学习......)安装和部署项目的另一个烦人的限制?
wix - WiX - 在安装时设置合并模块目录?
我已经按照入门 Wix 指南中的说明创建了一个合并模块,该指南位于:http ://wix.sourceforge.net/manual-wix2/authoring_merge_modules.htm 。
这是合并模块wxs:
这是主要产品wxs:
当我构建安装程序并运行它时,合并模块中的文件不会进入用户从安装程序 UI 中选择的目录。无论如何,它们都会进入“[Program Files]\SomeCompany Technologies\Some Repository\”目录。
如果我从合并模块目录路径中删除对 Program Files 的引用并使用名称为“。”的根目录。拾取父 MSI 的父目录,然后合并模块拾取用户选择的目录就好了。但随后 Visual Studio 在构建时抛出一个错误,即无法收集,因为路径必须植根于标准目录之一,才能使用自动生成的 Guid。
那么如何让合并模块获取用户在安装时选择的目录,同时仍然保持合并模块路径植根于标准目录?