单击MSI后,我需要立即复制文件。我现在正在使用CopyFiles功能,但它没有做得足够快。我是否需要自己的自定义操作,或者在显示任何UI之前有没有办法移动它?
由于
答案 0 :(得分:4)
使用reg文件和ini文件完成的任何操作通常都可以嵌入在MSI内部完成。这非常优越,因为如果MSI的安装中止,MSI文件将具有内置的回滚支持。
Installshield提供了自己的setup.exe启动程序文件,该文件实际上根本不是MSI文件,正是这个文件将这些临时文件放在系统上。这是MSI之前的遗留功能,它基本上允许MSI设计不如其他任何东西。
正如Chris指出的那样,MSI文件在启动安装序列之前不应执行文件操作和系统更改(在MSI内的InstallExecuteSequence中InstallInitialize和InstallFinalize之间的操作)。
我建议将ini文件信息放在IniFile表中,并将注册表信息放在Registry表中。您是否在安装过程中运行EXE文件?
答案 1 :(得分:2)
我认为要求的定义和设计很差。以下是您应该做的事情的一个例子:
我有一个客户直接(零售)和间接(通过增值经销商)销售产品。他的应用程序是可扩展的,因为他或他的VAR或其最终用户客户有要求能够使用以下属性扩展/修改/覆盖MSI:
1)UpgradeCode
2)ProductName
3)许可协议
4)图标
5)配置文件
6)数字证书
我的客户在C#中编写了一个向导UI,指导用户完成所有这些操作,并编写了一个使用WiX DTF库(Microsoft.Deployment.WindowsInstaller)与MSI交互的库。结果是一个实用程序,它完整地封装了MSI转换为变体的过程。
这也是Symantec Antivirus的工作方式。
通过一些开发时间,您可以引导用户构建具有更新的ProductName和Registry表条目的MSI。生成的MSI不需要任何自定义操作,并且仍将遵循所有适用的Windows Installer最佳实践。