Вадим Смоленский

Пользователи
  • Публикаций

    145
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Вадим Смоленский стал победителем дня 10 марта

Вадим Смоленский имел наиболее популярный контент!

Информация о Вадим Смоленский

  • Звание
    Продвинутый пользователь
  1. Custom manifest в UWP-приложениях для Microsoft Store

    Похоже, никто на форуме этой темой не владеет. Нужно бы спросить непосредственно в Embarcadero - но как? Моя подписка на апдейты истекла в декабре; насколько я понимаю, право обращения в поддержку истекло тогда же. Существует ли способ для таких, как я, получить ответ на один-единственный, но жизненно важный вопрос по функциям RAD Studio?
  2. Непонятные падения при поиске по базе SQLite

    Проект гигантский, как его приложишь... Уповаю лишь на то, что с таким феноменом кто-нибудь уже сталкивался.
  3. Непонятные падения при поиске по базе SQLite

    Проект для Windows, автономная БД SQLite, никаких клиент-серверных дел, компоненты и операции самые простые: SQL-запрос в TFDQuery, вызов метода Open. Всё работает нормально, но отдельные пользователи жалуются на эпизодические непредсказуемые падения при поиске. Интересно, что после каждого такого падения всё опять функционирует нормально, но потом приложение не удается нормально закрыть, приходится вызывать диспетчер задач. Стабильно воспроизвести не могут ни пользователи, ни я сам. Мне удалось это считанные несколько раз - я лишь смог убедиться через отладчик, что проблема при закрытии связана именно с базой данных: вставлял в обработчик FormCloseQuery оператор TFDConnection.Close - и программа пару раз упала именно на этом операторе. Найти корень зла пока не удалось. Показалось только, что проблема возникает лишь тогда, когда поиск приводит к слишком большому (несколько тысяч) числу записей в TFDQuery. Может, стоит поменять какие-нибудь установки в TFDConnection или TFDQuery ?
  4. Упаковываю свое приложение в appx при помощи кнопки Deploy в Deployment Manager. При этом в разделе Опций "Manifest File" выставлено "Auto Generate". В итоге получается файл AppxManifest.xml; насколько я понимаю, этот манифест также включается в состав итогового пакета appx. Пробую загрузить получившийся appx в Microsoft Store. Грузится очень долго и в итоге выдает ошибку: "You don't have permissions to specify the following namespaces in the appx manifest file of the package MyApp.appx: restricted namespace: http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" В файле AppxManifest.xml действительно отыскивается такой фрагмент. Убираю его, заодно убираю фрагмент <Capabilities> ... </Capabilities> (если не убрать, получившийся xml даже не отобразится в браузере), переименовываю в MyApp.manifest, меняю установку для манифеста на "Custom", указываю имя. Всё повторяю. Результат ровно тот же. Полностью меняю содержимое MyApp.manifest, беря шаблон отсюда. Всё повторяю. Результат опять тот же. Опять магазину не нравится фрагмент манифеста насчет restricted capabilities, которого теперь, по идее, там быть не должно. Такое ощущение, что при формировании пакета appx не имеют никакого значения установки по поводу манифеста. Он всегда запихивается в appx в некоем дефолтном варианте, повлиять на который невозможно. Или все-таки возможно?
  5. Создание каталога из UWP-приложения

    В ходе дальнейших экспериментов поменял CSIDL_APPDATA на CSIDL_COMMON_APPDATA, и проблема ушла. Все файлы ложатся в папку C:\ProgramData\MyApp и прекрасно видны из любого места. Так что да, всё дело было в особом статусе папки AppData. Хотя и выглядело странно, конечно.
  6. Создание каталога из UWP-приложения

    Будете смеяться, но эта папка не видна даже из Command Prompt. При попытке, например, вызвать cd ...MyApp выдается "The system cannot find the path specified". А из приложения, повторюсь, всё прекрасно открывается. Да сами можете попробовать, на каком-нибудь пустом приложении. Дело нехитрое. Возможно, это и мегафича для тех, кто хочет понадежнее всё спрятать от дураков-юзеров, а равно от хакеров. Но у меня задача прямо противоположная.
  7. Создание каталога из UWP-приложения

    В том и дело, что AppData в Проводнике прекрасно открывается, и все папки, что в ней лежат, прекрасно видно - за вычетом вот этой, только что созданной AppData\MyApp.
  8. Создание каталога из UWP-приложения

    При упаковке Windows-приложения в appx все дополнительные файлы приходится класть в одну папку с исполнимым файлом, ибо Deployment Manager, судя по всему, не предусматривает возможности сразу положить их в AppData. Но я все-таки хочу, чтобы некоторые файлы были легко доступны пользователям, поэтому организовал приложение так, что оно при первом запуске создает новый каталог в AppData: MyDirectory:=GetSpecialFolderPath(CSIDL_APPDATA)+'\MyApp'; CreateDir(MyDirectory); TDirectory.SetAttributes(MyDirectory,[TFileAttribute.faNormal]); После этого в созданный каталог переносятся некоторые файлы, и всё работает хорошо, за исключением одного момента: этот новый каталог невозможно открыть, например, в Проводнике. Из самого приложения легко можно открыть диалоговое окно и увидеть в нем этот каталог и все файлы; можно их читать и в них писать, но вне приложения этот каталог невидим. Всё равно что не существует. Мне казалось, что присвоение каталогу атрибута faNormal дожно все проблемы решить. Увы, не решает. В чем тут закавыка?
  9. Адрес текущего каталога в приложениях UWP

    Задал этот же вопрос на www.experts-exchange.com, там посоветовали определять адрес иначе: ExtractFilePath(ParamStr(0)) Прекрасно работает. Мне заодно напомнили банальную истину: текущий каталог - это вовсе не обязательно каталог, в котором лежит исполнимый файл. Даже в момент запуска.
  10. Адрес текущего каталога в приложениях UWP

    Устанавливая и запуская свое Windows-приложение, предназначенное для Microsoft Store и запакованное в appx, наткнулся на интересный феномен. Чтобы узнать адрес текущего каталога, я всегда использовал функцию SysUtils.GetCurrentDir. Полученный полный адрес был мне нужен, например, чтобы показывать в TWebBrowser файлы хелпов (относительные адреса там почему-то не прокатывают). Раньше адресом текущего каталога всегда был адрес, где лежит исполнимый файл - условно говоря, C:\Program Files\MyApp. Теперь, когда пакет создается по принципам UWP, исполнимый файл и прочее хозяйство кладется в каталог C:\Program Files\WindowsApps\MyApp_1.0.0.0_x86__sp51hrchc9zqj. При этом функция GetCurrentDir почему-то возвращает совершенно другой адрес, а именно C:\WINDOWS\system32. Соответственно, TWebBrowser ничего не показывает. Функция SysUtils.GetDir ведет себя так же. Как быть?
  11. Упаковка всех файлов приложения в appx

    Обнаружилась еще одна проблема. Если запаковывать в appx слишком много файлов (у меня было более трехсот - в основном, картинки, используемые в хелпах), то в ходе выполнения процедуры deploy вся среда виснет. Приходится закрывать через Task Manager. Хорошо еще, что я смог снизить количество файлов до двухсот без каких-либо потерь (объединил картинки в блоки), а то не знаю, как бы вышел из положения. Экспериментально установить точную границу поленился - возможно, она равна 256 файлам. Так или иначе, проблема есть, и хорошо было бы от нее в будущем избавиться.
  12. Упаковка всех файлов приложения в appx

    Благодарю вас за решительный и однозначный ответ! Последнее, что осталось уяснить: есть ли какой-нибудь способ программным образом узнать из приложения, что оно является UWP-приложением? Можно было бы, конечно, заложиться на наличие или отсутствие в папке определенных файлов - но пользователи бывают изобретательны на всякую дурость.
  13. Упаковка всех файлов приложения в appx

    Замечательно! Но правильно ли я понимаю, что UWP-приложение, которое у меня получится, будет работать только под Windows 10, а для пользователей семерок и восьмерок придется держать отдельный дистрибутив?
  14. Упаковка всех файлов приложения в appx

    Вообще, не могу пока понять, какому принципу должно следовать размещение файлов в приложениях UWP. Раньше я всегда хранил файлы, куда могли писать пользователи, в отдельной папке (AppData), где всегда гарантирован доступ. Теперь же в разных местах (например, здесь) читаю, что приложения UWP имеют доступ к любым файлам. Коли так, то теперь никаких отдельных папок городить и не надо, можно всё валить в одну кучу вместе с исполнимым файлом. Правильно?
  15. Упаковка всех файлов приложения в appx

    Пока не понял. Один файл добавляется легко. Но хотелось бы уметь добавить целую папку со всем ее содержимым, а не расписывать каждый файл отдельно. У меня их там десятки, если не сотни. Еще не вполне понятна графа "Remote path". Если я хочу, чтобы файл был положен в папку, где по умолчанию будут храниться данные моего приложения (типа <user>\AppData\Roaming\MyApp), то должен быть какой-то макрос для этого дела.