For the why:
This is happening because most modern browsers are designed to protect their users from potentially malicious code, up to and including various executable, batch and VB file types.
This behavior is normal and should be expected.
To stop it happening:
Nothing you code will prevent the browser from flagging the file, that's even if the machine doing the download isn't already behind a proxy that scans and quarantines files. You should be aiming to provide an installer (MSI / MSIx etc..) package with a trusted code signing certificate. That wont make the warning go away completely but it does help instill user trust that the source is trustworthy.