3

单击我的 MSI 后,我需要立即复制文件。我现在正在使用 CopyFiles 功能,但它做得不够快。我需要自己的自定义操作还是有办法在显示任何 UI 之前移动它?

谢谢

4

2 回答 2

4

使用 reg 文件和 ini 文件完成的任何操作通常都可以嵌入并在 MSI 中完成。这是非常优越的,因为如果 MSI 的安装被中止,MSI 文件将具有内置的回滚支持。

Installshield 提供了它自己的 setup.exe 启动器文件,它实际上根本不是 MSI 文件,正是这个文件将这些临时文件放置在系统上。这是 MSI 时代之前的遗留功能,它基本上允许糟糕的 MSI 设计高于其他任何东西。

正如 Chris 指出的那样,MSI 文件在其安装序列启动之前不应执行文件操作和系统更改(MSI 内 InstallExecuteSequence 中的 InstallInitialize 和 InstallFinalize 之间的操作)。

我建议将 ini 文件信息放在 IniFile 表中,将注册表信息放在 Registry 表中。您是否在安装过程中运行 EXE 文件?

于 2012-08-21T23:33:28.827 回答
2

我认为需求的定义和设计都很差。这是你应该做的一个例子:

我有一个客户直接(零售)和间接(通过增值经销商)销售产品。他的应用程序是可扩展的,因为他或他的 VAR 或他们的最终用户客户要求能够扩展/修改/覆盖具有以下属性的 MSI:

1) 升级代码

2) 产品名称

3) 许可协议

4) 图标

5) 配置文件

6) 数字证书

我的客户用 C# 编写了一个向导 UI,指导用户完成所有这些操作,我编写了一个使用 WiX DTF 库 (Microsoft.Deployment.WindowsInstaller) 与 MSI 交互的库。结果是一个实用程序,它完全封装了将 MSI 转换为变体的过程。

这也是赛门铁克防病毒软件的工作方式。

通过一些开发时间,您可以引导您的用户使用更新的 ProductName 和 Registry 表条目构建 MSI。生成的 MSI 不需要任何自定义操作,并且仍将遵循所有适用的 Windows Installer 最佳实践。

于 2012-08-22T11:47:21.400 回答