首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InstallShield:将安装中的一个文件替换为交互式用户提供的另一个文件

InstallShield:将安装中的一个文件替换为交互式用户提供的另一个文件
EN

Stack Overflow用户
提问于 2013-08-14 02:17:06
回答 2查看 1.5K关注 0票数 0

我有一个新的InstallShield (Pro)项目,用于安装.Net应用程序。在安装的文件中包括一个文本文件.config文件。我希望为交互式安装用户提供使用自定义文件(由用户选择)覆盖该文件的能力。

我已经为用户创建了一个自定义对话框来提供文件路径。文件路径修改自定义公共属性(称为CUSTOMBOOTSTRAP)。

现在是一个棘手的问题:如何使用用户在此路径上提供的内容覆盖默认文件?这是我需要的自定义操作,还是有其他方法(动态文件链接)。

谢谢,-James

EN

回答 2

Stack Overflow用户

发布于 2013-08-15 00:12:31

我觉得这个问题很有趣,主要是因为MSI不适合这样做。因此,下面是设计您的方法的一些注意事项:

修复过程中会发生什么?是问题版本中的文件,如果是的话,用户可以提供比您包含的版本更低的版本吗?(或者类似地,文件版本控制规则的其他部分也会导致类似的情况吗?)如果是这样的话,您将希望避免让您的.msi“拥有”该文件,因为它将用它所知道的文件覆盖用户选择的文件。此外,除非有理由相信用户提供的路径仍然可用,否则在修复之前,您必须处理丢失的路径。

卸载时会发生什么情况?应该删除或丢弃文件吗?你知道它的名字吗?(如果名称可以更改,但需要删除文件,请考虑“记住属性”模式。)

您有哪些选项?“半自定义操作”可能能够以几种不同的方式处理这个用例。您可以为表格表格创建临时条目。或者,如果您愿意做足够的修改来填充Directory表和Media表,那么甚至可以填充表格。我认为这些都很难正确处理。(同样,不要忘记修复和删除-后者可能需要临时的表格条目。)或者,您可以直接复制或移动文件的自定义操作。或者您可以重新设计应用程序:

作为一个用户文件是否有意义?可能是一种需要在整个机器上共享的配置形式,甚至需要由网络管理员配置。如果是这样的话,最好采用上述方法之一,以便由管理员安装,然后由标准Windows文件系统安全性来保护。但是,如果它确实是一个用户配置文件,那么它可能应该在您的应用程序中或者由用户直接管理。

票数 1
EN

Stack Overflow用户

发布于 2013-08-21 20:21:00

最后,我与InstallShield (由FlexEra制作)讨论了这种情况,他们建议如下:

  1. 如果可能的话,不要将原始文件放在InstallDir中。
  2. 为文件的每个变体创建不同的组件,每个组件都带有不同的发布标志。
  3. 只安装与所需的发布标志相关联的组件。

这部分解决了我的问题,但没有完全解决,因为它不允许我在安装时指定一个新文件;我只能在现有文件中进行选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18222198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档