#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. После этого (однократного) изменения скрипт работал так, как должен. Спасибо за вашу помощь. Ваша подсказка с сообщениями об ошибках решила мою проблему! 🙂