mirror of
https://github.com/navidrome/navidrome.git
synced 2026-05-03 06:51:16 +00:00
* fix(msi): include ffprobe executable in MSI build Signed-off-by: Deluan <deluan@navidrome.org> * feat(ffmpeg): add IsProbeAvailable() to FFmpeg interface Add runtime check for ffprobe binary availability with cached result and startup logging. When ffprobe is missing, logs a warning at startup. * feat(stream): guard MakeDecision behind ffprobe availability When ffprobe is not available, MakeDecision returns a decision with ErrorReason set and both CanDirectPlay and CanTranscode false, instead of failing with an opaque exec error. * feat(subsonic): only advertise transcoding extension when ffprobe is available The OpenSubsonic transcoding extension is now conditionally included based on ffprobe availability, so clients know not to call getTranscodeDecision when ffprobe is missing. * refactor(ffmpeg): move ffprobe startup warning to initial_setup Move the ffprobe availability warning from the lazy IsProbeAvailable() check to checkFFmpegInstallation() in server/initial_setup.go, alongside the existing ffmpeg warning. This ensures the warning appears at startup rather than on first endpoint call. * fix(e2e): set noopFFmpeg.IsProbeAvailable to true The e2e tests use pre-populated probe data and don't need a real ffprobe binary. Setting IsProbeAvailable to true allows the transcode decision logic to proceed normally in e2e tests. * fix(stream): only guard on ffprobe when probing is needed Move the IsProbeAvailable() guard inside the SkipProbe check so that legacy stream requests (which pass SkipProbe: true) are not blocked when ffprobe is missing. The guard only applies when probing is actually required (i.e., getTranscodeDecision endpoint). * refactor(stream): fall back to tag metadata when ffprobe is unavailable Instead of blocking getTranscodeDecision when ffprobe is missing, fall back to tag-based metadata (same behavior as /rest/stream). The transcoding extension is always advertised. A startup warning still alerts admins when ffprobe is not found. * fix(stream): downgrade ffprobe-unavailable log to Debug Avoids log spam when clients call getTranscodeDecision repeatedly without ffprobe installed. The startup warning in initial_setup.go already alerts admins at Warn level. --------- Signed-off-by: Deluan <deluan@navidrome.org>
99 lines
4.8 KiB
XML
99 lines
4.8 KiB
XML
<?xml version='1.0' encoding='windows-1252'?>
|
|
<?if $(var.Platform) = x64 ?>
|
|
<?define ProductName = "Navidrome" ?>
|
|
<?define UpgradeCode = "2f154974-1443-41b6-b808-b8be530291b3" ?>
|
|
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
|
|
<?define Win64 = 'yes' ?>
|
|
<?else ?>
|
|
<?define ProductName = "Navidrome (x86)" ?>
|
|
<?define UpgradeCode = "2f0572e4-7e8c-42e7-a186-77f70ec0911a" ?>
|
|
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
|
|
<?define Win64 = "no" ?>
|
|
<?endif ?>
|
|
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
|
|
<?include SettingsDlg.wxs?>
|
|
<?include Navidrome_UI_Flow.wxs?>
|
|
<Product Name="$(var.ProductName)" Id="*" UpgradeCode="$(var.UpgradeCode)" Language='1033' Codepage='1252' Version='$(var.Version)' Manufacturer='Deluan'>
|
|
|
|
<Package Id='*' Keywords='Installer' Description="$(var.ProductName)" Comments='' Manufacturer='Deluan' InstallerVersion='200' Languages='1033' Compressed='yes' SummaryCodepage='1252' InstallScope='perMachine' />
|
|
|
|
<MajorUpgrade AllowDowngrades="no" DowngradeErrorMessage="A newer version of $(var.ProductName) is already installed." />
|
|
|
|
<Media Id='1' Cabinet='main.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" />
|
|
<Property Id='DiskPrompt' Value="Navidrome Install [1]" />
|
|
<Property Id="REBOOT" Value="ReallySuppress" />
|
|
|
|
<Property Id="ND_PORT" Value="4533" />
|
|
<Property Id="ND_MUSICFOLDER" Value="C:\Music" />
|
|
<Property Id="ND_DATAFOLDER" Value="C:\ProgramData\Navidrome" />
|
|
|
|
<UIRef Id="Navidrome_UI_Flow"/>
|
|
|
|
<Directory Id='TARGETDIR' Name='SourceDir'>
|
|
<Directory Id="$(var.PlatformProgramFilesFolder)">
|
|
<Directory Id='INSTALLDIR' Name='Navidrome'>
|
|
|
|
<Component Id='LICENSEFile' Guid='eb5610a4-e3f3-4f36-ae2c-e96914e460c2' Win64="$(var.Win64)">
|
|
<File Id='LICENSE' Name='LICENSE' DiskId='1' Source='LICENSE' KeyPath='yes' />
|
|
</Component>
|
|
|
|
<Component Id='README.mdFile' Guid='d1ee412b-2ebc-4b0b-9fa7-0228ab707686' Win64="$(var.Win64)">
|
|
<File Id='README.md' Name='README.md' DiskId='1' Source='README.md' KeyPath='yes' />
|
|
</Component>
|
|
|
|
<Component Id="Configuration" Guid="9e17ed4b-ef13-44bf-a605-ed4132cff7f6" Win64="$(var.Win64)">
|
|
<IniFile Id="ConfigurationPort" Name="navidrome.ini" Action="createLine" Directory="INSTALLDIR" Key="Port" Section="default" Value="'[ND_PORT]'" />
|
|
<IniFile Id="ConfigurationMusicDir" Name="navidrome.ini" Action="createLine" Directory="INSTALLDIR" Key="MusicFolder" Section="default" Value="'[ND_MUSICFOLDER]'" />
|
|
<IniFile Id="ConfigurationDataDir" Name="navidrome.ini" Action="createLine" Directory="INSTALLDIR" Key="DataFolder" Section="default" Value="'[ND_DATAFOLDER]'" />
|
|
<IniFile Id="FFmpegPath" Name="navidrome.ini" Action="createLine" Directory="INSTALLDIR" Key="FFmpegPath" Section="default" Value="'[INSTALLDIR]ffmpeg.exe'" />
|
|
</Component>
|
|
|
|
<Component Id='MainExecutable' Guid='e645aa06-8bbc-40d6-8d3c-73b4f5b76fd7' Win64="$(var.Win64)">
|
|
<File Id='NavidromeExe' Name='Navidrome.exe' DiskId='1' Source='navidrome.exe' KeyPath='yes' />
|
|
<ServiceInstall
|
|
Description='Navidrome is a self-hosted music server and streamer'
|
|
ErrorControl='ignore'
|
|
Name = '$(var.ProductName)'
|
|
Id='NavidromeService'
|
|
Start='auto'
|
|
Type='ownProcess'
|
|
Vital='yes'
|
|
Arguments='service execute --configfile "[INSTALLDIR]navidrome.ini" --logfile "[ND_DATAFOLDER]\navidrome.log"'
|
|
/>
|
|
<ServiceControl Id='StartNavidromeService' Start='install' Stop='both' Remove='uninstall' Name='$(var.ProductName)' Wait='yes' />
|
|
</Component>
|
|
|
|
<Component Id='FFMpegExecutable' Guid='d17358f7-abdc-4080-acd3-6427903a7dd8' Win64="$(var.Win64)">
|
|
<File Id='ffmpeg.exe' Name='ffmpeg.exe' DiskId='1' Source='ffmpeg.exe' KeyPath='yes' />
|
|
</Component>
|
|
|
|
<Component Id='FFProbeExecutable' Guid='f8a3b2c1-5d4e-4f6a-9b8c-7e2d1a0f3c5b' Win64="$(var.Win64)">
|
|
<File Id='ffprobe.exe' Name='ffprobe.exe' DiskId='1' Source='ffprobe.exe' KeyPath='yes' />
|
|
</Component>
|
|
|
|
</Directory>
|
|
</Directory>
|
|
|
|
<Directory Id="ND_DATAFOLDER" name="[ND_DATAFOLDER]">
|
|
<Component Id='PackageFile' Guid='9eec0697-803c-4629-858f-20dc376c960b' Win64="$(var.Win64)">
|
|
<File Id='package' Name='.package' DiskId='1' Source='.package' KeyPath='no' />
|
|
</Component>
|
|
</Directory>
|
|
</Directory>
|
|
|
|
<InstallUISequence>
|
|
<Show Dialog="MyCustomPropertiesDlg" After="WelcomeDlg">Not Installed AND NOT WIX_UPGRADE_DETECTED</Show>
|
|
</InstallUISequence>
|
|
|
|
<Feature Id='Complete' Level='1'>
|
|
<ComponentRef Id='LICENSEFile' />
|
|
<ComponentRef Id='README.mdFile' />
|
|
<ComponentRef Id='Configuration'/>
|
|
<ComponentRef Id='MainExecutable' />
|
|
<ComponentRef Id='FFMpegExecutable' />
|
|
<ComponentRef Id='FFProbeExecutable' />
|
|
<ComponentRef Id='PackageFile' />
|
|
</Feature>
|
|
</Product>
|
|
</Wix>
|