If DOKAN_DLL_OUTPUT_PATH is set but the file it points to doesn't exists and the crate is otherwise considered fresh, the dll is not rebuilt.
One case where this is a problem is when cache is enabled on github CI: when there is a cache hit on the dokan-sys crate it's not rebuilt which means the dll is not placed to DOKAN_DLL_OUTPUT_PATH which causes the subsequent steps to fail, if they require the dll to be there.
The fix should be simple: add cargo::rerun-if-changed directive for the file at DOKAN_DLL_OUTPUT_PATH if the var is defined.