问题标签 [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.
visual-studio-2010 - 在 Visual Studio 2010 安装项目中添加 64 位机器的合并模块
我有一个依赖于 Visual Studio 2010 C++ Runtime Redistributable 的 32 位应用程序。
但是,在我的应用程序的一部分中,我需要进行 dll 注入。出于某种原因,我现在真的不想进入(相信我的话)。如果操作系统是 64 位,注入代码和 dll 需要是 64 位,如果操作系统是 64 位,则需要 32 位。
问题在于,在操作系统为 64 位的情况下,代码依赖于 64 位的 Visual Studio 2010 C++ Runtime Redistributable。我只希望将 32 位 Visual Studio 2010 C++ 运行时可再发行组件安装在 32 位系统上,并将 32 位 Visual Studio 2010 C++ 运行时可再发行组件和 64 位 Visual Studio 2010 C++ 运行时可再发行组件安装在 64 位机器上。我怎样才能做到这一点?
wix - WiX MSI 在移除 CRT MSM 之前和之后的行为不同
我有一个用 WiX 构建的 MSI。它执行以下自定义操作:
它是这样安排的:
myapptray.exe
作为当前在桌面上活动的用户,碰巧使用模拟从其本地系统的起始上下文(从 MSI 上下文运行)重新启动自身。这不在我的控制范围内,并且 Impersonate='yes' 不起作用,因为可能会调用 MSI 以从系统服务的上下文进行升级,这意味着 Impersonate='yes' 最终仍将应用程序作为本地系统运行。
我最近从将 VC9 CRT 作为 MSM 包含在此 MSI 中,将其包含在引导程序 exe 中。
这样做会阻止myapptray.exe
自定义操作成功运行。模拟失败,WTSQueryUserToken
其中返回ERROR_PRIVILEGE_NOT_HELD
。这似乎意味着删除 MSM 实际上改变了运行 MSI 的用户上下文,但这似乎很荒谬。我从 wxs 文件中删除的唯一行是 MSM 的<Merge>
and<MergeRef>
标记,没有其他任何更改。
我究竟做错了什么?
windows - 在 MSI 中多次使用同一合并模块的正确方法是什么?
我正在创建一个 Windows 安装程序脚本,我有两个功能要安装在他们自己的文件夹中。
我想对这两个文件夹执行合并模块。但是,Windows Installer 只允许合并模块的一个副本,因此我只能将它安装到一个应用程序文件夹中。
是否可以这样做,如果没有,是否有解决方法?
谢谢!
c# - 使用 COM 从注册表加载类适用于 ToolsVersion="2.0" 但因 ToolsVersion="4.0" 失败
我有一个使用内部 vb 项目作为 COM 的 ac# 项目。
当我将项目转换为 VS 2010 时,以下行向我抛出异常:
这RTCCore.RTCClient
是用于 RTC 的 Microsoft 合并模块(RTC 客户端 API 1.2)的一部分,您可以将其嵌入到您的安装包中(在我的情况下包括 EXE)。
这RTCCore.RTCClient
是正在注册到注册表的类HKEY_CLASSES_ROOT\RTCCore.RTCClient
我得到的错误是:
错误:自动化错误
找不到指定的模块。(-2147024770)
但是,如果我正在更改我的 csproj 并使用ToolsVersion="2.0"
上面的行,我可以获得 RTCClient 对象。
似乎是什么问题?
windows - 合并模块升级问题
我有一个 MSI/WIX 安装程序项目,它包含一个合并模块,它为一些自定义 USB 硬件安装驱动程序。
安装程序的新版本会定期生成,但合并模块已经有一段时间没有改变了。但是,当使用我们的安装程序执行安装升级时,安装程序总是会重新安装驱动程序文件,这会提示 Windows 即插即用,重新安装 USB 设备的设备驱动程序。
如果合并模块没有更改,安装程序的目的是跳过驱动程序安装。合并模块的版本号没有改变,所以这是我期望发生的。
合并模块的版本号是否被主安装程序包含在内?在这种情况下,如果驱动程序文件没有更改,是否可以让安装程序不理会它们?
就目前而言,我们的构建系统从头开始构建所有内容以进行发布。也许解决方案是将合并模块作为二进制依赖项包含在内,并且仅在实际发生更改时才重建它(和驱动程序工件)?
c#-4.0 - C# 项目中的 SQL Server CE 运行时?
我有一个使用 SQL Server Compact Edition 的应用程序。所以我需要运行时在所有机器上。我一直在寻找运行时的合并模块,但是我在那里没有运气。
有没有办法将运行时引入应用程序本身?这样就不需要用户安装运行时了吗?
或者有没有办法从 msi 中提取模块并将它们加载到我的安装程序中?
我正在使用 Visual Studio 2012。并与一些安装程序创建者一起玩,比如 Create install free。作为一个方面,有没有人有一个好的免费软件安装程序创建者?
任何帮助都会很棒,
提前谢谢了
twain - 如何获取和运行 TWAIN DSM 文件?
当我运行 Twain 实现的框架时,我收到此错误:NO TWAIN DATASOURE IS NOT INSTALLED
. 我正在使用 Window7 64 位。我从 Sourceforge TWAIN DSM FILES下载了一些驱动程序。
下载目录包含:
- TWAINDSM.dll
- TWAINDSM64.msm
TWAINDSM.dll
我将文件复制到C:\Windows\SysWOW64
. 我的疑问是如何获取 twain 相关.ds
文件。我不知道 dotnet 相关的东西。请帮我。
installation - 如何将合并模块安装位置设置为安装目录
我正在为 Wix 3.6 中的 Firebird 创建一个合并模块,合并模块默认路径转到窗口驱动器,请指导我如何将合并模块安装目录永久设置为用户在安装时选择的安装目录。无论用户选择哪个路径,都需要将合并模块安装到应用程序路径。
例如
用户选择的路径\应用程序名称\app.exe(或)
用户选择的路径\应用程序名称\合并模块文件夹(或)
用户选择的路径\app.exe(或)
用户选择的路径\合并模块文件夹
实际上在 installshield 中,这可以通过右键单击合并模块并从下拉菜单中设置安装位置来完成
谢谢
installation - 将合并模块添加到 Wix 项目导致升级失败
因此,我有一个使用 WiX 编写的产品安装程序,一旦合并了“Microsoft_VC100_CRT_x86.msm”合并模块,它就无法正确升级。安装过程中不会删除旧产品。如果从项目中删除合并模块,则会按原样删除旧版本。
合并模块非常简单地包含在 Directory 节点下:
然后在特性中引用:
我正在增加产品的版本号,但升级失败,新版本安装在旧版本之上,但没有执行正确的升级 - 两个版本都列在“添加或删除程序”中。
旧产品应按如下方式删除:
我还根据http://jpassing.com/2007/06/16/where-to-place-removeexistingproducts-in-a-major-msi-upgrade/尝试了 RemoveExistingProducts 的各种其他职位,结果相同。
在安装程序的详细日志中可以看到以下内容:
在 WiX 构建日志中,我得到以下信息(但从内存中这对于 VC 运行时 msms 来说是正常的?):
msi 中的 InstallExecuteSequence 如下所示:
如果删除了合并模块(由于安装程序中的文件更新,需要将其包含在内),则升级将按预期进行。这是合并模块的东西/WiX/Windows 安装程序中的错误,还是我做错了什么?