Ну окей, погнали.
(file_exists($f = dirname(__FILE__).'/db/mysql/install.sql'))
1) Как вообще получилась такая адовая конструкцию? Она же не читается, да и не нужна она (см. ниже)
2) Файл dirname(__FILE__).'/db/mysql/install.sql') всегда присутствует в директории модуля.
За свою практику, я еще не встречал шибко-умных-парней, которые бы лезли в чужой модуль и удаляли файлы, поэтому если он есть в модуле, то он есть всегда.
Хочешь проверить дополнительно? Проверяй, только если он не найден - хотя бы ошибку выводи, а то сейчас все в холостую - нет файла -> нет события -> непонятно почему не работает
3) Хочешь выполнить батч? Ну так и делайте это как битрикс. Посмотри хотя бы на модуль торгового каталога:
if(!$DB->Query("SELECT 'x' FROM b_catalog_group", true))
$errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/catalog/install/db/".strtolower($DB->type)."/install.sql");
Обрати внимание на: strtolower($DB->type), если планируешь делать модуль оставь хотя бы лазейку, чтобы потом не переделывать.
4) Переходи уже на d7!
В папке модуля в include.php оставь пустой комментарий с тегами php
И в /lib/demodata.php пропиши:
namespace Partner\Demosite;
class DemoData
Тогда тебе не нужно будет править автолоадер при появлении нового класса и геморроя будет меньше
5) После п.4 смотри на новый лоадер (и раз уж пишешь по-старинке, вот старый код, новый можешь в том же модуле торгового каталога посмотреть):
RegisterModuleDependences('main', 'OnPageStart', $this->MODULE_ID, '\Partner\Demosite\DemoData', 'AddDemoDataOptions');
P.S. Я надеюсь в uninstall ты удаляешь подписки на события.
А теперь ответ на вопрос: если хочешь загрузить какие-нибудь данные в БД -
делай это в методе DoInstall() в самом конце после успешной регистрации модуля, а не на событиях. Если их слишком много - выдели несколько шагов.