根据优秀的建议,我已将一些变量移动到WXI文件.如何将其包含在WXS文件中?
什么是合并模块以及它们如何使用?我听说它们是.msm文件,但我以前从未见过(我只见过.msi).
它们是在创建msi文件时使用的吗?它们是否与商业软件一起发布(可能与msi文件一起?)
他们有什么意义?它们是否隐藏了需要与开发软件一起安装(因此一起分发)的常见第三方或Microsoft组件的安装程序实现?
谢谢!
我有两个自定义操作,其中一个我想在安装我的产品时执行,另一个在卸载时执行.
我的自定义操作当前在"InstallFinalize"之后从合并模块调用,但安装和卸载都会发生这种情况.我已经尝试添加"NOT INSTALLED AND NOT UPGRADINGPRODUCTCODE"条件,但这给了我一个错误:
错误2762.无法编写脚本记录.交易未开始.
我也尝试附加到其他操作(例如,UnpublishComponents),但我找不到任何安装或卸载独有的操作.
我该如何解决这个问题?
我有一个使用内部vb项目作为COM的ac #project.
当我将项目转换为VS 2010以下行时抛出异常:
Set RTCClient_ = New RTCCORELib.RTCClient
Run Code Online (Sandbox Code Playgroud)
它RTCCore.RTCClient是Microsoft Merge Module for RTC(RTC Client API 1.2)的一部分,您可以将其嵌入到安装包中(在我的情况下包括EXE).
该RTCCore.RTCClient是正在注册下注册表中的类HKEY_CLASSES_ROOT\RTCCore.RTCClient
我得到的错误是:
错误:自动化错误
找不到指定的模块.(-2147024770)
但是,如果我正在更改我的csproj并使用ToolsVersion="2.0"上面的行工作,我可以得到RTCClient对象.
什么似乎是问题?
我可以找到关于msi如何升级的大量信息.例如有关小升级,小升级,主要升级及其使用案例和限制的信息.但是,我找不到有关合并模块的升级行为的信息,例如:
我想要的只是一个命令行工具,可以将文件从合并模块(.msm)提取到磁盘上.换句话说,我希望MSI可以使用相同的"管理安装"功能:
msiexec/a myProduct.msi TARGETDIR ="C:\ myInstallation"/ qn
以上只适用于msi(我可以告诉).因此,为了获得合并模块的相同效果,我正在尝试msidb.exe和orca.exe orca的文档说明:
可以从命令行指定许多合并模块选项...
从合并模块中提取文件
Orca支持三种不同的方法来提取合并模块中包含的文件.Orca可以提取单个CAB文件,将文件解压缩到模块树中,并在将文件合并到目标数据库后将其提取到源图像中...
提取文件
要从合并模块中提取单个文件,请使用
命令行上的... -x ...选项,其中是新目录树的所需路径.
指定的路径用作提取文件的根路径.所有文件都从嵌入在模块中的CAB文件中提取出来并放在指定的路径中.提取文件的目录布局基于合并模块的目录树.
这听起来像我需要的.但是当我尝试它时,orca只是打开一个编辑器(在我指定的msm上有信息)然后什么都不做.我尝试了各种命令行,通常从这开始:
orca -x theDirectory theModule.msm
我使用"theDirectory"作为我想要的任何空文件夹.就像我说的 - 它没有做任何事情.
然后我尝试了msidb,我做过的几次尝试看起来像这样:
msidb -d theModule.msm -w {storage}
msidb -d theModule.msm -x MergeModule.CABinet
在第一种情况下,我不知道要为{storage}放什么.在第二种情况下,事实证明文字字符串"MergeModule.CABinet"是必要的(它是保留名称).但是,提取的机柜不保留文件层次结构或"正常"文件名; 所以我不能用它来达到我的目的.
有人可以用命令行选项解释我做错了什么吗?有没有其他工具可以做到这一点?
当产品A和B各自安装多个MSI并且某些MSI相同时,卸载A或B会影响另一个吗?安装位置是否重要?
此外,当安装时产品B和B升级C中的常见MSI C版本较高时会发生什么?现在卸载B将删除打破产品A的常见MSI C.如何在不使用永久标志的情况下优雅地处理此问题?
我正在寻找安装包含VC2008的合并模块(mscrt90和atl90)我的主要问题是捆绑策略文件.我添加DLL和清单文件没有问题,但政策似乎行为不同,不能简单地复制...
到目前为止,我提出的最佳解决方案是将MSM文件包含在由NSIS脚本安装的单独MSI中.但这是一个丑陋的解决方案.
谢谢,伊甸园
我有.net项目,我从VS 2010转换到VS 2012.我正在通过InstallShield限量版为项目构建设置但我收到以下错误.
ISEXP:错误:-5008:此32位程序包不能包含64位数据.64位数据可能来自合并模块.
我搜索了很多,但找不到任何具体的解决方案.
任何帮助将不胜感激.
setup-project merge-module 32bit-64bit installshield-2012 visual-studio-2012
我正在尝试为以下问题找到解决方案:
我有许多程序(让我们称之为奴隶)都依赖于一个程序(主程序).我需要为每个奴隶分发一个安装程序.此安装程序需要安装主服务器.
我希望能够对这两个部分进行版本控制,因此多个msi似乎是正确的解决方案,与引导程序链接.
我的问题是如果从属安装程序安装了已安装的主服务器的相同版本,.msi将以修复/删除模式运行.
从用户的角度来看,这是不可接受的,只会引起混淆.
在尝试运行msi之前,有没有办法检查当前安装的fiels的版本?
我目前正在使用WIX的setupbld.exe作为引导程序.
任何其他解决方案非常感谢(我也尝试合并模块没有成功,因为版本控制是无用的)
merge-module ×10
installer ×4
wix ×4
32bit-64bit ×1
bootstrapper ×1
c# ×1
com ×1
extract ×1
nsis ×1
orca ×1
uninstall ×1
vb6 ×1
windows ×1
wix3 ×1