Как запустить код во время первого запуска приложения Xulrunner

Я пишу пользовательское приложение на основе xulrunner и хочу, чтобы некоторые файлы были развернуты в профиле пользователя при первом запуске приложения.

Я поместил файлы в каталог defaults/profile моего приложения, но они не были скопированы в профиль пользователя во время первого запуска приложения.

Должен ли я написать какой-то дополнительный код или это должно произойти автоматически? То, что копируется наверняка, — это настройки приложения по умолчанию.

Существует ли «стандартный» способ, предлагаемый Firefox или некоторыми из многих приложений Mozilla? Любая ссылка на какое-то чтение будет полезно. Любой намек ценен.

Заранее спасибо.


person Беров    schedule 20.05.2009    source источник


Ответы (2)


К сожалению, стандартный способ выполнения кода первого запуска заключается в использовании системы pref, чтобы определить, сделали ли вы что-то еще или еще не сделали. Однако есть несколько ошибок:

  • Убедитесь, что этот код запускается только один раз. Если ваш код первого запуска находится в оверлее или в главном окне браузера, его можно запускать несколько раз (один раз для каждого окна).

  • после того, как вы запустите код и установите преф, убедитесь, что вы сбросили префы, так как префы записываются при закрытии и будут сохранены только при закрытии.

    Components.classes['@mozilla.org/preferences-service;1'] .getService(Components.interfaces.nsIPrefService) .savePrefFile(null);

person anotherjesse    schedule 30.05.2009
comment
Оказалось, потому что я использовал параметр -profile ../../Data с предопределенной папкой, в которой должен быть профиль. Файлы из defaults/profile не копируются. Я несколько раз удалял содержимое предустановленной папки Profile, но пока ничего не произошло После удаления параметра заработало. Однако мне все еще нужна была подсказка, которую вы предоставили. Спасибо. - person Беров; 10.06.2009

Вы также можете использовать систему настроек вместе с запросом номера версии расширения. Когда версия изменится, вызовите свою функцию. Это даст вам возможность снова вызывать функцию позже, если вы хотите, но только при изменении версии.

person pc1oad1etter    schedule 04.06.2009
comment
Ах, это очень полезно. большое спасибо за дополнительную подсказку. - person Беров; 10.06.2009