多目录安装

时间:2012-07-16 15:39:05

标签: windows-installer installshield custom-action installscript installscript-msi

概述

我们目前正在使用installsheild 2012来创建一个基本的MSI包,以便将我们的软件提供给客户。

我是自学的installsheild所以我怀疑我会遵循我做的最佳实践,但是对自定义操作,安装脚本和对话框有合理的理解。我对目录编辑器和物业经理有点不确定,所以如果需要这些,请慢慢来。

在安装过程中,用户请求他们能够将我们的一个文件夹安装到系统上的其他驱动器上,因为它充满了日志记录信息,并且可能非常大。所以这个文件夹需要安装在INSTALLDIR之外。

目标

我希望创建一个对话框,使用户可以在安装过程中为该文件夹选择安装位置。

此过程需要通过用户界面完成,因为它需要非常灵活,因为日志记录文件夹的内容可以从客户端更改为客户端。

理想情况下,我希望在应用程序数据\文件和文件夹\目标计算机中显示一个文件夹,界面部分允许任何人来维护项目,只需将文件夹拖放到那里即可。

虽然文件夹的管理需要通过用户界面完成,但是这背后的过程即选择文件夹然后复制文件可以通过任何方式实现,只要我有一些指示可以帮助我

我尝试了什么

1. Installscript&自定义操作 - 我编写了一个自定义操作来使用AskPath,它将获取用户选择安装Log文件夹的位置,然后在那里创建一个目录。我会在installscript中硬编码日志文件夹的内容(但是由于文件夹结构可以改变,这种方法变得难以维护)

2. 组件&功能 - 我尝试使用日志文件夹作为单独的功能并拥有自己的组件但我无法从对话框中继承属性并将组件与对话框链接,该对话框将选择安装位置日志文件夹。

3. 先决条件 - 我在线查看,发现我可以通过先决条件管理器安装日志文件夹,将日志文件夹压缩为自解压Zip(I我还没有运气,我希望有更清洁的方式)

我想我可能已经接近一些尝试做我想做的事情,但我一直在追求死胡同。

非常感谢任何帮助,感谢您阅读,我知道这是一篇很长的帖子。

Cawston

1 个答案:

答案 0 :(得分:1)

这样做:

在安装程序中创建两个目录:

INSTALLDIR = [ProgramFilesFolder] Company \ Product LOGDIR = [INSTALLDIR]记录

然后查看“目标文件夹”对话框。克隆为INSTALLDIR制作各种图标,文本和浏览按钮的所有控件。

将显示文本从[安装目录]更改为[LOGDIR]。接下来,在Browse按钮上复制控件事件,并将[_BrowseProperty]值更改为LOGDIR而不是INSTALLDIR。

就是这样。 LOGDIR将从INSTALLDIR的子节点开始,但如果用户按下Browse并更改它,则该关系将被破坏。然后,您可以更改INSTALLDIR,它不会更改LOGDIR。