Просмотр темы форума
Тема: Не создается подкаталог в папке #docpath#
Пользователь сообщил, что при запуске установщика моего программного продукта в Windows 10 (Redstone 3/Fall Creators Update) процесс установки прервался при попытке создать подкаталог в папке "Мои документы".
То есть, в проекте CreateInstall это команда "Установочные файлы", которая копирует файлы в каталог #docpath#\MySoftware
Это довольно странно: я думал, что папка "Мои документы" как раз и была придумана для того, чтобы какое угодно приложение могло записывать туда свои данные. Мне казалось, для этого даже не нужны права администратора.
Кто-нибудь сталкивался с подобной проблемой? Что в Windows 10 может помешать установщику создать подкаталог в папке "Мои документы" и скопировать туда файлы? Буду признателен за помощь.
Версия CreateInstall 7.4.1.
Вероятно, была попытка записать в Мои документы другого юзера. То есть пользователь работает под одним именем, а запускает под другим. Есть команда Get Original Username, она позволяет получать пути для оригинального пользователя.
Можете прислать .ci файл проекта на info@createinstall.com?
Еще один пользователь сообщил, что на Windows 10 при установке программного продукта не создается каталог #docpath#\MySoftware. Процесс установки прерывается с сообщением об ошибке "Невозможно открыть/создать файл" при попытке скопировать файл в несуществующий каталог #docpath#\MySoftware.
Нет ли новых идей, почему так происходит? Версия CreateInstall 7.4.1.
Могу посоветовать изменить код скрипта так, чтобы получить больше информации.
Например, предварительно проверить существование директории #docpath#.
Затем создать там директорию MySoftware отдельной командой.В случае ошибки вывести сообщение с путем #docpath#, а также #username#, #originaluser#. В этом случае, возможно проще будет найти причину.
Спасибо за советы, постараюсь всё реализовать.
Тысячи пользователей устанавливают программный продукт на Windows 10 нормально, и только у двух произошел этот сбой (один из Италии, второй из Франции). К сожалению, они не склонны помогать в выявлении причин ошибки: у них нет заинтересованности этим заниматься.
Есть в CreateInstall что-то типа конструкции TRY ... CATCH, как в JavaScript (перехват ошибок)? Файлы, которые копируются в папку "Документы", не являются критически важными для моего программного продукта. Обидно, что процесс установки прерывается по этой причине. Можно ли перехватить ошибку и продолжить процесс установки?
Пришлите ваш .ci файл проекта на info@createinstall.com. Постараемся помочь.
Здравствуйте еще раз!
Вставил команду "Get Original Username", но пользователи продолжают жаловаться на проблему: на некоторых компьютерах с Windows 10 не копируются в папку #docpath#. Не создается подкаталог в папке #docpath#; если создать подкаталог вручную, заранее, то не копируются файлы в этот подкаталог. Установщик выдает сообщение об ошибке, и установка программного продукта прерывается.
Проблема возникает лишь на очень маленьком числе компьютеров с Windows 10. Сам я не столкнулся с такой ситуацией ни разу, хотя лично проверил процесс установки на множестве компьютеров с Windows 10.
Пользователь запускает установщик под своей учетной записью. Местоположение системной папки "Документы" не изменялось. В сообщении об ошибке установщик пишет правильный путь к папке.
Есть ли идеи, в чем может быть проблема? Использую версию CreateInstall 7.4.1: возможно, в новой версии изменен процесс копирования файлов?
Вполне вероятно может оказывать влияние какая-то третья программа типа антивируса.
У вас установщик требует прав администратора?
Он еще куда пишет кроме #docpath#?
Антивирусы разные. Пользователи отключали антивирус по моей просьбе, перед установкой программного продукта, это не помогало.
Установщик не требует прав администратора.
Файлы записываются также в подкаталоги внутри #appdata# и #progfiles#. С этими папками проблем не возникает.
Кстати, вспомнил вот какую историю. В одной своей программе получаю путь к папке "Мои документы" с помощью такой команды:
SHGetSpecialFolderPath(0,Path,CSIDL_PERSONAL,False)
Использовал ее много лет, но недавно выяснил, что в последних версиях Windows 10 эта команда больше не работает (в первых версиях Win10 всё было нормально). Заменил на другую команду:
SHGetFolderPath(0,CSIDL_PERSONAL,0,0,Path)
(Функция также считается устаревшей, но использую ее для Windows XP.)
Тоже Windows 10 и тоже папка "Документы", вот и вспомнил.
Пробуйте у себя завести еще одного юзера на Windows 10 без прав администратора, зайти под ним и установить вашу программу.
Я уже сообщал, что проблема проявляет себя не на моем компьютере. Если создать нового пользователя на моем собственном компьютере с Windows 10, программный продукт устанавливается нормально и под новым пользователем.
Сообщения о проблеме с установкой моих программных продуктов приходят снова и снова: на десять тысяч установок один сообщит о том, что на Windows 10 установка была прервана. Пользователи получают одно и то же сообщение об ошибке при копировании файла в системную папку "Документы", и процесс установки прерывается. Все остальные файлы программного продукта копируются нормально в папки #progfiles# и #appdata#.
В начале процесса установки установщик получает оригинального пользователя для переменной docpath. Непосредственно перед копированием файлов в "Документы" выполняется проверка, существует ли директория #docpath#. Так как попытка копирования всё же происходит, то проверка выполняется успешно.
if macrox_getint("DocpathExists")
{
$body$
}
Не может быть, чтобы я был единственным, кто сообщает о подобной проблеме с Windows 10. Для меня это становится головной болью (например, один из пользователей оплатил регистрацию моего программного продукта, но потребовал вернуть деньги, так как не смог установить программу). Для одного программного продукта добавил в установщик возможность выбора папки для копирования документов; для другого продукта предлагаю пользователям скачать portable-версию вместо setup.exe.
Использую версию CreateInstall 7.4.1. Поможет ли переход на более новую версию? Есть ли там изменения в копировании файлов?
Если ошибка не частая, то вернее всего какая-то третья программа может не давать записывать в эту директорию. Мы так тоже не можем сказать в чём причина. Как вариант, можно распаковывать эти файлы в appdata, а потом копировать их в docpath c помощью команды копирования файлов. Можно при этом не прерывать установку в случае неудачи, а предлагать указать другую директорию для документов.
Что касается более новой версии. Мы выслали вам ключ к последней версии, попробуйте, но честно говоря, там по-моему не было исправлений подобных ситуаций.
Я тоже подозреваю, что причина блокировки записи в папку "Документы" находится где-то внутри операционной системы на компьютере самого пользователя. Но пользователь видит сообщение об ошибке при запуске моего установщика, после чего установка прерывается, то есть завершается неудачей. Поэтому пользователь полагает, что проблема в моем установщике, а не где-то в его собственном компьютере.
То есть, мне нужно донести до пользователя мысль, что проблема именно в его операционной системе. Хотелось бы, чтобы процесс установки не просто прерывался после сообщения об ошибке при копировании файлов, а чтобы можно было (как минимум) показать окно с разъяснением проблемы или (как максимум) окно с выбором новой папки для копирования.
Мы получили ваш проект и ответим по email.
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.