【问题标题】:Visual Studio Launch ConditionVisual Studio 启动条件
【发布时间】:2015-02-10 02:31:36
【问题描述】:

这可能是常见问题之一。但到目前为止我还没有遇到任何帮助。在为应用程序创建 MSI 包时,我需要检查是否安装了 JDK 1.7.0。如果是,则继续安装,否则显示一条消息,在用户许可后将重定向到安装 URL 以安装先决条件。

我使用了“添加注册表搜索”,但我提供的条件要么总是失败,要么总是通过。以下是我使用的参数:

添加注册表搜索

属性:JDKEXISTS

RegKey:SOFTWARE\JAVASOFT\JAVA 开发工具包

根目录:vsdrrHKLM

值:当前版本

启动条件:

条件:(JDKEXISTS="已安装")

InstallUrl:要下载的url

消息:您的系统需要 Java 1.7.0 或更高版本。立即下载?

但是,它不起作用。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: windows-installer


    【解决方案1】:

    如果注册表搜索在注册表中找到该项目,那么您需要用作条件的只是 JDKEXISTS。够了。我不知道该值是否实际上是“已安装”,这是您正在检查的,但您不需要它。如果未找到该值,则 JDKEXISTS 将不存在(并且将为 false)。

    这看起来像一个 VS 设置项目。 VS 设置项目注册表搜索中也存在各种错误。没有办法搜索本机 64 位注册表,以防您的密钥所在的位置。注册表搜索始终搜索 32 位注册表。您需要编辑 MSI 文件(使用 Orca)以修改 RegLocator 表类型值以添加 64 位搜索选项(添加 16)。 https://msdn.microsoft.com/en-us/library/aa371171(v=vs.85).aspx

    【讨论】:

    • 不起作用,甚至尝试使用“添加文件搜索”条件并指定要在 [ProgramFiles64Folder] 下查找的唯一文件名,搜索深度为 3。在条件部分。显然,如果安装了先决条件(即跳过 JDK 安装),则效果很好,但如果未安装,它甚至会跳过 JDK 安装。我猜“NOT JDKEXISTS”不是合适的条件。这里有点乱!
    • 不确定你在做什么,但我可以在 [SystemFolder] 中找到深度为 0 的 notepad.exe 和 [ProgramFiles64Folder] 中的文件。我通过将欢迎对话框中的文本设置为...进行测试。 [GOTINTEL] 安装程序将引导您完成... 其中 GOTINTEL 是属性名称,它返回文件的路径。您的搜索可能有效,但更进一步的搜索无效。
    • 好的,现在我想将用户重定向到安装 URL,以防未安装 JDK。我应该如何设置条件?
    • 将条件连同错误信息一起添加到Launch Conditions节点,并使用条件中的属性,如NOT JDKEXISTS
    • 这正是我所做的,但不知何故,条件搞砸了!也许'NOT'不是一个合适的关键字..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 2020-02-04
    • 2016-06-13
    • 2013-09-22
    • 2012-08-28
    • 1970-01-01
    相关资源
    最近更新 更多