Advertisement

Checking which Windows systems have sapi.dll

Started by November 13, 2014 02:08 AM
8 comments, last by Washu 9 years, 11 months ago

Just a quick survey for those who have Windows (if you have computers with old Windows versions, check those too as long as they aren't older than XP). Do you have the file sapi.dll? Please say so (both if present or missing) as well as which Windows version it is in each case.

Somebody told me the file was in C:\Windows\System32\Speech\Common\ (or whatever drive it is) if you want to start by looking there, although if it isn't there and you want to make sure you're welcome to scan the entire Windows folder.

Don't pay much attention to "the hedgehog" in my nick, it's just because "Sik" was already taken =/ By the way, Sik is pronounced like seek, not like sick.

On Windows 7 Home Premium 32bit, I found three copies under the 'Windows' folder at:

C:\Windows\System32\Speech\Common\

C:\Windows\winsxs\x86_microsoft-windows-speechcommon_31bf3856ad364e35_6.1.7601.17514_none_d809b28230ecfe46\

C:\Windows\winsxs\x86_microsoft-windows-speechcommon_31bf3856ad364e35_6.1.7600.16385_none_d5d89eba33fe7aac\

[Edit:] This might explain why I have three: WinSxS

Advertisement
Why do you think you need this information? Ideally you'd be installing the runtime redistributable that goes with the SDK you're using to guarantee the people using your application have the right version installed.

But to answer your question, I have a copy of some version of sapi.dll in c:\Windows\System32\Speech\Common\. I also have a version in c:\Windows\SysWOW64\Speech\Common\. I am using Windows 8.1 64-bit.

C++: A Dialog | C++0x Features: Part1 (lambdas, auto, static_assert) , Part 2 (rvalue references) , Part 3 (decltype) | Write Games | Fix Your Timestep!

@nobodynews +1

There is no guarantee we all have the save version of that specific .dll file ... you are running the risk of introducing large incompatibility issues here.

I have 4 files named "sapi.dll" ... two different file sizes ( 1,402 KB and 1,174 KB )

C:\Windows\winsxs\x86_microsoft-windows-speechcommon_<key deleted>

C:\Windows\winsxs\amd64_microsoft-windows-speechcommon_<key deleted>

C:\Windows\SysWOW64\Speech\Common

C:\Windows\System32\Speech\Common

Windows 7 Home Premium SP1 - 64 bit

I cannot remember the books I've read any more than the meals I have eaten; even so, they have made me.

~ Ralph Waldo Emerson

The problem is that I'm not sure if it's legal to distribute those DLLs when not building using Visual Studio (or in fact, when using anything other than Microsoft's installer). I mention this because SAPI support was just introduced in MinGW-w64. (in before people add this to the list of reasons why you should never use anything besides Visual Studio) Though so far everything I've seen is that 7 seems to always include it, not sure about Vista (the odd one here would be XP, but Microsoft doesn't even support it anymore).

Also for the record, the version of SAPI you can expect depends entirely on the OS. For example, if you're targetting XP as a minimum then you can't assume SAPI can be higher than 5.2 (or for non-updated XP, 5.1). So yeah there's that. Not like it matters much since I'm making the feature optional (and really making the assumption that you already have a screen reader if you're using it), but yeah.

Don't pay much attention to "the hedgehog" in my nick, it's just because "Sik" was already taken =/ By the way, Sik is pronounced like seek, not like sick.

Just to muddy the waters, I have SAPI 5.3 on Windows 8.1.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

Advertisement

Windows XP Professional, SP3, fresh install has sapi.dll version 5.1 by default in C:\Program Files\Common files\Microsoft Shared\Speech

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

Just to muddy the waters, I have SAPI 5.3 on Windows 8.1.

I have the same. No idea if relevant, but I have keyboard layouts installed for English, German, and Japanese.

-~-The Cow of Darkness-~-
Windows is big on backwards compatibility, since sapi.dll seems to be a Microsoft DLL I would expect them to be largely backwards compatible with a stable interface. In any case, Windows 7 64-bit here, I have a single version of sapi.dll in the Windows folder:

sapi.dll: C:\Windows\System32\Speech\Common (1.36MB, v5.3.11513.0, 64-bit)
sapi.dll: C:\Windows\SysWOW64\Speech\Common (1.14MB, v5.3.11513.0, 32-bit)

The ones in the winsxs folder are the same.

“If I understand the standard right it is legal and safe to do this but the resulting value could be anything.”

The problem is that I'm not sure if it's legal to distribute those DLLs when not building using Visual Studio (or in fact, when using anything other than Microsoft's installer).

And this is why you read what Microsoft has to say about redistributing SAPI: http://support.microsoft.com/kb/320207

Seems pretty clear to me, you should be using an installer anyways to properly handle all of your redistributable requirements, such as CRT, etc.

In time the project grows, the ignorance of its devs it shows, with many a convoluted function, it plunges into deep compunction, the price of failure is high, Washu's mirth is nigh.

This topic is closed to new replies.

Advertisement