|
1
9
好的,用我自己的答案重新讨论这个问题,提供了一个很好的小VB脚本,可以完成所有繁重的工作。正如原始问题中提到的,目的是为系统管理员用户提供一个简单的解决方案,让他们自己进行更新/更改。
更新: 这个 MakeCab.MakeCab.1 对象已折旧,代码已更新,现在可以使用Windows 7。 |
|
2
3
IMHO这种情况表明正在安装的应用程序中缺少一个功能,并且在应用程序中修复该功能比使用MSI进行黑客攻击更容易。 让我首先说,一个简单的方法来“解决”你的用户,是告诉他们运行你的MSI管理员安装。这将从内部CAB中提取所有文件,并将所有文件放在指定的文件夹中:
然后,用户可以直接进入提取的文件夹结构并更新有问题的文件,然后将目录映射到其他PC并安装MSI。这可能会对MSI中具有哈希值的文件产生副作用(以避免欺骗),但在大多数情况下效果良好。 运行XML XPath查询新版本的部署工具(如Installshield和Wix)内置了对安装期间运行XPath查询的支持,因此可以动态编写节。 应用程序更新在PC上设置应用程序需要几个步骤。首先是将内容部署到机器上——这应该使用MSI来完成,毫无疑问。但是,在大多数高级应用程序中,需要几个类似于此“配置文件更新”的“安装后配置任务”。 ,而不是在MSI中实现功能。原因有很多,但最重要的是只有应用程序EXE才能保证在正确的用户上下文中运行。MSI文件可以使用系统权限、不同的用户帐户或通过其他机制运行。 我们通常建议使用MSI来 将所有必需的内容下载到电脑上 . 然后标记注册表,向应用程序表明这是第一次启动(对于更新,您可以增加计数器或将新版本号写入HKLM)。然后,应用程序可以在其启动例程中执行最后的配置步骤。它可以从%ProgramFiles%中的某个位置复制默认config.xml文件,并将其复制到用户配置文件中。然后它可以从MSI编写的HKLM中读取所需的值,然后用这些值更新config.xml文件。 一般情况下:避免由MSI或任何其他设置机制执行配置步骤。集中精力将所需的文件和注册表项写入计算机,然后让应用程序本身设置适当的运行时环境。这将允许更好的部署控制。如果你喜欢,最好是“封装”。MSI通过注册表向应用程序发送“消息”,应用程序根据这些消息知道“如何正确设置自身”。 |
|
|
3
2
我建议您自己创建msi文件(?) 当你使用 Wix 要生成msi,客户只需在替换文件后重新生成整个msi即可(wix是免费的)。否则,应该可以使用未嵌入msi的未压缩文件。在wix中,您必须添加一个 media element 没有内阁属性。缺点是您必须分发两个文件,而不是单个msi。 |
|
|
4
1
|
|
|
5
1
How to replace a file in a msi installer?
此命令提取MSI文件: msi2xml-c OutputDir TestMSI.MSI 打开OutputDir并修改文件。 要重建MSI运行,请执行以下操作: xml2msi.exe-m TestMSI.xml 您需要使用-m忽略修改MSIs文件时失败的“MD5校验和测试”。 |