我们的其中一个程序需要安装C盘或D盘。我需要安装所做的是,如果安装检测到具有特定文件夹结构的D盘,如下所示:
D:\AppData
如果它找到了它,它会把它安装在那里。如果找不到,它会安装在这里:
C:\AppData
我使用的是VS 2008
发布于 2010-08-25 00:32:53
将安装程序硬编码到任何特定的驱动器上是违反windows installer最佳实践的。这就是为什么我们使用像WindowsVolume和ProgramFilesFolder这样的东西。
也就是说,自定义操作在安装时有条件地提供覆盖是可以的,前提是如果自定义操作无法找到特定的覆盖,它将返回到标准的最佳实践。
例如
优先考虑命令行默认值。尝试设置D:\AppData尝试设置C:\AppData否则默认WindowsVolume\AppData (不是通过自定义操作完成的,内置于目录表中)
然后提供一个对话框,允许用户以交互方式重写
当我说“尝试”时,我的意思是编写一些代码来查看是否存在该字母的固定磁盘
现在你的问题是,听起来你正在使用Visual Studio部署项目,坦率地说,这个工具不会给你带来你需要的灵活性(如果没有一些聪明的构建后处理)来按照你需要的方式插入自定义操作。假设您的工具将支持您所需的内容,请编写一个自定义操作:
在UI和Execute Sequence中计划开销之前初始化(以支持静默安装)
如果属性已经设置(与命令行相关),并且如果没有安装产品(您不能在修复或维护操作期间更改目录;它是固定的),则将其设置为不运行
将其安排为只运行一次(这样CA就不会覆盖对话框所做的任何更改)
https://stackoverflow.com/questions/3558222
复制相似问题