InstallShild选择安装目录主要涉及到SdAskDestPath 和SdAskDestPath2函数。
这两个函数功能貌似差不多,当点击窗口上的“浏览”按钮时,又调用SelectDirNoLog(也可以是SelectDir)方法弹出选择文件夹的对话框,并返回用户选择的结果。
如果想在用户选择的目录后面追加上公司名称等目录(这样做还有一个好处,当用户直接选择安装在磁盘根目录下的时候,仍然可以再追加一个目录而不是直接把各种文件释放到根目录中,显得十分混乱),可以在SelectDir返回之后,在得到的路径后面添加上自己的目录。不过要注意检查是否有重复的问题。在用户选择目录之前一般都会有一个默认的安装路径,SelectDir返回之后应检查一下返回的结果与默认值是否相同,如果不同的话再在用户选择的路径后面追加上公司名。
不过考虑的许多软件的默认安装路径都是C:/Program Files/公司名/产品名,而用户可能是直接把盘符改为D,所以应该对这种情况作出判断,避免D:/Program Files/公司名/产品名/公司名/产品名…… 这样的结果。再扩展一下的话,如果用户已经手动创建了目录,例如在
E:/软件/公司名/产品名;然后在浏览对话框里选择了这个目录,我们也应该能够识别。
具体的可以参考以下代码:
修改前的代码