{"record":{"id":"38e408ce04ba331a","repo":"NickeManarin/ScreenToGif","slug":"gifski-not-present","errorCode":null,"errorMessage":"Gifski not present.","messagePattern":"Gifski not present\\.","errorType":"exception","errorClass":"ApplicationException","httpStatus":null,"severity":"error","filePath":"ScreenToGif/Util/EncodingManager.cs","lineNumber":787,"sourceCode":"                            #endregion\n\n                            break;\n\n                        case EncoderTypes.FFmpeg:\n                            await EncodeWithFfmpeg(preset, project.FramesFiles, id, tokenSource, processing);\n                            break;\n\n                        case EncoderTypes.Gifski:\n                        {\n                            #region Gifski encoding\n\n                            Update(id, EncodingStatus.Processing, null, true);\n\n                            if (preset is not GifskiGifPreset gifskiGifPreset)\n                                return;\n\n                            if (!PathHelper.IsGifskiPresent())\n                                throw new ApplicationException(\"Gifski not present.\");\n\n                            if (File.Exists(preset.FullPath))\n                                File.Delete(preset.FullPath);\n\n                            var size = project.FramesFiles[0].Path.ScaledSize();\n\n                            try\n                            {\n                                using var gifski = new GifskiInterop();\n                                var handle = gifski.Start((uint)size.Width, (uint)size.Height, gifskiGifPreset.Quality, gifskiGifPreset.RepeatForever, gifskiGifPreset.Fast);\n\n                                if (gifski.IsOlderThan0Dot9)\n                                {\n                                    #region Older\n\n                                    ThreadPool.QueueUserWorkItem(delegate\n                                    {\n                                        Thread.Sleep(500);","sourceCodeStart":769,"sourceCodeEnd":805,"githubUrl":"https://github.com/NickeManarin/ScreenToGif/blob/a4d0a67c2131cd048ceec86cd40afc2f1a06f2fd/ScreenToGif/Util/EncodingManager.cs#L769-L805","documentation":"EncodingManager throws ApplicationException when the user picks the Gifski encoder but PathHelper.IsGifskiPresent() returns false. IsGifskiPresent checks UserSettings.All.GifskiLocation, the app folder, the ProgramData folder, and the PATH environment variable for gifski.dll; if none resolves to an existing file, encoding is aborted before any frame is processed.","triggerScenarios":"Export with EncoderTypes.Gifski when gifski.dll cannot be located by AdjustPath(GifskiLocation), AdjustPath(\"gifski.dll\"), %ProgramData%\\ScreenToGif\\gifski.dll, or any PATH entry. The 32-bit build also fails because gifski is x64-only.","commonSituations":"Fresh install where gifski was never downloaded; user picked Gifski encoder type without first downloading the binary via Options > Plugins; gifski.dll was deleted by AV or the user; 32-bit ScreenToGif build; the configured GifskiLocation points to a moved/renamed file.","solutions":["Open Options > Plugins and download gifski.dll, or point the Gifski location to an existing gifski.dll.","Run the 64-bit build of ScreenToGif — gifski is x64-only.","Restore gifski.dll to the app folder or to %ProgramData%\\ScreenToGif\\.","Re-validate with PathHelper.IsGifskiPresent() in the export panel before allowing the user to start the export."],"exampleFix":"// before\nif (!PathHelper.IsGifskiPresent())\n    throw new ApplicationException(\"Gifski not present.\");\n\n// after\nif (!PathHelper.IsGifskiPresent())\n    throw new ApplicationException(\"Gifski not present. Download gifski.dll via Options > Plugins or set the path. (x64 build required.)\");","handlingStrategy":"validation","validationCode":"if (preset is GifskiGifPreset && !PathHelper.IsGifskiPresent())\n{\n    // disable the export button, prompt download via Options > Plugins\n}","typeGuard":"bool CanUseGifskiEncoder => Environment.Is64BitProcess && PathHelper.IsGifskiPresent();","tryCatchPattern":"try { /* encode with Gifski */ }\ncatch (ApplicationException ex) when (ex.Message == \"Gifski not present.\")\n{ /* open Plugins settings to download gifski */ }","preventionTips":["Gate the Gifski encoder option behind IsGifskiPresent() in the UI.","Ship or download gifski.dll to %ProgramData%\\ScreenToGif\\ on first run.","Warn explicitly on 32-bit builds since gifski is x64-only."],"tags":["gifski","encoding","native-dependency","missing-binary"],"backgroundTag":null,"analyzedSha":"a4d0a67c2131cd048ceec86cd40afc2f1a06f2fd","analyzedAt":"2026-08-13T11:12:06.147Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}