在Manjaro通过Wine运行TickTick(Win x64)出现CreateDbFailed错误求助
问题:Wine运行TickTick x64版出现CreateDbFailed错误及空引用异常
在Manjaro系统中通过Wine运行Windows x64版TickTick时,弹出提示:CreateDbFailed, please make sure to run with admin priv,应用虽能启动,但触发以下空引用异常日志:
Operation System Version-> 10.0.19043.0 ***** CurrentTime -> 01/30/2024 09:20:32 ***** Locale -> en-US ***** Device Location -> en-US ***** Version -> ***** Exception Type -> System.NullReferenceException ***** Exception Message -> Object reference not set to an instance of an object ***** Exception Data -> System.Collections.ListDictionaryInternal ***** -> ***** -> mscorlib ***** -> Void Throw() ***** -> at ticktick_WPF.App.TryGetLocalSettings () [0x0002d] in <8f90307ac9cb436e9f50ce70ac9eac5c>:0 at ticktick_WPF.Util.Utils.LogTaskTimes (System.Threading.Tasks.Task task, System.Int32 maxMilliseconds, System.String startMessage, System.String warnMessage) [0x0008c] in <8f90307ac9cb436e9f50ce70ac9eac5c>:0 at ticktick_WPF.App.StartUpSafely (System.Windows.StartupEventArgs e, System.Boolean createdNew) [0x001cf] in <8f90307ac9cb436e9f50ce70ac9eac5c>:0 at ticktick_WPF.App.OnStartup (System.Windows.StartupEventArgs e) [0x000b2] in <8f90307ac9cb436e9f50ce70ac9eac5c>:0 at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__7_0 (System.Object state) [0x00000] in <de4d51d88e3b4eea89a8d6a3a9854818>:0 at System.Windows.Threading.ExceptionWrapper.InternalRealCall (System.Delegate callback, System.Object args, System.Int32 numArgs) [0x000e7] in <75de555cd62f40719584e76ba8a177cc>:0 at System.Windows.Threading.ExceptionWrapper.TryCatchWhen (System.Object source, System.Delegate callback, System.Object args, System.Int32 numArgs, System.Delegate catchHandler) [0x00004] in <75de555cd62f40719584e76ba8a177cc>:0 *****
已尝试将Windows系统下TickTick的AppData目录内容复制到Wine对应的~/.wine/drive_c/users/<你的用户名>/AppData目录,但问题仍未解决。因Windows版TickTick功能更完整且支持离线使用,故优先选择该版本,需排查错误原因并找到解决方案。
可能原因分析
- Wine虚拟环境中,TickTick尝试创建/访问本地数据库文件时,Wine用户目录权限不足,导致数据库初始化失败,后续代码因依赖未初始化的数据库实例触发空引用异常。
- Wine的.NET运行时兼容性问题,WPF应用在解析本地配置/数据库路径时出现错误。
解决步骤
1. 以Wine管理员身份启动TickTick
进入TickTick安装目录(通常为~/.wine/drive_c/Program Files/TickTick),执行终端命令:
wine start /unix "TickTick.exe" /runas
也可修改桌面快捷方式的启动命令,添加/runas参数强制以管理员权限运行。
2. 修复Wine用户目录权限
确保当前系统用户对Wine虚拟用户目录拥有完整读写权限:
chmod -R u+rw ~/.wine/drive_c/users/<你的用户名>/AppData
替换<你的用户名>为Wine中的用户名(默认与系统用户名一致)。
3. 重置Wine的.NET环境
针对WPF应用的兼容性问题,重新注册.NET组件:
wine regsvr32 mscoree.dll wine regsvr32 mshtml.dll
或使用Winetricks安装TickTick依赖的.NET框架(推荐4.7.2版本):
winetricks dotnet472
4. 手动指定数据库存储路径
找到TickTick配置目录~/.wine/drive_c/users/<你的用户名>/AppData/Roaming/TickTick,修改配置文件(若存在)添加自定义数据库路径:
DbPath=C:\users\<你的用户名>\Documents\TickTickDB
手动创建该目录并赋予权限:
mkdir -p ~/.wine/drive_c/users/<你的用户名>/Documents/TickTickDB chmod u+rw ~/.wine/drive_c/users/<你的用户名>/Documents/TickTickDB
5. 更新Wine版本
确保使用最新稳定版Wine,Manjaro下执行更新:
sudo pacman -S wine-stable
或尝试针对复杂应用优化的Wine-GE版本:
yay -S wine-ge-custom
内容的提问来源于stack exchange,提问作者ezio4df
相关产品推荐
相关产品推荐

