Невозможно написать в ~/Library/Application Support после упаковки приложения Qt/C++ в MacOS
Я пишу свои журналы приложений в ~/Library/Application Support (QStandardPaths::AppDataLocation[0]) и все идет хорошо, если я запускаю свое приложение из Qt Creator. После упаковки приложения с помощью pkgbuild и productbuild, подписания приложения с моим приложением Developer ID (для кодового знака) и Installer ID разработчика (для productbuild), при установке его на моем компьютере с правами администратора файл журнала не создается (дерево каталогов). это генерируется). Я использую std::ofstream для записи в файл сообщения, которое приходит в QByteArray. Также я использую qInstallMessageHandler.
Любая идея, как сделать это работает? Нужно ли мне что-то добавить в мой Distribution.xml в productbuild? Какие-нибудь еще права, которые мне нужно добавить на этапе упаковки?
Это обработчик, который я использую
void tracesOutputHandler(QtMsgType type, const QMessageLogContext& context, const QString & msg)
{
std::cout << "This is called" << std::endl;
QString txt;
switch (type) {
case QtDebugMsg:
txt = QString("Debug: %1").arg(msg);
break;
case QtWarningMsg:
txt = QString("Warning: %1").arg(msg);
break;
case QtCriticalMsg:
txt = QString("Critical: %1").arg(msg);
break;
case QtFatalMsg:
txt = QString("Fatal: %1").arg(msg);
break;
}
// log_name here is well-formed.
QFile outFile(log_name);
if (outFile.open(QIODevice::WriteOnly | QIODevice::Append)) {
QTextStream ts(&outFile);
ts << txt << endl;
} else {
qDebug() << Q_FUNC_INFO << "Cannot open in log file";
}
}
Это вызванное сообщение появляется в исполнении QtCreator.
Кроме того, просто добавьте, что приложение не находится в песочнице.
РЕДАКТИРОВАТЬ: после многих испытаний, я думаю, что MessageHandler tracesOutputHandler не вызывается, когда приложение начинает делать двойной щелчок на значке приложения.