Qt Mac App Store应用程序因文件系统要求而被拒绝

Ahm*_*aid 2 macos qt store

我有一个我提交给Apple Mac App Store的Qt应用程序.写入〜/ Library/Preferences/com.mycompany.myapp已被拒绝

这是我收到的消息:

2.30

The application accesses the following location(s):

'~/Library/Preferences/com.nourayn.AlMosaly.plist'

The application may be 

* creating files
* writing files
* opening files for Read/Write access (instead of Read-Only access)

in the above location(s).
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

roo*_*oop 5

我假设您正在使用QSettings保存您的应用程序设置.您的代码可能如下所示:

QApplication app;
app.setOrganizationDomain("nourayn.com");
app.setApplicationName("AlMosaly");
QSettings settings; // this creates a .plist file under ~/Library/Preferences
                    // which is non-MacAppStore-friendly
Run Code Online (Sandbox Code Playgroud)

相反,您可以使用明确指定的文件名创建QSettings:

app.setOrganizationDomain("nourayn.com");
app.setApplicationName("AlMosaly");
QSettings settings(yourAppDataFolder+"/settings.plist", QSettings::NativeFormat);
                    // this writes to the file you specified
Run Code Online (Sandbox Code Playgroud)

如果您在应用中的多个位置使用QSettings,这样做可能会使事情变得轻松:

// in main.cpp
app.setProperty("SettingsFileName", yourAppDataFolder+"/settings.plist");

// in someotherfile.cpp
QString settingsFileName = qApp->property("SettingsFileName").toString();
QSettings settings(settingsFileName, QSettings::NativeFormat);
Run Code Online (Sandbox Code Playgroud)

此外,如果您在〜/ Library /(存储Qt全局设置)中有com.trolltech.plist文件,则可能需要转到Qt 4.8.1.更多信息:http: //qt-project.org/doc/qt-4.8/qsettings.html#changing-the-location-of-global-qt-settings-on-mac-os-x