InstallShield 的 DATABASEDIR 由自定义操作设置,但未(始终)考虑在内

InstallShield's DATABASEDIR set by Custom Action but not (always) taken into account

提问人:codetuner 提问时间:7/21/2016 更新时间:7/21/2016 访问量:277

问:

我有一个 InstallShield Limited Edition for Visual Studio 项目,用于安装 Visual Studio 2015 的扩展。因此,我的安装程序需要将部件安装到 Visual Studio 的 Extensions 文件夹中。

由于 Visual Studio 的安装文件夹可能因计算机而异,因此我使用脚本查找安装路径,然后将该路径分配给 DATABASEDIR。所以我有一个 CustomActions.vbs,内容如下:

Function SetDatabaseDir()
   Session.Property("DATABASEDIR") = "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\"
End Function

(除了在现实中,我做了一个注册表查找以找到正确的路径,但这有效,没有问题。

此自定义操作注册为“初始化后”操作。

现在奇怪的是,当我运行安装程序时,当它要求数据库目录时,它会显示我的脚本定义的正确路径,但是如果我单击next/next/next,它不会使用该路径,因此安装不正确。 但是,如果我运行安装程序,当它要求数据库目录显示正确的路径时,我按“更改”按钮,然后立即确定以确认该路径,它确实使用该路径并正确安装。

我可能做错了什么?

visual-studio 安装 installshield

评论

0赞 Oscar 7/21/2016
我曾经在想要开始调试安装操作时发出 MessageBox.Show 调用,当它弹出时,将调试器附加到 msiexec 进程
0赞 Michael Urman 7/21/2016
stackoverflow.com/a/37774367/89999 相同的问题(您设置属性为时已晚),但我不确定限量版是否公开了足够的功能来解决这个问题。
0赞 codetuner 7/22/2016
我在“初始化后(第一个对话框之前)”时刻设置该属性,因为它的完整名称听起来。所以这是在显示对话框之前。在限量版中,它是自定义操作可以运行的最早时刻。在对话框中,它确实显示了正确的路径。只是,如果我不按更改按钮,它就不会使用该路径......

答: 暂无答案