InstallShield не может скопировать в ProgramData

#installation #installshield #setup-deployment

#установка #installshield #установка-развертывание

Вопрос:

У меня проблема с InstallShield, которая мешает моим механизмам. Я не эксперт, но я использую IS уже более трех лет. Вот szenario:

Моя программа устанавливает файл конфигурации в C:ProgramData [Название компании][Название продукта]. Когда я устанавливаю обновление, оно должно переименовать старый файл .cfg в файл .bak, чтобы мы могли обновить и файл .cfg. Но без видимой причины это больше не работает. Он работал годами со старым IS2012, но теперь он перестал работать. Я попробовал это с помощью InstallScript, с таблицей MoveFile и другими методами. Ничего не сработало.

Но когда я пытаюсь переименовать (и скопировать) файл в папку установки (в разделе ProgramFiles), он работает. Но он больше нигде не работает.

У кого-нибудь есть идея, почему я сейчас не могу записывать в эту папку? Я очень разочарован, и у меня больше нет идей…

Спасибо за помощь и извините за мой плохой английский.

Комментарии:

1. Можете ли вы добавить более подробную информацию о том, как вы пытаетесь скопировать файл, и узнать, что говорится об этом в подробном журнале установщика Windows (если что-нибудь) и / или что на самом деле указывает process monitor? Не должно быть слишком много ошибок, особенно если у вас уже была эта работа в предыдущей сборке.

2. Спасибо за ваш комментарий. Предыдущим методом работы была запись в таблице MoveFile. это работало нормально, пока я не обновил TFS и Installshield. На данный момент я работаю с installscript, который использует команду «CopyFile». Это работает до тех пор, пока я устанавливаю installdir в качестве целевого каталога. Теперь я добавил второй скрипт, который должен скопировать успешно сохраненный файл обратно в нужный каталог. но это тоже не работает. Файл журнала установки выдает только одно загадочное сообщение об ошибке: «Примечание: 1: 2727 2: » Но я ничего не нашел.

Ответ №1:

Возможно, вы захотите попробовать использовать MsiDiff или аналогичный инструмент, чтобы изолировать то, что изменилось между сборками ваших пакетов .msi. Ошибка в подробном журнале может быть довольно важной.

Примечание: 1: 2727 2:

Если вы посмотрите сообщения об ошибках установщика Windows и выполните поиск 2727, вы обнаружите, что эта ошибка означает

Запись каталога ‘[2]’ не существует в таблице каталогов.

Поскольку [2] соответствует пустому значению в сообщении, это говорит о том, что существует таблица с идентификатором каталога, который ошибочно пуст. Вы можете попробовать некоторые из обычных подозреваемых, например, выполнить проверку, чтобы определить проблему. Вы упоминаете таблицу MoveFile, но она принимает свойства вместо каталогов, поэтому я не уверен, выдаст ли это это сообщение.

Если этого недостаточно, чтобы помочь вам найти проблему и решить ее, вам следует обновить свой вопрос, добавив дополнительные конкретные детали.

Комментарии:

1. Я нашел решение этой проблемы. Основной проблемой была команда renameFile(); Для этой команды требуется переменная Source и INSTALLDIR, которая не установлена в то время, когда я хочу выполнить скрипт. поэтому я задаю путь непосредственно в параметрах, чтобы избежать параметра ISTALLDIR. После этого (однократного) изменения скрипт работал так, как должен. Спасибо за вашу помощь. Ваша подсказка с сообщениями об ошибках решила мою проблему! 🙂