我有一个新的InstallShield (Pro)项目,用于安装.Net应用程序。在安装的文件中包括一个文本文件.config文件。我希望为交互式安装用户提供使用自定义文件(由用户选择)覆盖该文件的能力。
我已经为用户创建了一个自定义对话框来提供文件路径。文件路径修改自定义公共属性(称为CUSTOMBOOTSTRAP)。
现在是一个棘手的问题:如何使用用户在此路径上提供的内容覆盖默认文件?这是我需要的自定义操作,还是有其他方法(动态文件链接)。
谢谢,-James
发布于 2013-08-15 00:12:31
我觉得这个问题很有趣,主要是因为MSI不适合这样做。因此,下面是设计您的方法的一些注意事项:
修复过程中会发生什么?是问题版本中的文件,如果是的话,用户可以提供比您包含的版本更低的版本吗?(或者类似地,文件版本控制规则的其他部分也会导致类似的情况吗?)如果是这样的话,您将希望避免让您的.msi“拥有”该文件,因为它将用它所知道的文件覆盖用户选择的文件。此外,除非有理由相信用户提供的路径仍然可用,否则在修复之前,您必须处理丢失的路径。
卸载时会发生什么情况?应该删除或丢弃文件吗?你知道它的名字吗?(如果名称可以更改,但需要删除文件,请考虑“记住属性”模式。)
您有哪些选项?“半自定义操作”可能能够以几种不同的方式处理这个用例。您可以为表格或表格创建临时条目。或者,如果您愿意做足够的修改来填充Directory表和Media表,那么甚至可以填充表格。我认为这些都很难正确处理。(同样,不要忘记修复和删除-后者可能需要临时的表格条目。)或者,您可以直接复制或移动文件的自定义操作。或者您可以重新设计应用程序:
作为一个用户文件是否有意义?可能是一种需要在整个机器上共享的配置形式,甚至需要由网络管理员配置。如果是这样的话,最好采用上述方法之一,以便由管理员安装,然后由标准Windows文件系统安全性来保护。但是,如果它确实是一个用户配置文件,那么它可能应该在您的应用程序中或者由用户直接管理。
发布于 2013-08-21 20:21:00
最后,我与InstallShield (由FlexEra制作)讨论了这种情况,他们建议如下:
这部分解决了我的问题,但没有完全解决,因为它不允许我在安装时指定一个新文件;我只能在现有文件中进行选择。
https://stackoverflow.com/questions/18222198
复制相似问题