【问题标题】:How to setup Installer project with conditional file copying如何使用条件文件复制设置安装程序项目
【发布时间】:2011-07-06 11:06:11
【问题描述】:
我正在构建一个 VS 2010 安装程序,我想根据我在 UI 中选择的选项将文件复制到 app 文件夹(UI 并不简单,因此唯一的选择是在安装自定义操作中显示自定义对话框)。
问题是自定义操作实际上是在复制文件之后执行的。
我能想到的一个可能的解决方案是将所有这些文件安装到应用程序目录中,然后在自定义操作中删除一些不必要的文件。但是这些文件在某种程度上是“安全的”,所以我不想将它们复制到文件系统,即使是很短的时间。
有什么想法吗?
【问题讨论】:
标签:
visual-studio-2010
windows-installer
installation
setup-project
【解决方案1】:
如果您的文件不应该在文件系统上,那么您的要求就有问题。 .msi 存储本身是一种开放格式,可以被许多工具读取,因此如果有人知道该文件,他们可以手动找到并提取它。
我同意最好避免在安装文件后删除它们,原因有两个。一:它避免了浪费的工作,二:它不会因为丢失 Windows Installer 认为应该存在的文件而导致修复场景。您可能应该弄清楚如何确定这些文件是否应该在安装的早期阶段出现,并设置导致这种情况发生的属性(按条件禁用组件,或更改功能状态)。
【解决方案2】:
MSI 对话框中的大多数控件都使用installer properties。例如,一个复选框可以使用名为 MY_CHECKBOX 的属性,该属性设置为一个值或为空,这取决于复选框是否被选中。
这些属性可用于条件文件: