Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программное обеспечение > Inno Setup ISPP


Автор: drkot 11.4.2011, 17:41
Код

#define OldFilename SourcePath+"setup."+Str(BuildNum-1)+".exe"
#if FileExists(OldFilename)
  #pragma message OldFilename
  #expr DeleteFile(OldFilename) <<<<<<<<<
  #pragma message OldFilename
#endif


Собственно ожидаемый результат это удаление файла имя которого содержит OldFilename....
но это упорно не происходит....
оператор до и после искомого выполняется нормально.

версия IS 5.4.1

Может у кого есть светлые мысли на этот счет...

Автор: Akella 12.4.2011, 09:39
Странный скрипт. Inno же понимает pascal. Попробуй на паскале составить скрипт.

Автор: drkot 13.4.2011, 01:21
Написал же ISPP (тобто препроцессор).
это действия которые выполняются до (в процессе) компиляции скрипта и к действиям самого скрипта при инсталляции имеют весьма незначительное отношение.
Да и к стати... аналогичная функция в ScriptPascal (встроенном в inno) работает без нареканий.

Автор: Poseidon 13.4.2011, 10:36
Ну у меня только одно соображение - не выполняется if. Почему может не выполнится? Не верный путь к файлу. Думаю, стоит проверить правильность составления первой строчки.

Автор: Akella 13.4.2011, 12:23
Цитата(drkot @  13.4.2011,  01:21 Найти цитируемый пост)
Написал же ISPP (тобто препроцессор).

Я просто не знаю, что такое ISPP и не когда не использовал.

Добавлено через 1 минуту и 9 секунд
Цитата(drkot @  13.4.2011,  01:21 Найти цитируемый пост)
это действия которые выполняются до (в процессе) компиляции скрипта 

Т.е. если в процессе компиляции нужно удалить или скопировать какой-то файл, то нужно использовать ISPP?

Автор: drkot 15.4.2011, 11:30
Цитата(Poseidon @  13.4.2011,  10:36 Найти цитируемый пост)
Ну у меня только одно соображение - не выполняется if.

были такие мысли... поэтому и добавлены операторы вывода сообщений...
Цитата(drkot @  11.4.2011,  17:41 Найти цитируемый пост)
оператор до и после искомого выполняется нормально.

Код

 #pragma message OldFilename

этот код выводит указанный ему текст в окно отладчика
содержимое сообщения полностью соответствует ожидаемому, и представляет из себя полный путь к желаемому файлу...


Akella, 
По сути это тот-же механизм директив применяемый в Delphi. С его помощью можно управлять процессом компиляции, и возможности этого механизма несколько шире чем просто удаление и копирование внешних файлов

Автор: Akella 4.6.2011, 22:43
А как переопределить имя приложения в зависимости от выбранного языка?

Просто имя приложения тоже нужно перевести.

Желательно не в файле перевода(*.isl), а в файле самого проекта, т.к. файл перевода универсальный для всех проектов, а проектов несколько.

Добавлено через 4 минуты и 49 секунд
тема здесь создал: http://forum.vingrad.ru/act-ST/f-21/t-331515.html

Автор: drkot 4.6.2011, 22:51
Akella,  уточни какое именно имя. (название исполняемого файла или название отображаемое в инсталяторе?)
если не сложно кусочек кода

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)