用InstallShield打包 在用户选择的安装目录后面追加路径的问题

本文介绍了如何使用InstallShield在用户选择的安装目录后面追加自定义路径,以避免将文件直接释放到磁盘根目录。通过SdAskDestPath和SdAskDestPath2函数结合SelectDirNoLog方法,检查并防止重复路径,确保安装路径的整洁。文中提供了一段修改后的代码示例,展示了如何实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     InstallShild选择安装目录主要涉及到SdAskDestPath 和SdAskDestPath2函数。

 

     这两个函数功能貌似差不多,当点击窗口上的“浏览”按钮时,又调用SelectDirNoLog(也可以是SelectDir)方法弹出选择文件夹的对话框,并返回用户选择的结果。

 

     如果想在用户选择的目录后面追加上公司名称等目录(这样做还有一个好处,当用户直接选择安装在磁盘根目录下的时候,仍然可以再追加一个目录而不是直接把各种文件释放到根目录中,显得十分混乱),可以在SelectDir返回之后,在得到的路径后面添加上自己的目录。不过要注意检查是否有重复的问题。在用户选择目录之前一般都会有一个默认的安装路径,SelectDir返回之后应检查一下返回的结果与默认值是否相同,如果不同的话再在用户选择的路径后面追加上公司名。

     不过考虑的许多软件的默认安装路径都是C:/Program Files/公司名/产品名,而用户可能是直接把盘符改为D,所以应该对这种情况作出判断,避免D:/Program Files/公司名/产品名/公司名/产品名…… 这样的结果。再扩展一下的话,如果用户已经手动创建了目录,例如在

E:/软件/公司名/产品名;然后在浏览对话框里选择了这个目录,我们也应该能够识别。

 


具体的可以参考以下代码:

修改前的代码

修改后

 

     把重写后的SdAsdDestPath文件取一个名字,例如MyAskDestPathDlg.rul,函数名叫做MyAskDestPath,然后在主程序里加上#include "MyAskDestPath.rul",然后在以前调用SdAskDestPath2的地方调用自己的函数就可以实现在用户选择的目录后面追加公司名称的效果了。

 

PS:
SdAskDestPath和SdAskDestPath2以及其他大量系统方法的代码可以在InstallShield安装目录下的 ./InstallShield X/Script/isrt/src 目录中找到。

 

 

附:SdAskDestPath2Dlg.h源码


 

 

 

以上是我总结的关于InstallShield制作安装包时,在用户选择的目录后面追加一个目录的解决方法,比较简单。欢迎大家批评指教或转帖。

转帖请注明出处 http://blog.youkuaiyun.com/icycode/archive/2009/12/01/4916392.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值