diff --git a/.gitignore b/.gitignore
index 3dcafcbb..7310c8a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,6 +62,7 @@ espeak-ng.pc
*.lib
*.dll
*.exe
+*.msi
*.exp
*.idb
@@ -78,6 +79,11 @@ espeak-ng.pc
*.cache
*.user
+*.txt
+*.wixobj
+*.wixpdb
+*.cab
+
# Linux/Source distribution files
praat-mod/
diff --git a/README.md b/README.md
index 642b6dba..bfb76ca1 100644
--- a/README.md
+++ b/README.md
@@ -165,9 +165,11 @@ dictionary size.
__NOTE:__ This is currently experimental. It does not build the voice data, and
may contain runtime errors and missing functionality.
-To build eSpeak NG on Windows, you will need a copy of Visual Studio, such as
-the Microsoft Visual Studio Community 2015 edition. Additionally, you will need
-the Windows 8.1 SDK.
+To build eSpeak NG on Windows, you will need:
+
+1. a copy of Visual Studio 2015, such as the Community Edition;
+2. the Windows 8.1 SDK;
+3. the [WiX installer](http://wixtoolset.org) plugin.
You can then open and build the `src/windows/espeak-ng.sln` solution in Visual
Studio.
diff --git a/src/windows/espeak-ng.sln b/src/windows/espeak-ng.sln
index d37cd759..de9d3da7 100644
--- a/src/windows/espeak-ng.sln
+++ b/src/windows/espeak-ng.sln
@@ -12,6 +12,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "data", "data.vcxproj", "{8C
{A745D521-5B19-49DB-89D3-D0A3BE64D97B} = {A745D521-5B19-49DB-89D3-D0A3BE64D97B}
EndProjectSection
EndProject
+Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "installer", "installer\installer.wixproj", "{B67CE3B2-D1D7-45B9-98DA-164E3837D7BC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -44,6 +46,13 @@ Global
{8C406BE8-2F85-426B-8009-A2DD540DF7CD}.Release|x64.Build.0 = Release|x64
{8C406BE8-2F85-426B-8009-A2DD540DF7CD}.Release|x86.ActiveCfg = Release|Win32
{8C406BE8-2F85-426B-8009-A2DD540DF7CD}.Release|x86.Build.0 = Release|Win32
+ {B67CE3B2-D1D7-45B9-98DA-164E3837D7BC}.Debug|x64.ActiveCfg = Debug|x64
+ {B67CE3B2-D1D7-45B9-98DA-164E3837D7BC}.Debug|x64.Build.0 = Debug|x64
+ {B67CE3B2-D1D7-45B9-98DA-164E3837D7BC}.Debug|x86.ActiveCfg = Debug|x86
+ {B67CE3B2-D1D7-45B9-98DA-164E3837D7BC}.Debug|x86.Build.0 = Debug|x86
+ {B67CE3B2-D1D7-45B9-98DA-164E3837D7BC}.Release|x64.ActiveCfg = Release|x86
+ {B67CE3B2-D1D7-45B9-98DA-164E3837D7BC}.Release|x86.ActiveCfg = Release|x86
+ {B67CE3B2-D1D7-45B9-98DA-164E3837D7BC}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/windows/installer/Product.wxs b/src/windows/installer/Product.wxs
new file mode 100644
index 00000000..0d51130f
--- /dev/null
+++ b/src/windows/installer/Product.wxs
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/windows/installer/installer.wixproj b/src/windows/installer/installer.wixproj
new file mode 100644
index 00000000..d5673a85
--- /dev/null
+++ b/src/windows/installer/installer.wixproj
@@ -0,0 +1,70 @@
+
+
+
+ Debug
+ x86
+ 3.10
+ b67ce3b2-d1d7-45b9-98da-164e3837d7bc
+ 2.0
+ espeak-ng
+ Package
+ $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets
+ $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets
+
+
+ bin\$(Configuration)\
+ obj\$(Configuration)\
+ Debug
+ False
+ True
+
+
+ bin\$(Configuration)\
+ obj\$(Configuration)\
+ False
+ True
+
+
+ Debug
+ bin\$(Platform)\$(Configuration)\
+ obj\$(Platform)\$(Configuration)\
+ False
+ True
+
+
+ bin\$(Platform)\$(Configuration)\
+ obj\$(Platform)\$(Configuration)\
+ False
+ True
+
+
+
+
+
+
+ espeak-ng
+ {a745d521-5b19-49db-89d3-d0a3be64d97b}
+ True
+ True
+ Binaries;Content;Satellites
+ INSTALLFOLDER
+
+
+ libespeak-ng
+ {a47a0cfd-fe52-40b4-8cec-ee1bd4282cdd}
+ True
+ True
+ Binaries;Content;Satellites
+ INSTALLFOLDER
+
+
+
+
+
\ No newline at end of file