2010-08-24 54 views
0

我们需要为我们的某个程序安装C驱动器或D驱动器。我需要什么样的安装做的是,如果安装检测具有一定的文件夹结构,像这样一个d驱动器:已安装检测驱动器以进行安装

d:\ AppData的

如果它发现它,它会出现安装。如果没有找到它,它会在这里安装:

C:\ AppData的

我使用VS 2008

回答

0

这是Windows安装程序的最佳做法违反了硬编码的安装程序任何特定驱动器。这就是为什么我们使用诸如[WindowsVolume]和[ProgramFilesFolder]之类的东西。

也就是说,自定义操作可以在安装时有条件地提供覆盖即可,前提是如果自定义操作找不到特定覆盖,则会返回标准最佳实践。

Forexample

将尊重命令行视为第一优先。 尝试集d:\ AppData的 尝试集C:\ AppData的 否则默认的[WindowsVolume] \ AppData的(而不是由自定义操作完成,建成目录表)

再后来提供了一个对话框,允许用户以交互方式overrride

当我说“试试看”我的意思是写一些代码,看看那封信的固定磁盘存在

现在对你的问题将是,它听起来就像你正在使用Visual Studio部署项目,并坦言这工具无法为您提供所需的灵活性(无需一些巧妙的后期构建过程)以按照n的方式插入自定义操作去掉它。假设你工具将支持你需要什么,写一个自定义操作:

成本之前计划初始化在两个UI和执行序列(支持无提示安装)

条件它不是如果酒店内运行已经设置(以遵守命令行),并且如果产品是未安装的(在维修或维修操作期间您不能更改目录;它是固定的)

安排它只运行一次(这样CA将不会覆盖对话所做的任何更改)

+0

所有自定义操作似乎都是“之后”安装之前没有的。 – friendlyProgrammer 2010-08-24 16:36:51

+0

正确,问题在于Visual Studio Deployment Projects不公开您需要的计划选项类型。它只会给你一个回滚,安装,提交和卸载的抽象,这些抽象都在执行顺序的方式之后,你需要安排。 如果你希望能够完成你正在尝试做的,你必须:1)自卸vdrpoj 2)获得良好的调整内建MSI-S作为postbuild步骤或3)使用封装合并模块中的行为除vdrpoj之外的其他工具,然后使用vdproj消耗该模块。 – 2010-08-24 17:24:41

+0

感谢您的回复。 – friendlyProgrammer 2010-08-24 19:44:24