Thursday, January 13, 2011 6:52 PM
I recently installed the Windows SDK v7.0 and, in the Msi.h file is a #import specstrings.h but, I can't find specstrings.h anywhere. I have repaired the SDK and rebooted but, no specstrings.h. Where can I find this file? I need to #include Msi.h into an InstallShield plus MSI project.
Thursday, January 13, 2011 7:27 PM
specstrings.h comes with Visual Studio and my platform SDK... I have a 64-bit Windows version, and the file is available in both of:
C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Include\specstrings.h
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\specstrings.h
Thursday, January 13, 2011 11:40 PM
Thank you cipactli!
I installed 7.1 and now I hav msi.h and specstrings.h. Unfortunately, specstrings.h wants to #import <sal.h> and, of course, this file is missing from C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\ and, I can't find it anywhere else on my Windows 7 64 bit OS!
I have not worked with Microsoft tool much in the past. Shjould I get used to mising files from complete installations?!
More importantly, where can I get sal.h file?
Friday, January 14, 2011 5:18 PMWhat VS are you using? VS2008 or newer? I work with both VS2005 Service Pack 1 and VS2008; I've compared them, here's what I found:
Maybe your environment is mixed up now; how are you trying to build? From the IDE or a command line?
- In VS2005, sal.h and specstrings.h are in C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Include; specstrings.h doesn't #include nor #import anything else.
- VS2008 has no specstrings.h but sal.h is in C:\...\Microsoft Visual Studio 9\VC\include.
- And specstrings.h is in C:\Program Files\Microsoft SDKs\Windows\v7.1\Include
For example, if I copy the tutorial.dll sample, run "Windows SDK 7.1 Command Prompt", cd to the copy and build from there, things compile fine.
Friday, January 14, 2011 6:11 PM
I don't have any MSVS installed. I am trying to build an InstallShield 2011 project as InstallScript+MSI application. I installed the SDK and now I have installed teh WDK for Windows 7 64 bit OS but, still sal.h
Must I install MSVS to find the missing file?
Why not just include all required files in the latest SDK?!?!?!
Thank you for your help to understand why the file is missing and where I need to go look for it.
Friday, January 14, 2011 6:29 PM
I am not familiar with InstallShield nor its associated build processes, I can't help on that because I don't know what it involves.
Since you need sal.h or specstrings.h, you most likely also need a C or C++ compiler. If you don't have Visual Studio available, you can try downloading one of the Visual Studio C++ Express editions (http://www.microsoft.com/express/Windows/). It'll probably have the sal.h file you're looking for, in a path similar to the ones I listed before.
- Edited by cipactli Friday, January 14, 2011 6:30 PM Added download URL
Saturday, January 15, 2011 5:37 AMerco61 wrote:>>I don't have any MSVS installed. I am trying to build an InstallShield>2011 project as InstallScript+MSI application. I installed the SDK and>now I have installed teh WDK for Windows 7 64 bit OS but, still sal.h>>Must I install MSVS to find the missing file?>>Why not just include all required files in the latest SDK?!?!?!Because Microsoft is interested in selling compilers. You can downloadVisual Studio 2008 Express Edition for free.--Tim Roberts, firstname.lastname@example.orgProvidenza & Boekelheide, Inc.
Tim Roberts, DDK MVP
Saturday, January 15, 2011 7:18 AMWell, if this is linked to the other post on the problem here, it should be interesting to note that installing the compilers will install sal.h. The SDK follows the VC layout so you need to have the CRT include directory, and to do that you need to install the VC compiler. This can be confirmed by looking in the SDK CAB files for the VC compilers (vc_stdx86.cab, since that is the base for all the others) you will find sal.h there. (It is named something different though, FL_sal_h_122276_122276_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8)
Any samples given are not meant to have error checking or show best practices. They are meant to just illustrate a point. I may also give inefficient code or introduce some problems to discourage copy/paste coding. This is because the major point of my posts is to aid in the learning process.
Visit my (not very good) blog at