【问题标题】:installshield 2012 SUPPORTDIRinstallshield 2012 支持目录
【发布时间】:2013-11-15 14:44:31
【问题描述】:

我有一个必须维护的 Installshield Installscript MSI 安装程序。它在 Support Files/Billboards 中包含大约 10 个文本文件。当安装程序运行时,我使用以下代码在自定义 Installscript 函数中打开文件进行编辑/复制:

OpenFile(nvReadFileHandle, SUPPORTDIR, LOGGER_PRM)

这段代码已经完美运行了大约一千次安装,其中许多安装程序都是这个版本的。然后,昨天第一次失败了。

查看 msi 日志后,我看到文件被提取到:

%TEMP%\3\ {GUID1}\

上述代码执行时,SUPPORTDIR的值为:

%TEMP%\ {GUID2}\

这从未失败过。那么为什么现在会发生呢?我能做些什么来修复它?当我用谷歌搜索问题时,我看到了相互矛盾的信息。考虑到具体情况,我宁愿不要反复试验 50 次以获得解决方案。

编辑:这里有更多信息。我刚刚发现我们正在安装的服务器是虚拟机的克隆。我怀疑使用的环境变量不正确。如果我们键入“cd %temp%”,它将转到上面的第一个目录。但是,如果我查看名为 TEMP 的环境变量,它们都指的是上面的第二个目录。

【问题讨论】:

    标签: windows-installer installshield installscript installscript-msi


    【解决方案1】:

    使用以下方法获取 SUPPORTDIR:

    nvBuffSize = MAX_SIZE;
    MsiGetProperty( hMSI, "SUPPORTDIR", svSUPPORTDIR, nvBuffSize);
    

    【讨论】:

      【解决方案2】:

      好吧,我想通了。以下是发生的情况,以防其他人遇到此问题:

      首先,我在http://social.technet.microsoft.com/Forums/windowsserver/en-US/01fc43a4-08b3-49c5-b265-60b819775194/temporary-directory-environment-variable-in-windows-server-2008?forum=windowsserver2008r2general找到了我的答案

      如果链接断开,用户名为 triegler 的人会说:

      “经过进一步研究,我发现了这个:

      http://technet.microsoft.com/en-us/library/cc755098.aspx

      如果您为每个会话设置了临时文件夹,则会导致此行为。关闭它,注销,重新登录,你应该直接保存到你的根临时文件夹。

      蒂姆"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 2013-02-10
        • 1970-01-01
        • 1970-01-01
        • 2015-11-29
        相关资源
        最近更新 更多