installshield 2012 SUPPORTDIR

У меня есть установщик MSI Installshield, который я должен поддерживать. Он содержит около 10 текстовых файлов в Support Files/Billboards. Когда программа установки запускается, я открываю файлы для редактирования / копирования в пользовательской функции Installscript, используя следующий код:

OpenFile (nvReadFileHandle, SUPPORTDIR, LOGGER_PRM)

Этот код отлично работал, вероятно, для тысячи установок, многие из которых были именно этой версией установщика. Тогда, вчера, это не удалось в первый раз.

Посмотрев журнал MSI, я вижу, что файл извлекается в:

% TEMP% \ 3 \ {GUID1} \ <- игнорировать пробел

Когда приведенный выше код выполняется, значение SUPPORTDIR равно:

% TEMP% \ {GUID2} \ <- игнорировать пробел

Это никогда не подводило раньше. Так почему же это происходит сейчас? Что я могу сделать, чтобы это исправить? Я вижу противоречивую информацию, когда гуглю проблему. Я бы предпочел не делать проб и ошибок 50 раз, чтобы получить решение с учетом обстоятельств.

редактировать: вот еще немного информации. Я только что узнал, что сервер, на котором мы устанавливаем, является клоном виртуальной машины. Я подозреваю, что используемые переменные среды неверны. Если мы введем "cd %temp%", он перейдет в первый каталог выше. Однако, если я посмотрю на переменные среды с именем TEMP, они все ссылаются на второй каталог выше.

2 ответа

Решение

Используйте следующее, чтобы получить SUPPORTDIR:

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

Хорошо, я понял это. Вот что произошло, если кто-то столкнется с этой проблемой:

Во-первых, я нашел свой ответ по адресу 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

Если у вас есть временные папки для каждого сеанса, это приведет к такому поведению. Выключите это, выйдите из системы, снова войдите в систему, и вы должны сохранить данные прямо в корневой временной папке.

Тим"

Другие вопросы по тегам