Просмотр темы форума
Тема: Не корректная работа команд
Здравствуйте.
Давно заметил такую особенность работы команд копирования файлов и 'Создать директории'. Если создавать папку на диске только для чтения например DVD-ROM, сетевой диск, то при попытке создания папки инсталятор выдает ошибку и прекращает работу, то есть ошибка именно программы и исталяция прерывается не корректно.
В инсталяторе есть возможность проверить доступ для записи файла перед опреациями, для папок можно только проверить существование папки, но не возможность записи в папку.
Поэтому вопрос можно ли добавить команду для папок проверки возможности записи в папки, ну или или сделать корректную обработку при невозможности создать папку инсталятором, чтобы он не выдавал ошибку при не возможности создать папку, а просто продолжал выполнение инсталятора.
Мы сейчас пока переводим все в Unicode, поэтому изменений в текущую версию сейчас вносить не будем.
Проверить директорию на запись можно с помощью команды Исходный код
str stemp = "c:\\path to check"
uint ok
stemp.faddname( "uniquefilename" )
if result = open( stemp, $OP_CREATE )
{
ok = 1
close( result )
deletefile( stemp )
}
macrox_setint( "writabledir", ok )
Спасибо.
Здравствуйте.
Заметил на днях, что переменная ‘isadmin’ не всегда правильно определена, то есть показывает, что нет прав админа, хотя запущено с правами админа, при этом пункт ‘Проверка требований - Администратор’ работает правильно.
Какой версией CreateInstall пользуйтесь и на какой Windows получаете такое?
Вставьте команду Redirect console output
Path: CUSTOM PATH
Filename: net.exe
Command-line parameters: session
Resulting variable: conout
После нее вставьте команду Message
Text:
isadmin=#isadmin#
#conout#
Запустите этот пример два раза - один с правами администратора, а другой раз с без прав с отмеченным Install script - Install root - Administrative rights are not required.
Сделайте оба раза скриншоты сообщения и пришлите на info@createinstall.com c темой CreateInstall.
Версия 6.4.0. Я это заметил на Windows 7x64 Максимальная. Я всегда использовал команду ‘Проверка требований - Администратор’, а тут появилась переменная 'isadmin' и я её использовал и она вроде работала, а когда я начал запускать файл установки для проверки на всех подряд Windows, то на некоторых Windows 7x64 Максимальная, переменная всегда выдавала 0, я для проверки добавил команду ‘Проверка требований - Администратор’ и она работала правильно, а isadmin=0.
Этих компьютеров с Windows с ошибкой сейчас нет, логику ошибки я не понял, но заметил.
Хорошо бы проверить эту ситуацию на компьютере, который неверно устанавливает isadmin. Сейчас isadmin присваивается в зависимости от результата выполнения net.exe session. Возможно на Максимальной версии есть какие-то особенности, тогда может стоит исправить на проверку как у Check Administrator.
Команда Check Administrator немного устарела, начиная с Windows Vista она проверяет наличие прав попыткой создания директории в Program Files.
Нашёл в чем причина при отключённой службе 'Сервера' переменная не правильно определяется, вот сообщение команды 'net.exe session'
--
Не запущена служба сервера.
Для вызова дополнительной справки наберите NET HELPMSG 2114.
--
Я так понял что многие команды 'net.exe' не работают с отключенной службой Сервера. В в Windows Vista и выше слишком большая зависимость функционала от второстепенных служб, которые в большей степени опасны в обычной жизне, чем полезны. На работоспособность Windows отключение многих служб и Сервера в частности не влияет и обычной жизни. При правельной настройки многие бесполезные службы будут выключены и в таком случае функциональность многих команд будет нарушена.
--
Возможно лучше использовать какие-то стандартные функции Windows API для получения переменных или на прямую из реестра что-то брать.
Я ещё с версии CreateInstall 2003 использовал много обходных путей и они досих пор работают в Windows 8.
И сейчас проверка существования стандартного системного файла в папке 'C:\Windows\SysWOW64' работат как определение 64 битной windows.
В очередной версии будем по другому проверять наличие прав администратора.
Стандартных функций к сожалению нет. Есть программные методы, но они довольно сложные.
Здравствуйте. У меня следующий вопрос:
Есть предопределённая переменная setuppath, в неё записывается каталог установки программы. Использую диалог "Диалог - путь установки", где этой переменной присваивается значение. Значение, вводится пользователем произвольно. В конце может быть слэш (\), а может и не быть. Смотря как введёт пользователь...
Далее, я хочу использовать эту переменную (#setuppath#) для записи в реестр и ini файлы. Мне бы хотелось принудительно поставить на конце один "\".
Для этого использую "Установить переменные". Имя переменной setuppath, значение #setuppath#\. В условии хотела поставить проверку содержит ли строка на конце "\": $setuppath.islast("\\").
Выдаётся ошибка "The value has the different type from the definition of function @islast". Что я делаю не так? Есть ли какие-то пути решения? Заранее спасибо.
Если делать через команду Установить переменные то должно быть так
Имя переменной: setuppath
Значение: #setuppath#\
Условие: !macrox_do("#setuppath#").islast('\')
Подставлять значение переменных: отмечен
Можно это же самое сделать с помощью команды Изменить переменные
Имя переменной: setuppath
Начальное значение: оставить пустым
Добавить два действия
Удаление крайних пробелов = R\
Добавить = \
Большое спасибо. Заработало )
Здравствуйте.
Как для юникодной версии теперь будет выглядеть код, я попробовал его изменить, но если в переменной русский текст код не работает.
---
str stemp = "c:\\path to check"
uint ok
stemp.faddname( "uniquefilename" )
if result = open( stemp, $OP_CREATE )
{
ok = 1
close( result )
deletefile( stemp )
}
macrox_setint( "writabledir", ok )
---
Лучше определить переменную в скрипте с нужным путем, например mypath
и тогда использовать следующий код
str stemp
ustr utemp
stemp = str( macrox_getstr( "mypath", utemp ))
...
16.01.25 Выпущен инсталлятор CreateInstall 8.11.1.
19.06.24 Выпущен инсталлятор CreateInstall 8.11.0. подробнее
13.11.22 Выпущен инсталлятор CreateInstall 8.10.1.
21.05.22 Выпущен инсталлятор CreateInstall 8.10.0.
25.09.21 Выпущен инсталлятор CreateInstall 8.9.0.
15.07.21 Выпущен инсталлятор CreateInstall 8.8.1.