Merge branch 'installer-wix' into devel

Adapt the wix installer for real. Use it as the main build target in all jenkins
jobs, etc.
This commit is contained in:
Slava Kim
2015-02-24 22:17:11 -08:00
41 changed files with 6056 additions and 6004 deletions

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "A user account system",
version: "1.1.4-winr.2"
version: "1.1.4-winr.3"
});
Package.onUse(function (api) {

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Meteor Reactive Templating library",
version: '2.0.5-winr.3'
version: '2.0.5-winr.4'
});
Package.onUse(function (api) {

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Generates the boilerplate html from program's manifest",
version: '1.0.3-winr.2'
version: '1.0.3-winr.3'
});
Package.onUse(function (api) {

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Send email messages",
version: "1.0.6-winr.3"
version: "1.0.6-winr.4"
});
Npm.depends({

View File

@@ -6,7 +6,7 @@ Package.describe({
// between such packages and the build tool.
name: 'launch-screen',
summary: 'Default and customizable launch screen on mobile.',
version: '1.0.1-winr.3'
version: '1.0.1-winr.4'
});
Cordova.depends({

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Logging facility.",
version: '1.0.6-winr.2'
version: '1.0.6-winr.3'
});
Npm.depends({

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "The Meteor command-line tool",
version: '1.1.0-winr.8'
version: '1.1.0-winr.9'
});
Package.includeTool();

View File

@@ -2,7 +2,7 @@
Package.describe({
summary: "Core Meteor environment",
version: '1.1.5-winr.5'
version: '1.1.5-winr.6'
});
Package.registerBuildPlugin({

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Good defaults for the mobile status bar",
version: "1.0.3-winr.2"
version: "1.0.3-winr.3"
});
Package.onUse(function(api) {

View File

@@ -9,7 +9,7 @@
Package.describe({
summary: "Adaptor for using MongoDB and Minimongo over DDP",
version: '1.0.12-winr.4'
version: '1.0.12-winr.5'
});
Npm.depends({

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Common code for OAuth-based services",
version: "1.1.4-winr.2"
version: "1.1.4-winr.3"
});
Package.onUse(function (api) {

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Reactive dictionary",
version: '1.0.6-winr.2'
version: '1.0.6-winr.3'
});
Package.onUse(function (api) {

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Session variable",
version: '1.0.6-winr.2'
version: '1.0.6-winr.3'
});
Package.onUse(function (api) {

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Compiler for Spacebars template language",
version: '1.0.5-winr.2'
version: '1.0.5-winr.3'
});
Package.onUse(function (api) {

View File

@@ -1,6 +1,6 @@
{
"track": "WINDOWS-PREVIEW",
"version": "0.1.7",
"version": "0.1.8",
"recommended": false,
"official": false,
"description": "Preview of Meteor on Windows."

View File

@@ -1,558 +0,0 @@
// Executable to launch meteor after bootstrapping the local warehouse
//
// Copyright 2013 - 2014 Stephen Darnell
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using System.Text;
using System.Threading;
using Microsoft.Win32.SafeHandles;
[assembly: AssemblyTitle("Windows Meteor installer")]
[assembly: AssemblyDescription("Downloads the Meteor bootstrap package installs it")]
[assembly: AssemblyCompany("Meteor Development Group")]
[assembly: AssemblyProduct("Meteor")]
[assembly: AssemblyCopyright("Copyright 2014 Meteor Development Group")]
[assembly: AssemblyVersion("0.1.0.0")]
[assembly: AssemblyFileVersion("0.1.0.0")]
namespace LaunchMeteor
{
class Program
{
private const string BOOTSTRAP_FILE = "meteor-bootstrap-os.windows.x86_32.tar.gz";
private const string BOOTSTRAP_URL = "https://s3.amazonaws.com/com.meteor.static/packages-bootstrap/__METEOR_RELEASE__/" + BOOTSTRAP_FILE;
private const string METEOR_WAREHOUSE_DIR = "METEOR_WAREHOUSE_DIR";
private static string bootstrapFile = null;
private static bool looksLikeNewConsole = false;
private static int consoleWindowWidth = 80;
private static void InitialiseConsoleInfo()
{
// Try/catch needed when not connected to a console
try
{
looksLikeNewConsole = Console.CursorLeft == 0 && Console.CursorTop == 0;
consoleWindowWidth = Console.WindowWidth;
} catch {}
}
static void Main(string[] args)
{
InitialiseConsoleInfo();
// Avoid console vanishing without warning if invoked from a non-console app
AppDomain.CurrentDomain.UnhandledException += (sender, handlerArgs) =>
{
Console.WriteLine("Unexpected exception: {0}", handlerArgs.ExceptionObject);
Exit(1);
};
if (args.Length == 1 && args[0] == "--downloaded")
{
bootstrapFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, BOOTSTRAP_FILE);
args = new string[0];
}
var home = Environment.GetEnvironmentVariable("LOCALAPPDATA") ??
Environment.GetEnvironmentVariable("APPDATA");
var warehouse = Path.Combine(home, ".meteor");
Environment.SetEnvironmentVariable(METEOR_WAREHOUSE_DIR, warehouse);
// XXX will this overwrite if Meteor is already installed?
// we would like it to
BootstrapWarehouse(warehouse);
Console.WriteLine("To run Meteor, open a new Command Prompt and type 'meteor'");
Exit(1);
}
#region Executing child processes
private static void Exec(string command, string extra, string[] args)
{
if (extra != null)
{
var list = new List<string>(args);
list.Insert(0, extra);
args = list.ToArray();
}
string commandLine = string.Join(" ", Array.ConvertAll<string, string>(args, QuoteArg));
if (!File.Exists(command))
{
Console.WriteLine("Unable to find executable for command:");
Console.WriteLine(" {0} {1}", command, commandLine);
Exit(1);
}
var child = Process.Start(new ProcessStartInfo(command, commandLine) { UseShellExecute = false });
child.WaitForExit();
Exit(child.ExitCode);
}
private static string QuoteArg(string unquoted)
{
if (unquoted.Length > 0 && unquoted.IndexOfAny(" \t\n\v\"".ToCharArray()) == -1)
return unquoted;
var result = new StringBuilder("\"");
int slashes = 0;
foreach (var ch in unquoted)
{
if (ch == '"') // Double up any slashes and escape the quote
{
while (slashes-- >= 0) result.Append('\\');
}
result.Append(ch);
slashes = (ch == '\\') ? slashes + 1 : 0;
}
return result.Append('"').ToString();
}
public static void Exit(int exitCode)
{
if (looksLikeNewConsole)
{
Console.WriteLine("\nPlease press any key to exit.");
Console.ReadKey(true);
}
Environment.Exit(exitCode);
}
#endregion
#region Boostrap the warehouse
private static MemoryStream DownloadBoostrapFile()
{
Console.WriteLine("Downloading initial Meteor files...");
DownloadDataCompletedEventArgs download = null;
var complete = new AutoResetEvent(false);
var barWidth = consoleWindowWidth - 5;
using (var client = new WebClient())
{
if (client.Proxy != null)
{
client.Proxy.Credentials = CredentialCache.DefaultCredentials;
}
client.UseDefaultCredentials = true;
client.DownloadProgressChanged += (sender, e) =>
{
var sb = new StringBuilder();
sb.AppendFormat("\r{0:00} ", e.ProgressPercentage);
int blobs = (barWidth * e.ProgressPercentage) / 100;
for (int i = 0; i < barWidth; i++) sb.Append(i < blobs ? '#' : '-');
Console.Write(sb.ToString());
};
client.DownloadDataCompleted += (sender, e) =>
{
download = e;
complete.Set();
};
client.DownloadDataAsync(new Uri(BOOTSTRAP_URL));
}
complete.WaitOne();
if (download.Error != null)
throw download.Error;
if (download.Result.Length < 10 * 1024 * 1024 ||
(download.Result[0] != 0x1f || download.Result[1] != 0x8b))
{
throw new InvalidDataException("Unexpected data returned from: " + BOOTSTRAP_URL);
}
Console.WriteLine(" \rDownload complete ({0:#.#} MB)", download.Result.Length / (1024.0 * 1024.0));
var stream = new MemoryStream(download.Result);
download = null;
return stream;
}
private static void BootstrapWarehouse(string warehouse)
{
MemoryStream stream;
if (bootstrapFile != null)
{
var data = File.ReadAllBytes(bootstrapFile);
stream = new MemoryStream(data);
data = null;
}
else
{
try
{
stream = DownloadBoostrapFile();
}
catch (Exception)
{
Console.WriteLine("\nERROR: A problem occurred while downloading the bootstrap package.");
Console.WriteLine("\nIf this persists, you can download it manually from:");
Console.WriteLine(" " + BOOTSTRAP_URL);
Console.WriteLine("and put it in the same directory as LaunchMeteor.exe and run:");
Console.WriteLine(" LaunchMeteor.exe -downloaded");
Console.WriteLine("\nHere are some details of the error:");
throw;
}
}
Console.WriteLine("Extracting files to {0}", warehouse);
var tempDir = warehouse + "~";
if (File.Exists(tempDir))
File.Delete(tempDir);
DirectoryDelete(tempDir);
try
{
var regex = new Regex(@"^\.meteor\\");
ExtractTgz(stream, tempDir, p => regex.Replace(p, ""));
DirectoryDelete(warehouse);
Directory.Move(tempDir, warehouse);
}
catch
{
DirectoryDelete(tempDir);
throw;
}
Console.WriteLine("Files extracted successfully\n");
var path = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.User) ?? string.Empty;
var paths = path.Split(';');
if (!Array.Exists(paths, p => p.Equals(warehouse, StringComparison.OrdinalIgnoreCase)))
{
Console.WriteLine("Updating PATH to include {0}", warehouse);
path += ((path.Length > 0) ? ";" : "") + warehouse;
Environment.SetEnvironmentVariable("PATH", path, EnvironmentVariableTarget.User);
}
}
private static void DirectoryDelete(string path)
{
for (int attempt = 1; Directory.Exists(path) && attempt <= 5; attempt++)
{
//if (attempt == 1)
// Console.WriteLine("Deleting directory: {0}", path);
//else
// Console.WriteLine("Deleting directory: {0} attempt {1}", path, attempt);
try { RecursiveDeleteDirectory(path); } catch {}
if (Directory.Exists(path))
Thread.Sleep(1000);
}
// Throw the exception
if (Directory.Exists(path))
RecursiveDeleteDirectory(path);
}
#endregion
#region Tar file extraction
public static void ExtractTgz(string archive, string targetDirectory)
{
using (var fileStream = File.OpenRead(archive))
{
ExtractTgz(fileStream, targetDirectory, p => p);
}
}
public static void ExtractTgz(Stream stream, string directory, Func<string, string> transform)
{
int totalFiles = 0, totalData = 0;
var buffer = new byte[512];
using (var decompressed = new GZipStream(stream, CompressionMode.Decompress))
{
string longName = null;
for (int n; (n = decompressed.Read(buffer, 0, buffer.Length)) > 0; )
{
if (n != buffer.Length)
throw new InvalidDataException("Unexpected end of TAR file");
if (TarField(buffer, 257, 5) != "ustar") continue;
var type = (TarType)buffer[156];
var length = Convert.ToInt32(TarField(buffer, 124, 12).Trim(), 8);
var link = TarField(buffer, 157, 100);
var path = longName ?? Path.Combine(TarField(buffer, 345, 155), TarField(buffer, 0, 100));
longName = null;
if (type == TarType.LongName)
{
var data = new MemoryStream(length);
for (; length > 0; length -= buffer.Length)
{
if (decompressed.Read(buffer, 0, buffer.Length) != buffer.Length)
throw new InvalidDataException("Unexpected end of TAR file");
data.Write(buffer, 0, Math.Min(length, buffer.Length));
}
longName = TarField(data.ToArray(), 0, (int)data.Length);
continue;
}
//Console.WriteLine("{0} {1} {2}", type, length.ToString().PadLeft(9), path);
if (type == TarType.AltReg || type == TarType.Reg || type == TarType.Contig ||
type == TarType.Sym || type == TarType.Lnk)
{
if (((++totalFiles) & 0xF) == 0) Console.Write(".");
path = path.Replace('/', '\\');
if (("\\" + path + "\\").Contains("\\..\\"))
throw new InvalidDataException("Filenames containing '..' are not allowed");
path = Path.Combine(directory, transform(path));
try
{
CreateDirectory(GetDirectoryName(path));
using (var fstream = CreateWritableFile(path))
{
if (type == TarType.Lnk || type == TarType.Sym)
{
var data = Encoding.UTF8.GetBytes(link);
fstream.Write(data, 0, data.Length);
length = 0;
}
totalData += length;
for (; length > 0; length -= buffer.Length)
{
if (decompressed.Read(buffer, 0, buffer.Length) != buffer.Length)
throw new InvalidDataException("Unexpected end of TAR file");
fstream.Write(buffer, 0, Math.Min(length, buffer.Length));
}
}
}
catch
{
Console.WriteLine();
Console.WriteLine("Error processing path: {0}", path);
throw;
}
}
}
Console.WriteLine("\nExtracted {0} files ({1:#.#} MB)", totalFiles, totalData / (1024.0 * 1024.0));
}
}
private enum TarType : int { AltReg = 0, Reg = '0', Lnk = '1', Sym = '2', Chr = '3', Blk = '4', Dir = '5', Fifo = '6', Contig = '7', LongName = 'L' }
private static string TarField(byte[] buffer, int start, int len)
{
var str = Encoding.UTF8.GetString(buffer, start, len);
int pos = str.IndexOf('\0');
return pos < 0 ? str : str.Substring(0, pos);
}
#endregion
// Get directory name (supporting long file names)
private static string GetDirectoryName(string path)
{
path = path.Replace('/', '\\');
int pos = path.LastIndexOf('\\');
return (pos >= 0) ? path.Substring(0, pos) : null;
}
// Create a file, supporting long file names
private static FileStream CreateWritableFile(string path)
{
SafeFileHandle handle = NativeMethods.CreateFile(@"\\?\" + path,
EFileAccess.GenericWrite, EFileShare.None, IntPtr.Zero,
ECreationDisposition.CreateAlways, 0, IntPtr.Zero);
int error = Marshal.GetLastWin32Error();
if (handle.IsInvalid)
throw new System.ComponentModel.Win32Exception(error);
// Pass the file handle to FileStream. FileStream will close it.
return new FileStream(handle, FileAccess.Write);
}
// Create a directory, supporting long file names
private static void CreateDirectory(string path)
{
bool result = NativeMethods.CreateDirectory(@"\\?\" + path, IntPtr.Zero);
int error = Marshal.GetLastWin32Error();
if (result || error == NativeMethods.ERROR_ALREADY_EXISTS)
return;
if (error != NativeMethods.ERROR_PATH_NOT_FOUND)
throw new System.ComponentModel.Win32Exception(error);
// Try to create parent first, before trying again
CreateDirectory(GetDirectoryName(path));
CreateDirectory(path);
}
private static void RecursiveDeleteDirectory(string path)
{
path = path.TrimEnd('\\');
IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1);
WIN32_FIND_DATA findData;
IntPtr handle = NativeMethods.FindFirstFile(@"\\?\" + path + @"\*", out findData);
if (handle != INVALID_HANDLE_VALUE)
{
for (bool more = true; more; more = NativeMethods.FindNextFile(handle, out findData))
{
string name = findData.cFileName;
if (((int)findData.dwFileAttributes & NativeMethods.FILE_ATTRIBUTE_DIRECTORY) != 0)
{
if (name != "." && name != "..")
RecursiveDeleteDirectory(Path.Combine(path, name));
}
else
{
var filePath = @"\\?\" + Path.Combine(path, name);
// Make sure we can still delete if the file is read-only
NativeMethods.SetFileAttributes(filePath, ((int)findData.dwFileAttributes) & ~NativeMethods.FILE_ATTRIBUTE_READONLY);
if (!NativeMethods.DeleteFile(filePath))
{
int error = Marshal.GetLastWin32Error();
throw new System.ComponentModel.Win32Exception(error);
}
}
}
}
NativeMethods.FindClose(handle);
if (!NativeMethods.RemoveDirectory(@"\\?\" + path))
{
int error = Marshal.GetLastWin32Error();
throw new System.ComponentModel.Win32Exception(error);
}
}
}
// PInvoke support for long file names
internal static class NativeMethods
{
public const int FILE_ATTRIBUTE_DIRECTORY = 0x00000010;
public const int FILE_ATTRIBUTE_READONLY = 0x1;
public const int ERROR_PATH_NOT_FOUND = 3;
public const int ERROR_ALREADY_EXISTS = 183;
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern SafeFileHandle CreateFile(
string lpFileName,
EFileAccess dwDesiredAccess,
EFileShare dwShareMode,
IntPtr lpSecurityAttributes,
ECreationDisposition dwCreationDisposition,
EFileAttributes dwFlagsAndAttributes,
IntPtr hTemplateFile);
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool DeleteFile(string lpFileName);
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool CreateDirectory(string lpPathName, IntPtr lpSecurityAttributes);
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool RemoveDirectory(string lpPathName);
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
internal static extern IntPtr FindFirstFile(string lpFileName, out WIN32_FIND_DATA lpFindFileData);
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
internal static extern bool FindNextFile(IntPtr hFindFile, out WIN32_FIND_DATA lpFindFileData);
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool FindClose(IntPtr hFindFile);
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
internal static extern int GetFileAttributes(string lpFileName);
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
internal static extern bool SetFileAttributes(string lpFileName, int dwFileAttributes);
}
[StructLayout(LayoutKind.Sequential)]
internal struct FILETIME
{
internal uint dwLowDateTime;
internal uint dwHighDateTime;
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
internal struct WIN32_FIND_DATA
{
internal EFileAttributes dwFileAttributes;
internal FILETIME ftCreationTime;
internal FILETIME ftLastAccessTime;
internal FILETIME ftLastWriteTime;
internal int nFileSizeHigh;
internal int nFileSizeLow;
internal int dwReserved0;
internal int dwReserved1;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
internal string cFileName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]
internal string cAlternate;
}
[Flags]
public enum EFileAccess : uint
{
GenericRead = 0x80000000,
GenericWrite = 0x40000000,
GenericExecute = 0x20000000,
GenericAll = 0x10000000,
}
[Flags]
public enum EFileShare : uint
{
None = 0x00000000,
Read = 0x00000001,
Write = 0x00000002,
Delete = 0x00000004,
}
public enum ECreationDisposition : uint
{
New = 1,
CreateAlways = 2,
OpenExisting = 3,
OpenAlways = 4,
TruncateExisting = 5,
}
[Flags]
public enum EFileAttributes : uint
{
Readonly = 0x00000001,
Hidden = 0x00000002,
System = 0x00000004,
Directory = 0x00000010,
Archive = 0x00000020,
Device = 0x00000040,
Normal = 0x00000080,
Temporary = 0x00000100,
SparseFile = 0x00000200,
ReparsePoint = 0x00000400,
Compressed = 0x00000800,
Offline = 0x00001000,
NotContentIndexed = 0x00002000,
Encrypted = 0x00004000,
Write_Through = 0x80000000,
Overlapped = 0x40000000,
NoBuffering = 0x20000000,
RandomAccess = 0x10000000,
SequentialScan = 0x08000000,
DeleteOnClose = 0x04000000,
BackupSemantics = 0x02000000,
PosixSemantics = 0x01000000,
OpenReparsePoint = 0x00200000,
OpenNoRecall = 0x00100000,
FirstPipeInstance = 0x00080000
}
}

View File

@@ -1,5 +1,6 @@
$ErrorActionPreference = "Stop"
$script_path = (split-path -parent $MyInvocation.MyCommand.Definition) + "\"
$conf_path = $script_path + "wix-installer\WiXInstaller\Configuration.wxi"
If ($Args.Count -ne 1) {
echo "Usage:"
@@ -14,8 +15,26 @@ echo ("Bootstrap tarball version " + $Args[0])
# Set the version
$version = $Args[0].replace("`n","").replace("`r","")
(Get-Content ($script_path + "InstallMeteor.cs")) | Foreach-Object {$_ -replace '__METEOR_RELEASE__',$version} | Out-File ($script_path + "InstallMeteor_.cs")
# Numeric part of version, like 1.2.3.4
$semverVersion = $version.Split("@")[-1]
(Get-Content ($conf_path + "_")) | Foreach-Object {
$_ -replace '__METEOR_RELEASE__',$version `
-replace '__METEOR_RELEASE_SEMVER__',$semverVersion} | Out-File -Encoding ascii ($conf_path)
# download 7za.exe, build dependency that we don't want to build from scratch
echo "Downloading binary dependencies: 7za"
$7za_url = "https://s3.amazonaws.com/meteor-windows/build-deps/7za.exe"
$client = new-object System.Net.WebClient
$client.DownloadFile($7za_url, $script_path + "wix-installer\WiXInstaller\Resources\7za.exe")
Push-Location wix-installer
Invoke-Expression ("cmd /c build.bat")
Pop-Location
move-item ($script_path + "wix-installer\Release\Setup_Meteor.exe") ($script_path + "InstallMeteor.exe")
echo "Clean up"
rm $conf_path
Invoke-Expression ($env:WINDIR + "\Microsoft.NET\Framework\v3.5\csc.exe /out:" + $script_path + "InstallMeteor.exe " + $script_path + "InstallMeteor_.cs /debug /nologo")
echo "Done"

View File

@@ -1,29 +1,29 @@
Meteor WiX Installer
======================
In order to build Meteor installer following tools are required:
Visual Stidio 2010 or later
WiX Toolset 3.8 or later
So, the installer was made using WiX Toolset and it uses a custom made WiX extension for boostratpper
project (WixBalExtensionExt.dll), for an improved GUI of bootstrapper application.
The WiX extension was developed on a different solution: WiXBalExtension\BalExtensionExt.sln
The project have following folders structure:
+ Release - The folder where the compiled installer will be placed
|
+ WiXBalExtension - Contain the solution of WiX extension of bootstrapper application
|
+ WiXCustomAction - C++ custom action project of the lib that contains custom actions
| used in MSI projects
|
+ WiXInstaller - Contain the setup projects of Meteor MSI package and boostratpper project
|
- Resources - Resources files used on both, MSI and bootsreapper projects.
The WixBalExtensionExt.dll library was build using VisualStudio 2010, so, if you want to use a differnt one
please make sure that you update Platform Toolset and paths of include/libs on C++ projects
Meteor WiX Installer
======================
In order to build Meteor installer following tools are required:
Visual Stidio 2010 or later
WiX Toolset 3.8 or later
So, the installer was made using WiX Toolset and it uses a custom made WiX extension for boostratpper
project (WixBalExtensionExt.dll), for an improved GUI of bootstrapper application.
The WiX extension was developed on a different solution: WiXBalExtension\BalExtensionExt.sln
The project have following folders structure:
+ Release - The folder where the compiled installer will be placed
|
+ WiXBalExtension - Contain the solution of WiX extension of bootstrapper application
|
+ WiXCustomAction - C++ custom action project of the lib that contains custom actions
| used in MSI projects
|
+ WiXInstaller - Contain the setup projects of Meteor MSI package and boostratpper project
|
- Resources - Resources files used on both, MSI and bootsreapper projects.
The WixBalExtensionExt.dll library was build using VisualStudio 2010, so, if you want to use a differnt one
please make sure that you update Platform Toolset and paths of include/libs on C++ projects

View File

@@ -61,7 +61,7 @@ _ReSharper*
*.ncrunch*
.*crunch*.local.xml
# Installshield output folder
# Installshield output folder
[Ee]xpress
# DocProject is a documentation generator add-in
@@ -108,3 +108,4 @@ Generated_Code #added for RIA/Silverlight projects
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML

View File

@@ -1,29 +1,29 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "MSIPackage", "WiXInstaller\MSIPackage.wixproj", "{E053726B-937B-40C7-8F3D-25A3226979D9}"
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "SetupPackage", "WiXInstaller\SetupPackage.wixproj", "{7B569F5B-5D73-4E7B-BE41-041A2F22A521}"
ProjectSection(ProjectDependencies) = postProject
{E053726B-937B-40C7-8F3D-25A3226979D9} = {E053726B-937B-40C7-8F3D-25A3226979D9}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E053726B-937B-40C7-8F3D-25A3226979D9}.Release|x64.ActiveCfg = Release|x64
{E053726B-937B-40C7-8F3D-25A3226979D9}.Release|x64.Build.0 = Release|x64
{E053726B-937B-40C7-8F3D-25A3226979D9}.Release|x86.ActiveCfg = Release|x86
{E053726B-937B-40C7-8F3D-25A3226979D9}.Release|x86.Build.0 = Release|x86
{7B569F5B-5D73-4E7B-BE41-041A2F22A521}.Release|x64.ActiveCfg = Release|x64
{7B569F5B-5D73-4E7B-BE41-041A2F22A521}.Release|x64.Build.0 = Release|x64
{7B569F5B-5D73-4E7B-BE41-041A2F22A521}.Release|x86.ActiveCfg = Release|x86
{7B569F5B-5D73-4E7B-BE41-041A2F22A521}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "MSIPackage", "WiXInstaller\MSIPackage.wixproj", "{E053726B-937B-40C7-8F3D-25A3226979D9}"
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "SetupPackage", "WiXInstaller\SetupPackage.wixproj", "{7B569F5B-5D73-4E7B-BE41-041A2F22A521}"
ProjectSection(ProjectDependencies) = postProject
{E053726B-937B-40C7-8F3D-25A3226979D9} = {E053726B-937B-40C7-8F3D-25A3226979D9}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E053726B-937B-40C7-8F3D-25A3226979D9}.Release|x64.ActiveCfg = Release|x64
{E053726B-937B-40C7-8F3D-25A3226979D9}.Release|x64.Build.0 = Release|x64
{E053726B-937B-40C7-8F3D-25A3226979D9}.Release|x86.ActiveCfg = Release|x86
{E053726B-937B-40C7-8F3D-25A3226979D9}.Release|x86.Build.0 = Release|x86
{7B569F5B-5D73-4E7B-BE41-041A2F22A521}.Release|x64.ActiveCfg = Release|x64
{7B569F5B-5D73-4E7B-BE41-041A2F22A521}.Release|x64.Build.0 = Release|x64
{7B569F5B-5D73-4E7B-BE41-041A2F22A521}.Release|x86.ActiveCfg = Release|x86
{7B569F5B-5D73-4E7B-BE41-041A2F22A521}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,196 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/
# Visual Studo 2015 cache/options directory
.vs/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding addin-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
*.[Cc]ache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt

View File

@@ -1,66 +1,66 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wixextba", "wixstdba\wixstdba.vcxproj", "{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}"
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "BalExtension", "wixlib\BalExtension.wixproj", "{3444D952-F21C-496F-AB6B-56435BFD0787}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBalExtensionExt", "wixext\WixBalExtensionExt.csproj", "{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}"
ProjectSection(ProjectDependencies) = postProject
{3444D952-F21C-496F-AB6B-56435BFD0787} = {3444D952-F21C-496F-AB6B-56435BFD0787}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Any CPU.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Any CPU.Build.0 = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Win32.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Win32.Build.0 = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|x86.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Any CPU.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Mixed Platforms.Build.0 = Release|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Win32.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Win32.Build.0 = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|x86.ActiveCfg = Debug|Win32
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|Any CPU.ActiveCfg = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|Mixed Platforms.Build.0 = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|Win32.ActiveCfg = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|x86.ActiveCfg = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|x86.Build.0 = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|Any CPU.ActiveCfg = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|Mixed Platforms.ActiveCfg = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|Mixed Platforms.Build.0 = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|Win32.ActiveCfg = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|x86.ActiveCfg = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|x86.Build.0 = Release|x86
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|x86.ActiveCfg = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Any CPU.Build.0 = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Win32.ActiveCfg = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wixextba", "wixstdba\wixstdba.vcxproj", "{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}"
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "BalExtension", "wixlib\BalExtension.wixproj", "{3444D952-F21C-496F-AB6B-56435BFD0787}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBalExtensionExt", "wixext\WixBalExtensionExt.csproj", "{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}"
ProjectSection(ProjectDependencies) = postProject
{3444D952-F21C-496F-AB6B-56435BFD0787} = {3444D952-F21C-496F-AB6B-56435BFD0787}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Any CPU.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Any CPU.Build.0 = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Win32.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Win32.Build.0 = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|x86.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Any CPU.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Mixed Platforms.Build.0 = Release|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Win32.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Win32.Build.0 = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|x86.ActiveCfg = Debug|Win32
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|Any CPU.ActiveCfg = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|Mixed Platforms.Build.0 = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|Win32.ActiveCfg = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|x86.ActiveCfg = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|x86.Build.0 = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|Any CPU.ActiveCfg = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|Mixed Platforms.ActiveCfg = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|Mixed Platforms.Build.0 = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|Win32.ActiveCfg = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|x86.ActiveCfg = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|x86.Build.0 = Release|x86
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|x86.ActiveCfg = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Any CPU.Build.0 = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Win32.ActiveCfg = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@@ -13,7 +13,7 @@ Call :DeleteDir "ipch"
%MSBUILD% BalExtensionExt.sln /nologo /verbosity:quiet /t:Rebuild /p:Configuration=Release /p:Platform="Mixed Platforms" /p:RunCodeAnalysis=false /p:DefineConstants="TRACE" /p:OutDir="%outdir%\\" /l:FileLogger,Microsoft.Build.Engine;logfile=build.log
if %errorlevel% neq 0 (
echo Build failed
pause
rem pause
goto :EOF
)

View File

@@ -1,4 +1,4 @@
// <auto-generated/>
using System.Reflection;
[assembly:AssemblyVersion("3.0.0.0")]
[assembly:AssemblyFileVersion("3.7.5533.1995")]
[assembly:AssemblyFileVersion("3.7.5534.8992")]

View File

@@ -3,11 +3,11 @@
#define _VERSION_FILE_H_
#define szVerMajorMinor "3.7"
#define szVerMajorMinorBuildRev "3.7.5533.1995"
#define szVerMajorMinorBuildRev "3.7.5534.8992"
#define rmj 3
#define rmm 7
#define rbd 5533
#define rev 1995
#define rbd 5534
#define rev 8992
#define szVerName "BalExtensionExt Release"
#endif

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!--
<copyright file="wixstdba.vcxproj" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
@@ -6,149 +6,149 @@
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{41085a22-e6aa-4e8b-ab1b-ddee0dc89dfa}</ProjectGuid>
<RootNamespace>WixStdBA</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<ProjectName>wixextba</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</GenerateManifest>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</GenerateManifest>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
</PropertyGroup>
<PropertyGroup>
<ExtraDefinitions>
</ExtraDefinitions>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(WiX)SDK\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;DEBUG;%(PreprocessorDefinitions);$(ExtraDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallingConvention>StdCall</CallingConvention>
<TreatWarningAsError>true</TreatWarningAsError>
<DisableSpecificWarnings>4995</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>$(ProjectDir)..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>dutil.lib;balutil.lib;comctl32.lib;msimg32.lib;gdiplus.lib;shlwapi.lib;wininet.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\..\WiXSDK\VS2010\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>wixstdba.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\WiXSDK\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);$(ExtraDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallingConvention>StdCall</CallingConvention>
<TreatWarningAsError>true</TreatWarningAsError>
<DisableSpecificWarnings>4995</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>$(ProjectDir)..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>dutil.lib;balutil.lib;comctl32.lib;msimg32.lib;gdiplus.lib;shlwapi.lib;wininet.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\..\WiXSDK\VS2010\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>wixstdba.def</ModuleDefinitionFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="JSON.cpp" />
<ClCompile Include="JSONValue.cpp" />
<ClCompile Include="WixStandardBootstrapperApplication.cpp" />
<ClCompile Include="wixstdba.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="Resources\logo.png" />
<None Include="Resources\LoremIpsumLicense.rtf" />
<None Include="Resources\HyperlinkTheme.wxl" />
<None Include="Resources\HyperlinkTheme.xml" />
<None Include="Resources\RtfTheme.wxl" />
<None Include="Resources\RtfTheme.xml">
<SubType>Designer</SubType>
</None>
<None Include="wixstdba.def" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="wixstdba.rc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="JSON.h" />
<ClInclude Include="JSONValue.h" />
<ClInclude Include="precomp.h" />
<ClInclude Include="resource.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
-->
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{41085a22-e6aa-4e8b-ab1b-ddee0dc89dfa}</ProjectGuid>
<RootNamespace>WixStdBA</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<ProjectName>wixextba</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</GenerateManifest>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</GenerateManifest>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
</PropertyGroup>
<PropertyGroup>
<ExtraDefinitions>
</ExtraDefinitions>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(WiX)SDK\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;DEBUG;%(PreprocessorDefinitions);$(ExtraDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallingConvention>StdCall</CallingConvention>
<TreatWarningAsError>true</TreatWarningAsError>
<DisableSpecificWarnings>4995</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>$(ProjectDir)..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>dutil.lib;balutil.lib;comctl32.lib;msimg32.lib;gdiplus.lib;shlwapi.lib;wininet.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\..\WiXSDK\VS2010\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>wixstdba.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\WiXSDK\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);$(ExtraDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallingConvention>StdCall</CallingConvention>
<TreatWarningAsError>true</TreatWarningAsError>
<DisableSpecificWarnings>4995</DisableSpecificWarnings>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>$(ProjectDir)..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>dutil.lib;balutil.lib;comctl32.lib;msimg32.lib;gdiplus.lib;shlwapi.lib;wininet.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\..\WiXSDK\VS2010\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>wixstdba.def</ModuleDefinitionFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="JSON.cpp" />
<ClCompile Include="JSONValue.cpp" />
<ClCompile Include="WixStandardBootstrapperApplication.cpp" />
<ClCompile Include="wixstdba.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="Resources\logo.png" />
<None Include="Resources\LoremIpsumLicense.rtf" />
<None Include="Resources\HyperlinkTheme.wxl" />
<None Include="Resources\HyperlinkTheme.xml" />
<None Include="Resources\RtfTheme.wxl" />
<None Include="Resources\RtfTheme.xml">
<SubType>Designer</SubType>
</None>
<None Include="wixstdba.def" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="wixstdba.rc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="JSON.h" />
<ClInclude Include="JSONValue.h" />
<ClInclude Include="precomp.h" />
<ClInclude Include="resource.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -1,73 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="WixStandardBootstrapperApplication.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="wixstdba.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="JSON.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="JSONValue.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="wixstdba.def">
<Filter>Source Files</Filter>
</None>
<None Include="Resources\HyperlinkTheme.wxl">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\HyperlinkTheme.xml">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\logo.png">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\LoremIpsumLicense.rtf">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\RtfTheme.wxl">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\RtfTheme.xml">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="precomp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="JSON.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="JSONValue.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="wixstdba.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="WixStandardBootstrapperApplication.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="wixstdba.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="JSON.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="JSONValue.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="wixstdba.def">
<Filter>Source Files</Filter>
</None>
<None Include="Resources\HyperlinkTheme.wxl">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\HyperlinkTheme.xml">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\logo.png">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\LoremIpsumLicense.rtf">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\RtfTheme.wxl">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\RtfTheme.xml">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="precomp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="JSON.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="JSONValue.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="wixstdba.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,196 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/
# Visual Studo 2015 cache/options directory
.vs/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding addin-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
*.[Cc]ache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt

View File

@@ -1,447 +1,447 @@
#include "stdafx.h"
#include <string>
#include <wcautil.h>
#include <strutil.h>
#include <pathutil.h>
#include <fileutil.h>
#include <dirutil.h>
#include <urlmon.h>
#include <winhttp.h>
#include <sys/stat.h>
#define BUF_LEN 1024
#define MAX_LONG_PATH 2048
#define LOG true
using namespace std;
class MyCallback : public IBindStatusCallback
{
public:
MSIHANDLE iHInstall;
MyCallback() {}
~MyCallback() { }
// This one is called by URLDownloadToFile
STDMETHOD(OnProgress)(/* [in] */ ULONG ulProgress, /* [in] */ ULONG ulProgressMax, /* [in] */ ULONG ulStatusCode, /* [in] */ LPCWSTR wszStatusText)
{
PMSIHANDLE hActionRec = MsiCreateRecord(3);
PMSIHANDLE hProgressRec = MsiCreateRecord(3);
DWORD ulPrc = 0;
WCHAR wzInfo[1024] = { };
if (ulProgressMax > 0)
{
ulPrc = static_cast<DWORD>(100 * static_cast<double>(ulProgress) / static_cast<double>(ulProgressMax));
::StringCchPrintfW(wzInfo, countof(wzInfo), L"Downloading Meteor package ... %u%%", ulPrc);
}
else
::StringCchPrintfW(wzInfo, countof(wzInfo), L"Downloading Meteor package ...");
MsiRecordSetString(hActionRec, 1, TEXT("Download_MeteorPackage"));
MsiRecordSetString(hActionRec, 2, wzInfo);
MsiRecordSetString(hActionRec, 3, NULL);
UINT iResult = MsiProcessMessage(iHInstall, INSTALLMESSAGE_ACTIONSTART, hActionRec);
if ((iResult == IDCANCEL) || (iResult == IDABORT))
return E_ABORT;
return S_OK;
}
// The rest don't do anything...
STDMETHOD(OnStartBinding)(/* [in] */ DWORD dwReserved, /* [in] */ IBinding __RPC_FAR *pib)
{ return E_NOTIMPL; }
STDMETHOD(GetPriority)(/* [out] */ LONG __RPC_FAR *pnPriority)
{ return E_NOTIMPL; }
STDMETHOD(OnLowResource)(/* [in] */ DWORD reserved)
{ return E_NOTIMPL; }
STDMETHOD(OnStopBinding)(/* [in] */ HRESULT hresult, /* [unique][in] */ LPCWSTR szError)
{ return E_NOTIMPL; }
STDMETHOD(GetBindInfo)(/* [out] */ DWORD __RPC_FAR *grfBINDF, /* [unique][out][in] */ BINDINFO __RPC_FAR *pbindinfo)
{ return E_NOTIMPL; }
STDMETHOD(OnDataAvailable)(/* [in] */ DWORD grfBSCF, /* [in] */ DWORD dwSize, /* [in] */ FORMATETC __RPC_FAR *pformatetc, /* [in] */ STGMEDIUM __RPC_FAR *pstgmed)
{ return E_NOTIMPL; }
STDMETHOD(OnObjectAvailable)(/* [in] */ REFIID riid, /* [iid_is][in] */ IUnknown __RPC_FAR *punk)
{ return E_NOTIMPL; }
// IUnknown stuff
STDMETHOD_(ULONG,AddRef)()
{ return 0; }
STDMETHOD_(ULONG,Release)()
{ return 0; }
STDMETHOD(QueryInterface)(/* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject)
{ return E_NOTIMPL; }
};
HRESULT ExtractBinary(
__in LPCWSTR wzBinaryId,
__out BYTE** pbData,
__out DWORD* pcbData
)
{
HRESULT hr = S_OK;
LPWSTR pwzSql = NULL;
PMSIHANDLE hView;
PMSIHANDLE hRec;
// make sure we're not horked from the get-go
hr = WcaTableExists(L"Binary");
if (S_OK != hr)
{
if (SUCCEEDED(hr))
{
hr = E_UNEXPECTED;
}
ExitOnFailure(hr, "There is no Binary table.");
}
ExitOnNull(wzBinaryId, hr, E_INVALIDARG, "Binary ID cannot be null");
ExitOnNull(*wzBinaryId, hr, E_INVALIDARG, "Binary ID cannot be empty string");
hr = StrAllocFormatted(&pwzSql, L"SELECT `Data` FROM `Binary` WHERE `Name`=\'%s\'", wzBinaryId);
ExitOnFailure(hr, "Failed to allocate Binary table query.");
hr = WcaOpenExecuteView(pwzSql, &hView);
ExitOnFailure(hr, "Failed to open view on Binary table");
hr = WcaFetchSingleRecord(hView, &hRec);
ExitOnFailure(hr, "Failed to retrieve request from Binary table");
hr = WcaGetRecordStream(hRec, 1, pbData, pcbData);
ExitOnFailure(hr, "Failed to read Binary.Data.");
LExit:
ReleaseStr(pwzSql);
return hr;
}
HRESULT ExtractBinaryToFile(
__in LPCWSTR wzBinaryId,
__in LPCWSTR wzFilePath
)
{
HRESULT hr = S_OK;
BYTE* pbData = NULL;
DWORD cbData = 0;
DWORD cbWritten = 0;
HANDLE hFile = INVALID_HANDLE_VALUE;
wchar_t szTmpFile[BUF_LEN] = L""; DWORD nTmpFileLen = BUF_LEN;
hr = ExtractBinary(wzBinaryId, &pbData, &cbData);
hFile = CreateFile(wzFilePath, GENERIC_WRITE,FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE) {
WriteFile(hFile, pbData, cbData, &cbWritten, NULL);
CloseHandle(hFile);
}
else
{
hr = HRESULT_FROM_WIN32(::GetLastError());
}
return hr;
}
BOOL ExecuteCommandLine(LPWSTR CommandLine, DWORD & exitCode)
{
PROCESS_INFORMATION processInformation = {0};
STARTUPINFO startupInfo = {0};
startupInfo.cb = sizeof(startupInfo);
// Create the process
BOOL result = CreateProcess(NULL, CommandLine,
NULL, NULL, FALSE,
NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW,
NULL, NULL, &startupInfo, &processInformation);
if (!result)
{
// CreateProcess() failed; Get the error from the system
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL);
// Display the error
LPTSTR strError = (LPTSTR) lpMsgBuf;
// Free resources created by the system
LocalFree(lpMsgBuf);
// We failed.
return FALSE;
}
else
{
// Successfully created the process. Wait for it to finish.
WaitForSingleObject( processInformation.hProcess, INFINITE );
// Get the exit code.
result = GetExitCodeProcess(processInformation.hProcess, &exitCode);
// Close the handles.
CloseHandle( processInformation.hProcess );
CloseHandle( processInformation.hThread );
if (!result)
return FALSE;
// We succeeded.
return TRUE;
}
}
HRESULT UnzipToFolder(
MSIHANDLE hInstall,
__in LPCWSTR wzFriendlyName,
__in LPCWSTR wzTarGzFileName,
__in LPCWSTR wzDestPath
)
{
HRESULT hr = S_OK;
WcaLog(LOGMSG_STANDARD, "Extract \"%S\" package initialized.", wzFriendlyName);
wchar_t szSourceDir[BUF_LEN] = L""; DWORD nSourceDirDirLen = BUF_LEN;
wchar_t szTarGzFilePath[BUF_LEN] = L"";
wchar_t szTarFilePath[BUF_LEN] = L"";
MsiGetProperty(hInstall, L"SourceDir", szSourceDir, &nSourceDirDirLen);
StringCchPrintf(szTarGzFilePath, BUF_LEN, L"%s%s", szSourceDir, wzTarGzFileName);
StringCchPrintf(szTarFilePath, BUF_LEN, L"%s*.tar", szSourceDir);
DWORD pdwAttr;
if (FileExistsEx(szTarGzFilePath, &pdwAttr) == TRUE)
{
//Extacting quality_cloud_production.sql to %TEMP% folder
wchar_t szTmpDir[BUF_LEN] = L""; DWORD nTmpDirLen = BUF_LEN;
wchar_t sz7Zip[BUF_LEN] = L"";
wchar_t szCommandLine1[BUF_LEN] = L"";
wchar_t szCommandLine2[BUF_LEN] = L"";
MsiGetProperty(hInstall, L"TempFolder", szTmpDir, &nTmpDirLen);
StringCchPrintf(sz7Zip, BUF_LEN, L"%s%s", szTmpDir, L"7za.exe");
DWORD pdwAttr;
if (FileExistsEx(sz7Zip, &pdwAttr) == FALSE)
{
hr = ExtractBinaryToFile(L"SevenZip", sz7Zip);
}
StringCchPrintf(szCommandLine1, BUF_LEN, L"\"%s\" x -o\"%s\" -y \"%s\"", sz7Zip, szSourceDir, szTarGzFilePath);
StringCchPrintf(szCommandLine2, BUF_LEN, L"\"%s\" x -o\"%s\" -y \"%s\"", sz7Zip, wzDestPath, szTarFilePath);
DWORD nRes=0;
LPTSTR ErrorMessage = NULL;
ExecuteCommandLine(szCommandLine1, nRes);
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, HRESULT_FROM_WIN32(nRes), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&ErrorMessage, 0, NULL);
if (NULL != ErrorMessage) WcaLog(LOGMSG_STANDARD, "Archive expanding completed with (%d): %S", nRes, ErrorMessage);
ExecuteCommandLine(szCommandLine2, nRes);
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, HRESULT_FROM_WIN32(nRes), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&ErrorMessage, 0, NULL);
if (NULL != ErrorMessage) WcaLog(LOGMSG_STANDARD, "Archive deployment completed with (%d): %S", nRes, ErrorMessage);
}
else
{
hr = HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND);
WcaLog(LOGMSG_STANDARD, "Failed to extract %S files. File not found: %S", wzFriendlyName, szTarGzFilePath);
}
WcaLog(LOGMSG_STANDARD, "Extracting \"%S\" package completed.", wzFriendlyName);
return hr;
}
UINT __stdcall Extract_MeteorFiles(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
hr = WcaInitialize(hInstall, "Extract_MeteorFiles");
ExitOnFailure(hr, "Failed to initialize Extract_MeteorFiles");
wchar_t szMeteorDir[BUF_LEN] = L""; DWORD nMeteorDirLen = BUF_LEN;
MsiGetProperty(hInstall, L"METEOR_DIR", szMeteorDir, &nMeteorDirLen);
hr = UnzipToFolder(hInstall, L"Meteor", L"meteor-bootstrap-os.windows.x86_32.tar.gz", szMeteorDir);
ExitOnFailure(hr, "Failed to extract Meteor files.");
LExit:
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
return WcaFinalize(er);
}
HRESULT Download_Package(
MSIHANDLE hInstall,
__in LPCWSTR wzFriendlyName,
__in LPCWSTR wzProperty_DWNURL,
__in LPCWSTR wzZipFile)
{
HRESULT hr = S_OK;
WcaLog(LOGMSG_STANDARD, "Download package \"%S\" initialized.", wzFriendlyName);
wchar_t szSourceDir[BUF_LEN] = L""; DWORD nSourceDirDirLen = BUF_LEN;
wchar_t szDwnUrl[BUF_LEN] = L""; DWORD nDwnUrlLen = BUF_LEN;
wchar_t szDwnUser[BUF_LEN] = L""; DWORD nDwnUserLen = BUF_LEN;
wchar_t szDwnPass[BUF_LEN] = L""; DWORD nDwnPassLen = BUF_LEN;
wchar_t szZipFile[BUF_LEN] = L"";
MsiGetProperty(hInstall, L"SourceDir", szSourceDir, &nSourceDirDirLen);
MsiGetProperty(hInstall, wzProperty_DWNURL, szDwnUrl, &nDwnUrlLen);
MsiGetProperty(hInstall, L"HTTP_DWN_USER", szDwnUser, &nDwnUserLen);
MsiGetProperty(hInstall, L"HTTP_DWN_PASS", szDwnPass, &nDwnPassLen);
StringCchPrintf(szZipFile, BUF_LEN, L"%s%s", szSourceDir, wzZipFile);
// Checking for Prerequisites\localFile
wchar_t szBundleSrc[BUF_LEN] = L""; DWORD nBundleSrcLen = BUF_LEN;
wchar_t szPrereqDir[BUF_LEN] = L""; DWORD nPrereqDirLen = BUF_LEN;
wchar_t szLocalFile[BUF_LEN] = L"";
wchar_t* szBundlePath;
MsiGetProperty(hInstall, L"BUNDLE_SOURCE", szBundleSrc, &nBundleSrcLen);
MsiGetProperty(hInstall, L"PREREQ_FOLDER", szPrereqDir, &nPrereqDirLen);
PathGetDirectory(szBundleSrc, &szBundlePath);
StringCchPrintf(szLocalFile, BUF_LEN, L"%s%s\\%s", szBundlePath, szPrereqDir, wzZipFile);
// If local file exists use it instaead of download.
DWORD pdwAttr;
if (FileExistsEx(szLocalFile, &pdwAttr) == TRUE)
{
FileEnsureCopy(szLocalFile, szZipFile, TRUE);
WcaLog(LOGMSG_STANDARD, "Nginx local package found \"%S\", will use that.", szLocalFile);
}
else
{
MyCallback pCallback;
pCallback.iHInstall = hInstall;
hr = URLDownloadToFile(NULL, szDwnUrl, szZipFile, 0, &pCallback);
if (FAILED(hr))
WcaLog(LOGMSG_STANDARD, "Failed to download %S package from url: %S", wzFriendlyName, szDwnUrl);
else
WcaLog(LOGMSG_STANDARD, "%S package should be here: %S", wzFriendlyName, szZipFile);
}
WcaLog(LOGMSG_STANDARD, "Download package \"%S\" completed.", wzFriendlyName);
return hr;
}
UINT __stdcall Download_MeteorPackage(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
hr = WcaInitialize(hInstall, "Download_MeteorPackage");
ExitOnFailure(hr, "Failed to initialize Download_MeteorPackage");
hr = Download_Package(hInstall, L"Meteor", L"METEOR_DWN_URL", L"meteor-bootstrap-os.windows.x86_32.tar.gz");
ExitOnFailure(hr, "Failed to download Meteor package from specified URL.");
LExit:
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
return WcaFinalize(er);
}
UINT __stdcall BulkRemoveMeteorFiles(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
hr = WcaInitialize(hInstall, "BulkRemoveMeteorFiles");
ExitOnFailure(hr, "Failed to initialize BulkRemoveMeteorFiles");
WcaLog(LOGMSG_STANDARD, "BulkRemoveMeteorFiles Initialized.");
wchar_t szPathPackages[BUF_LEN] = L""; DWORD nPathPackages = BUF_LEN;
wchar_t szPathPkg_Meta[BUF_LEN] = L""; DWORD nPathPkg_Meta = BUF_LEN;
MsiGetProperty(hInstall, L"METEORDIR_PACKAGES", szPathPackages, &nPathPackages);
MsiGetProperty(hInstall, L"METEORDIR_PKG_META", szPathPkg_Meta, &nPathPkg_Meta);
wchar_t szSysDir[BUF_LEN] = L""; DWORD nSysDirLen = BUF_LEN;
wchar_t szCmd1[BUF_LEN] = L"";
wchar_t szCmd2[BUF_LEN] = L"";
DWORD nRes=0;
MsiGetProperty(hInstall, L"SystemFolder", szSysDir, &nSysDirLen);
StringCchPrintf(szCmd1, BUF_LEN, L"%s\\cmd.exe /C \"RD /S /Q \"%s\">NUL\"", szSysDir, szPathPackages);
StringCchPrintf(szCmd2, BUF_LEN, L"%s\\cmd.exe /C \"RD /S /Q \"%s\">NUL\"", szSysDir, szPathPkg_Meta);
ExecuteCommandLine(szCmd1, nRes);
ExecuteCommandLine(szCmd2, nRes);
WcaLog(LOGMSG_STANDARD, "BulkRemoveMeteorFiles done.");
LExit:
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
return WcaFinalize(er);
}
// DllMain - Initialize and cleanup WiX custom action utils.
extern "C" BOOL WINAPI DllMain(
__in HINSTANCE hInst,
__in ULONG ulReason,
__in LPVOID
)
{
switch(ulReason)
{
case DLL_PROCESS_ATTACH:
WcaGlobalInitialize(hInst);
break;
case DLL_PROCESS_DETACH:
WcaGlobalFinalize();
break;
}
return TRUE;
}
#include "stdafx.h"
#include <string>
#include <wcautil.h>
#include <strutil.h>
#include <pathutil.h>
#include <fileutil.h>
#include <dirutil.h>
#include <urlmon.h>
#include <winhttp.h>
#include <sys/stat.h>
#define BUF_LEN 1024
#define MAX_LONG_PATH 2048
#define LOG true
using namespace std;
class MyCallback : public IBindStatusCallback
{
public:
MSIHANDLE iHInstall;
MyCallback() {}
~MyCallback() { }
// This one is called by URLDownloadToFile
STDMETHOD(OnProgress)(/* [in] */ ULONG ulProgress, /* [in] */ ULONG ulProgressMax, /* [in] */ ULONG ulStatusCode, /* [in] */ LPCWSTR wszStatusText)
{
PMSIHANDLE hActionRec = MsiCreateRecord(3);
PMSIHANDLE hProgressRec = MsiCreateRecord(3);
DWORD ulPrc = 0;
WCHAR wzInfo[1024] = { };
if (ulProgressMax > 0)
{
ulPrc = static_cast<DWORD>(100 * static_cast<double>(ulProgress) / static_cast<double>(ulProgressMax));
::StringCchPrintfW(wzInfo, countof(wzInfo), L"Downloading Meteor package ... %u%%", ulPrc);
}
else
::StringCchPrintfW(wzInfo, countof(wzInfo), L"Downloading Meteor package ...");
MsiRecordSetString(hActionRec, 1, TEXT("Download_MeteorPackage"));
MsiRecordSetString(hActionRec, 2, wzInfo);
MsiRecordSetString(hActionRec, 3, NULL);
UINT iResult = MsiProcessMessage(iHInstall, INSTALLMESSAGE_ACTIONSTART, hActionRec);
if ((iResult == IDCANCEL) || (iResult == IDABORT))
return E_ABORT;
return S_OK;
}
// The rest don't do anything...
STDMETHOD(OnStartBinding)(/* [in] */ DWORD dwReserved, /* [in] */ IBinding __RPC_FAR *pib)
{ return E_NOTIMPL; }
STDMETHOD(GetPriority)(/* [out] */ LONG __RPC_FAR *pnPriority)
{ return E_NOTIMPL; }
STDMETHOD(OnLowResource)(/* [in] */ DWORD reserved)
{ return E_NOTIMPL; }
STDMETHOD(OnStopBinding)(/* [in] */ HRESULT hresult, /* [unique][in] */ LPCWSTR szError)
{ return E_NOTIMPL; }
STDMETHOD(GetBindInfo)(/* [out] */ DWORD __RPC_FAR *grfBINDF, /* [unique][out][in] */ BINDINFO __RPC_FAR *pbindinfo)
{ return E_NOTIMPL; }
STDMETHOD(OnDataAvailable)(/* [in] */ DWORD grfBSCF, /* [in] */ DWORD dwSize, /* [in] */ FORMATETC __RPC_FAR *pformatetc, /* [in] */ STGMEDIUM __RPC_FAR *pstgmed)
{ return E_NOTIMPL; }
STDMETHOD(OnObjectAvailable)(/* [in] */ REFIID riid, /* [iid_is][in] */ IUnknown __RPC_FAR *punk)
{ return E_NOTIMPL; }
// IUnknown stuff
STDMETHOD_(ULONG,AddRef)()
{ return 0; }
STDMETHOD_(ULONG,Release)()
{ return 0; }
STDMETHOD(QueryInterface)(/* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject)
{ return E_NOTIMPL; }
};
HRESULT ExtractBinary(
__in LPCWSTR wzBinaryId,
__out BYTE** pbData,
__out DWORD* pcbData
)
{
HRESULT hr = S_OK;
LPWSTR pwzSql = NULL;
PMSIHANDLE hView;
PMSIHANDLE hRec;
// make sure we're not horked from the get-go
hr = WcaTableExists(L"Binary");
if (S_OK != hr)
{
if (SUCCEEDED(hr))
{
hr = E_UNEXPECTED;
}
ExitOnFailure(hr, "There is no Binary table.");
}
ExitOnNull(wzBinaryId, hr, E_INVALIDARG, "Binary ID cannot be null");
ExitOnNull(*wzBinaryId, hr, E_INVALIDARG, "Binary ID cannot be empty string");
hr = StrAllocFormatted(&pwzSql, L"SELECT `Data` FROM `Binary` WHERE `Name`=\'%s\'", wzBinaryId);
ExitOnFailure(hr, "Failed to allocate Binary table query.");
hr = WcaOpenExecuteView(pwzSql, &hView);
ExitOnFailure(hr, "Failed to open view on Binary table");
hr = WcaFetchSingleRecord(hView, &hRec);
ExitOnFailure(hr, "Failed to retrieve request from Binary table");
hr = WcaGetRecordStream(hRec, 1, pbData, pcbData);
ExitOnFailure(hr, "Failed to read Binary.Data.");
LExit:
ReleaseStr(pwzSql);
return hr;
}
HRESULT ExtractBinaryToFile(
__in LPCWSTR wzBinaryId,
__in LPCWSTR wzFilePath
)
{
HRESULT hr = S_OK;
BYTE* pbData = NULL;
DWORD cbData = 0;
DWORD cbWritten = 0;
HANDLE hFile = INVALID_HANDLE_VALUE;
wchar_t szTmpFile[BUF_LEN] = L""; DWORD nTmpFileLen = BUF_LEN;
hr = ExtractBinary(wzBinaryId, &pbData, &cbData);
hFile = CreateFile(wzFilePath, GENERIC_WRITE,FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE) {
WriteFile(hFile, pbData, cbData, &cbWritten, NULL);
CloseHandle(hFile);
}
else
{
hr = HRESULT_FROM_WIN32(::GetLastError());
}
return hr;
}
BOOL ExecuteCommandLine(LPWSTR CommandLine, DWORD & exitCode)
{
PROCESS_INFORMATION processInformation = {0};
STARTUPINFO startupInfo = {0};
startupInfo.cb = sizeof(startupInfo);
// Create the process
BOOL result = CreateProcess(NULL, CommandLine,
NULL, NULL, FALSE,
NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW,
NULL, NULL, &startupInfo, &processInformation);
if (!result)
{
// CreateProcess() failed; Get the error from the system
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL);
// Display the error
LPTSTR strError = (LPTSTR) lpMsgBuf;
// Free resources created by the system
LocalFree(lpMsgBuf);
// We failed.
return FALSE;
}
else
{
// Successfully created the process. Wait for it to finish.
WaitForSingleObject( processInformation.hProcess, INFINITE );
// Get the exit code.
result = GetExitCodeProcess(processInformation.hProcess, &exitCode);
// Close the handles.
CloseHandle( processInformation.hProcess );
CloseHandle( processInformation.hThread );
if (!result)
return FALSE;
// We succeeded.
return TRUE;
}
}
HRESULT UnzipToFolder(
MSIHANDLE hInstall,
__in LPCWSTR wzFriendlyName,
__in LPCWSTR wzTarGzFileName,
__in LPCWSTR wzDestPath
)
{
HRESULT hr = S_OK;
WcaLog(LOGMSG_STANDARD, "Extract \"%S\" package initialized.", wzFriendlyName);
wchar_t szSourceDir[BUF_LEN] = L""; DWORD nSourceDirDirLen = BUF_LEN;
wchar_t szTarGzFilePath[BUF_LEN] = L"";
wchar_t szTarFilePath[BUF_LEN] = L"";
MsiGetProperty(hInstall, L"SourceDir", szSourceDir, &nSourceDirDirLen);
StringCchPrintf(szTarGzFilePath, BUF_LEN, L"%s%s", szSourceDir, wzTarGzFileName);
StringCchPrintf(szTarFilePath, BUF_LEN, L"%s*.tar", szSourceDir);
DWORD pdwAttr;
if (FileExistsEx(szTarGzFilePath, &pdwAttr) == TRUE)
{
//Extacting quality_cloud_production.sql to %TEMP% folder
wchar_t szTmpDir[BUF_LEN] = L""; DWORD nTmpDirLen = BUF_LEN;
wchar_t sz7Zip[BUF_LEN] = L"";
wchar_t szCommandLine1[BUF_LEN] = L"";
wchar_t szCommandLine2[BUF_LEN] = L"";
MsiGetProperty(hInstall, L"TempFolder", szTmpDir, &nTmpDirLen);
StringCchPrintf(sz7Zip, BUF_LEN, L"%s%s", szTmpDir, L"7za.exe");
DWORD pdwAttr;
if (FileExistsEx(sz7Zip, &pdwAttr) == FALSE)
{
hr = ExtractBinaryToFile(L"SevenZip", sz7Zip);
}
StringCchPrintf(szCommandLine1, BUF_LEN, L"\"%s\" x -o\"%s\" -y \"%s\"", sz7Zip, szSourceDir, szTarGzFilePath);
StringCchPrintf(szCommandLine2, BUF_LEN, L"\"%s\" x -o\"%s\" -y \"%s\"", sz7Zip, wzDestPath, szTarFilePath);
DWORD nRes=0;
LPTSTR ErrorMessage = NULL;
ExecuteCommandLine(szCommandLine1, nRes);
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, HRESULT_FROM_WIN32(nRes), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&ErrorMessage, 0, NULL);
if (NULL != ErrorMessage) WcaLog(LOGMSG_STANDARD, "Archive expanding completed with (%d): %S", nRes, ErrorMessage);
ExecuteCommandLine(szCommandLine2, nRes);
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, HRESULT_FROM_WIN32(nRes), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&ErrorMessage, 0, NULL);
if (NULL != ErrorMessage) WcaLog(LOGMSG_STANDARD, "Archive deployment completed with (%d): %S", nRes, ErrorMessage);
}
else
{
hr = HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND);
WcaLog(LOGMSG_STANDARD, "Failed to extract %S files. File not found: %S", wzFriendlyName, szTarGzFilePath);
}
WcaLog(LOGMSG_STANDARD, "Extracting \"%S\" package completed.", wzFriendlyName);
return hr;
}
UINT __stdcall Extract_MeteorFiles(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
hr = WcaInitialize(hInstall, "Extract_MeteorFiles");
ExitOnFailure(hr, "Failed to initialize Extract_MeteorFiles");
wchar_t szMeteorDir[BUF_LEN] = L""; DWORD nMeteorDirLen = BUF_LEN;
MsiGetProperty(hInstall, L"METEOR_DIR", szMeteorDir, &nMeteorDirLen);
hr = UnzipToFolder(hInstall, L"Meteor", L"meteor-bootstrap-os.windows.x86_32.tar.gz", szMeteorDir);
ExitOnFailure(hr, "Failed to extract Meteor files.");
LExit:
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
return WcaFinalize(er);
}
HRESULT Download_Package(
MSIHANDLE hInstall,
__in LPCWSTR wzFriendlyName,
__in LPCWSTR wzProperty_DWNURL,
__in LPCWSTR wzZipFile)
{
HRESULT hr = S_OK;
WcaLog(LOGMSG_STANDARD, "Download package \"%S\" initialized.", wzFriendlyName);
wchar_t szSourceDir[BUF_LEN] = L""; DWORD nSourceDirDirLen = BUF_LEN;
wchar_t szDwnUrl[BUF_LEN] = L""; DWORD nDwnUrlLen = BUF_LEN;
wchar_t szDwnUser[BUF_LEN] = L""; DWORD nDwnUserLen = BUF_LEN;
wchar_t szDwnPass[BUF_LEN] = L""; DWORD nDwnPassLen = BUF_LEN;
wchar_t szZipFile[BUF_LEN] = L"";
MsiGetProperty(hInstall, L"SourceDir", szSourceDir, &nSourceDirDirLen);
MsiGetProperty(hInstall, wzProperty_DWNURL, szDwnUrl, &nDwnUrlLen);
MsiGetProperty(hInstall, L"HTTP_DWN_USER", szDwnUser, &nDwnUserLen);
MsiGetProperty(hInstall, L"HTTP_DWN_PASS", szDwnPass, &nDwnPassLen);
StringCchPrintf(szZipFile, BUF_LEN, L"%s%s", szSourceDir, wzZipFile);
// Checking for Prerequisites\localFile
wchar_t szBundleSrc[BUF_LEN] = L""; DWORD nBundleSrcLen = BUF_LEN;
wchar_t szPrereqDir[BUF_LEN] = L""; DWORD nPrereqDirLen = BUF_LEN;
wchar_t szLocalFile[BUF_LEN] = L"";
wchar_t* szBundlePath;
MsiGetProperty(hInstall, L"BUNDLE_SOURCE", szBundleSrc, &nBundleSrcLen);
MsiGetProperty(hInstall, L"PREREQ_FOLDER", szPrereqDir, &nPrereqDirLen);
PathGetDirectory(szBundleSrc, &szBundlePath);
StringCchPrintf(szLocalFile, BUF_LEN, L"%s%s\\%s", szBundlePath, szPrereqDir, wzZipFile);
// If local file exists use it instaead of download.
DWORD pdwAttr;
if (FileExistsEx(szLocalFile, &pdwAttr) == TRUE)
{
FileEnsureCopy(szLocalFile, szZipFile, TRUE);
WcaLog(LOGMSG_STANDARD, "Nginx local package found \"%S\", will use that.", szLocalFile);
}
else
{
MyCallback pCallback;
pCallback.iHInstall = hInstall;
hr = URLDownloadToFile(NULL, szDwnUrl, szZipFile, 0, &pCallback);
if (FAILED(hr))
WcaLog(LOGMSG_STANDARD, "Failed to download %S package from url: %S", wzFriendlyName, szDwnUrl);
else
WcaLog(LOGMSG_STANDARD, "%S package should be here: %S", wzFriendlyName, szZipFile);
}
WcaLog(LOGMSG_STANDARD, "Download package \"%S\" completed.", wzFriendlyName);
return hr;
}
UINT __stdcall Download_MeteorPackage(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
hr = WcaInitialize(hInstall, "Download_MeteorPackage");
ExitOnFailure(hr, "Failed to initialize Download_MeteorPackage");
hr = Download_Package(hInstall, L"Meteor", L"METEOR_DWN_URL", L"meteor-bootstrap-os.windows.x86_32.tar.gz");
ExitOnFailure(hr, "Failed to download Meteor package from specified URL.");
LExit:
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
return WcaFinalize(er);
}
UINT __stdcall BulkRemoveMeteorFiles(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
hr = WcaInitialize(hInstall, "BulkRemoveMeteorFiles");
ExitOnFailure(hr, "Failed to initialize BulkRemoveMeteorFiles");
WcaLog(LOGMSG_STANDARD, "BulkRemoveMeteorFiles Initialized.");
wchar_t szPathPackages[BUF_LEN] = L""; DWORD nPathPackages = BUF_LEN;
wchar_t szPathPkg_Meta[BUF_LEN] = L""; DWORD nPathPkg_Meta = BUF_LEN;
MsiGetProperty(hInstall, L"METEORDIR_PACKAGES", szPathPackages, &nPathPackages);
MsiGetProperty(hInstall, L"METEORDIR_PKG_META", szPathPkg_Meta, &nPathPkg_Meta);
wchar_t szSysDir[BUF_LEN] = L""; DWORD nSysDirLen = BUF_LEN;
wchar_t szCmd1[BUF_LEN] = L"";
wchar_t szCmd2[BUF_LEN] = L"";
DWORD nRes=0;
MsiGetProperty(hInstall, L"SystemFolder", szSysDir, &nSysDirLen);
StringCchPrintf(szCmd1, BUF_LEN, L"%s\\cmd.exe /C \"RD /S /Q \"%s\">NUL\"", szSysDir, szPathPackages);
StringCchPrintf(szCmd2, BUF_LEN, L"%s\\cmd.exe /C \"RD /S /Q \"%s\">NUL\"", szSysDir, szPathPkg_Meta);
ExecuteCommandLine(szCmd1, nRes);
ExecuteCommandLine(szCmd2, nRes);
WcaLog(LOGMSG_STANDARD, "BulkRemoveMeteorFiles done.");
LExit:
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
return WcaFinalize(er);
}
// DllMain - Initialize and cleanup WiX custom action utils.
extern "C" BOOL WINAPI DllMain(
__in HINSTANCE hInst,
__in ULONG ulReason,
__in LPVOID
)
{
switch(ulReason)
{
case DLL_PROCESS_ATTACH:
WcaGlobalInitialize(hInst);
break;
case DLL_PROCESS_DETACH:
WcaGlobalFinalize();
break;
}
return TRUE;
}

View File

@@ -1,128 +1,128 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{17815519-26F7-4F37-9FAC-3FC50796C25D}</ProjectGuid>
<RootNamespace>WiXHelper</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">bin\$(Configuration)\Win32\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">obj\$(Configuration)\Win32\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>bin\$(Configuration)\Win64\</OutDir>
<IntDir>obj\$(Configuration)\Win64\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\WiXSDK\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;Version.lib;Urlmon.lib;Wininet.lib;Userenv.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\WiXSDK\VS2010\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>CustomAction.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\WiXSDK\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;Version.lib;Urlmon.lib;Wininet.lib;Userenv.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\WiXSDK\VS2010\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>CustomAction.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="CustomAction.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="CustomAction.def" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{17815519-26F7-4F37-9FAC-3FC50796C25D}</ProjectGuid>
<RootNamespace>WiXHelper</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">bin\$(Configuration)\Win32\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">obj\$(Configuration)\Win32\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>bin\$(Configuration)\Win64\</OutDir>
<IntDir>obj\$(Configuration)\Win64\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\WiXSDK\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;Version.lib;Urlmon.lib;Wininet.lib;Userenv.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\WiXSDK\VS2010\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>CustomAction.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\WiXSDK\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;Version.lib;Urlmon.lib;Wininet.lib;Userenv.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\WiXSDK\VS2010\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>CustomAction.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="CustomAction.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="CustomAction.def" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -1,38 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="CustomAction.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="CustomAction.def">
<Filter>Source Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="CustomAction.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="CustomAction.def">
<Filter>Source Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,196 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/
# Visual Studo 2015 cache/options directory
.vs/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding addin-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
*.[Cc]ache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt

View File

@@ -5,7 +5,7 @@
<?define BUNDLE_UpgradeCode = "{D6F8653E-2F27-4FDD-9C92-66D7B4B21D79}" ?>
<?define METEOR_Version = "1.0.3.1" ?>
<?define METEOR_Version = "__METEOR_RELEASE_SEMVER__" ?>
<?define METEOR_Manufacturer = "Meteor Development Group " ?>
<?define METEOR_ProductUrl = "https://www.meteor.com/" ?>
<?define METEOR_UpgradeUrl = "https://www.meteor.com/" ?>
@@ -23,6 +23,6 @@
<?define METEOR_PkgFileName = "meteor-bootstrap-os.windows.x86_32.tar.gz"?>
<?define METEOR_PkgDwnUrl = "https://s3.amazonaws.com/com.meteor.static/packages-bootstrap/WINDOWS-PREVIEW%400.1.1/meteor-bootstrap-os.windows.x86_32.tar.gz"?>
<?define METEOR_PkgDwnUrl = "https://s3.amazonaws.com/com.meteor.static/packages-bootstrap/__METEOR_RELEASE__/meteor-bootstrap-os.windows.x86_32.tar.gz"?>
</Include>
</Include>

View File

@@ -1,65 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProjectGuid>{e053726b-937b-40c7-8f3d-25a3226979d9}</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<Name>MSIPackage</Name>
<Version>6.0.2469</Version>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\$(Configuration)\$(Platform)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>
</DefineConstants>
<InstallerPlatform>x86</InstallerPlatform>
<SuppressIces>ICE60;ICE80</SuppressIces>
<OutputName>SetupMeteor</OutputName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<OutputPath>bin\$(Configuration)\$(Platform)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>
</DefineConstants>
<InstallerPlatform>x64</InstallerPlatform>
<SuppressIces>ICE60;ICE61;ICE69;</SuppressIces>
<OutputName>SetupMeteor</OutputName>
<SuppressSpecificWarnings>
</SuppressSpecificWarnings>
</PropertyGroup>
<ItemGroup>
<WixExtension Include="WixNetFxExtension">
<HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
<Name>WixNetFxExtension</Name>
</WixExtension>
<WixExtension Include="WixFirewallExtension">
<HintPath>$(WixExtDir)\WixFirewallExtension.dll</HintPath>
<Name>WixFirewallExtension</Name>
</WixExtension>
<WixExtension Include="WixUtilExtension">
<HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
<Name>WixUtilExtension</Name>
</WixExtension>
</ItemGroup>
<ItemGroup>
<Compile Include="Meteor_Product.wxs" />
</ItemGroup>
<ItemGroup>
<Content Include="Configuration.wxi">
<Link>Configuration.wxi</Link>
</Content>
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<PropertyGroup>
<PostBuildEvent />
</PropertyGroup>
<PropertyGroup>
<PreBuildEvent />
</PropertyGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProjectGuid>{e053726b-937b-40c7-8f3d-25a3226979d9}</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<Name>MSIPackage</Name>
<Version>6.0.2469</Version>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\$(Configuration)\$(Platform)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>
</DefineConstants>
<InstallerPlatform>x86</InstallerPlatform>
<SuppressIces>ICE60;ICE80</SuppressIces>
<OutputName>SetupMeteor</OutputName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<OutputPath>bin\$(Configuration)\$(Platform)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>
</DefineConstants>
<InstallerPlatform>x64</InstallerPlatform>
<SuppressIces>ICE60;ICE61;ICE69;</SuppressIces>
<OutputName>SetupMeteor</OutputName>
<SuppressSpecificWarnings>
</SuppressSpecificWarnings>
</PropertyGroup>
<ItemGroup>
<WixExtension Include="WixNetFxExtension">
<HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
<Name>WixNetFxExtension</Name>
</WixExtension>
<WixExtension Include="WixFirewallExtension">
<HintPath>$(WixExtDir)\WixFirewallExtension.dll</HintPath>
<Name>WixFirewallExtension</Name>
</WixExtension>
<WixExtension Include="WixUtilExtension">
<HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
<Name>WixUtilExtension</Name>
</WixExtension>
</ItemGroup>
<ItemGroup>
<Compile Include="Meteor_Product.wxs" />
</ItemGroup>
<ItemGroup>
<Content Include="Configuration.wxi">
<Link>Configuration.wxi</Link>
</Content>
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<PropertyGroup>
<PostBuildEvent />
</PropertyGroup>
<PropertyGroup>
<PreBuildEvent />
</PropertyGroup>
<!--
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
@@ -67,5 +67,5 @@
</Target>
<Target Name="AfterBuild">
</Target>
-->
-->
</Project>

View File

@@ -1,73 +1,73 @@
<?xml version="1.0"?>
<!-- This example demonstrates the use of an external theme file to create the same UI as Hyperlink2License built in to WixBalExtensionExt. It also shows the use of two folder selections and radio buttons on the options page. -->
<Wix
RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<?include Configuration.wxi?>
<Bundle Name="$(var.METEOR_ProductName)" Version="$(var.METEOR_Version)" Manufacturer="$(var.METEOR_Manufacturer)"
UpgradeCode="$(var.BUNDLE_UpgradeCode)" AboutUrl="$(var.METEOR_ProductUrl)"
IconSourceFile="Resources\Product.ico" Condition="(VersionNT &gt;= v5.1)" >
<Update Location="$(var.METEOR_UpgradeUrl)"/>
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.HyperlinkLicense">
<Payload SourceFile="$(var.METEOR_Background)" />
<Payload SourceFile="$(var.METEOR_TopHeader)" />
<Payload SourceFile="$(var.METEOR_Logo)" />
<Payload SourceFile="$(var.METEOR_License)" Compressed="yes" />
</BootstrapperApplicationRef>
<WixVariable Id="WixExtbaLicenseUrl" Value="License.htm" />
<WixVariable Id="WixExtbaThemeXml" Value="$(var.METEOR_Theme)" />
<WixVariable Id="WixExtbaThemeWxl" Value="$(var.METEOR_Localization)" />
<WixVariable Id="WixBundleElevated" Value="1"/>
<Variable Name="TermsUrl" Type="string" Value="$(var.METEOR_TermsUrl)" />
<Variable Name="PrivacyUrl" Type="string" Value="$(var.METEOR_PrivacyUrl)" />
<Variable Name="PerMachineInstall" Type="numeric" Persisted="yes" Value="1" />
<Variable Name="PerUserInstall" Type="numeric" Persisted="yes" Value="0" />
<Variable Name="CreateRButton" Type="numeric" Persisted="yes" Value="1" />
<Variable Name="SignInRButton" Type="numeric" Persisted="yes" Value="0" />
<Variable Name="RegisterEmail" Type="string" Persisted="yes" Value="" Hidden="yes" />
<Variable Name="RegisterUser" Type="string" Persisted="yes" Value="" Hidden="yes" />
<Variable Name="RegisterPass" Type="string" Persisted="yes" Value="" Hidden="yes" />
<Variable Name="SkipRegistration" Type="numeric" Persisted="yes" Value="0"/>
<Variable Name="UserMeteorSessionFile" Type="string" Persisted="yes" Value="%HOMEPATH%\.meteorsession" />
<Variable Name="PerMachineInstallFolder" Type="string" Persisted="yes" Value="[ProgramFilesFolder][WixBundleName]" />
<Variable Name="PerUserInstallFolder" Type="string" Persisted="yes" Value="[LocalAppDataFolder][WixBundleName]" />
<Variable Name="InstallFolder" Type="string" Persisted="yes" Value="[ProgramFilesFolder][WixBundleName]" />
<Variable Name="InstallRegPath" Type="string" Persisted="yes" Value="SOFTWARE\$(var.METEOR_Manufacturer)\$(var.METEOR_ProductName)\Install" />
<Variable Name="MSICustomErrFile" Type="string" Persisted="yes" Value="[WixBundleLog].err" />
<Chain DisableSystemRestore="yes">
<!-- Here we set MSI propertyies if user chose perUser install -->
<MsiPackage Id="SetupMeteor_MachineInstall" Compressed="yes" InstallCondition="NOT Installed AND (PerMachineInstall = 1)"
SourceFile="bin\$(var.Configuration)\$(var.Platform)\SetupMeteor.msi" Vital="yes" ForcePerMachine="yes" >
<MsiProperty Name="METEOR_DIR" Value="[InstallFolder]" />
<MsiProperty Name="INSTALL_REG_PATH" Value="[InstallRegPath]"/>
<MsiProperty Name="MSICUSTOMERRFILE" Value="[MSICustomErrFile]" />
<MsiProperty Name="PERMACHINE_INSTALL" Value="1" />
</MsiPackage>
<!-- Here we set MSI propertyies if user chose perUser install -->
<MsiPackage Id="SetupMeteor_UserInstall" Compressed="yes" InstallCondition="NOT Installed AND (PerUserInstall = 1)"
SourceFile="bin\$(var.Configuration)\$(var.Platform)\SetupMeteor.msi" Vital="yes" >
<MsiProperty Name="METEOR_DIR" Value="[InstallFolder]" />
<MsiProperty Name="INSTALL_REG_PATH" Value="[InstallRegPath]"/>
<MsiProperty Name="MSICUSTOMERRFILE" Value="[MSICustomErrFile]" />
<MsiProperty Name="PERUSER_INSTALL" Value="1" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>
<?xml version="1.0"?>
<!-- This example demonstrates the use of an external theme file to create the same UI as Hyperlink2License built in to WixBalExtensionExt. It also shows the use of two folder selections and radio buttons on the options page. -->
<Wix
RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<?include Configuration.wxi?>
<Bundle Name="$(var.METEOR_ProductName)" Version="$(var.METEOR_Version)" Manufacturer="$(var.METEOR_Manufacturer)"
UpgradeCode="$(var.BUNDLE_UpgradeCode)" AboutUrl="$(var.METEOR_ProductUrl)"
IconSourceFile="Resources\Product.ico" Condition="(VersionNT &gt;= v5.1)" >
<Update Location="$(var.METEOR_UpgradeUrl)"/>
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.HyperlinkLicense">
<Payload SourceFile="$(var.METEOR_Background)" />
<Payload SourceFile="$(var.METEOR_TopHeader)" />
<Payload SourceFile="$(var.METEOR_Logo)" />
<Payload SourceFile="$(var.METEOR_License)" Compressed="yes" />
</BootstrapperApplicationRef>
<WixVariable Id="WixExtbaLicenseUrl" Value="License.htm" />
<WixVariable Id="WixExtbaThemeXml" Value="$(var.METEOR_Theme)" />
<WixVariable Id="WixExtbaThemeWxl" Value="$(var.METEOR_Localization)" />
<WixVariable Id="WixBundleElevated" Value="1"/>
<Variable Name="TermsUrl" Type="string" Value="$(var.METEOR_TermsUrl)" />
<Variable Name="PrivacyUrl" Type="string" Value="$(var.METEOR_PrivacyUrl)" />
<Variable Name="PerMachineInstall" Type="numeric" Persisted="yes" Value="1" />
<Variable Name="PerUserInstall" Type="numeric" Persisted="yes" Value="0" />
<Variable Name="CreateRButton" Type="numeric" Persisted="yes" Value="1" />
<Variable Name="SignInRButton" Type="numeric" Persisted="yes" Value="0" />
<Variable Name="RegisterEmail" Type="string" Persisted="yes" Value="" Hidden="yes" />
<Variable Name="RegisterUser" Type="string" Persisted="yes" Value="" Hidden="yes" />
<Variable Name="RegisterPass" Type="string" Persisted="yes" Value="" Hidden="yes" />
<Variable Name="SkipRegistration" Type="numeric" Persisted="yes" Value="0"/>
<Variable Name="UserMeteorSessionFile" Type="string" Persisted="yes" Value="%HOMEPATH%\.meteorsession" />
<Variable Name="PerMachineInstallFolder" Type="string" Persisted="yes" Value="[ProgramFilesFolder][WixBundleName]" />
<Variable Name="PerUserInstallFolder" Type="string" Persisted="yes" Value="[LocalAppDataFolder][WixBundleName]" />
<Variable Name="InstallFolder" Type="string" Persisted="yes" Value="[ProgramFilesFolder][WixBundleName]" />
<Variable Name="InstallRegPath" Type="string" Persisted="yes" Value="SOFTWARE\$(var.METEOR_Manufacturer)\$(var.METEOR_ProductName)\Install" />
<Variable Name="MSICustomErrFile" Type="string" Persisted="yes" Value="[WixBundleLog].err" />
<Chain DisableSystemRestore="yes">
<!-- Here we set MSI propertyies if user chose perUser install -->
<MsiPackage Id="SetupMeteor_MachineInstall" Compressed="yes" InstallCondition="NOT Installed AND (PerMachineInstall = 1)"
SourceFile="bin\$(var.Configuration)\$(var.Platform)\SetupMeteor.msi" Vital="yes" ForcePerMachine="yes" >
<MsiProperty Name="METEOR_DIR" Value="[InstallFolder]" />
<MsiProperty Name="INSTALL_REG_PATH" Value="[InstallRegPath]"/>
<MsiProperty Name="MSICUSTOMERRFILE" Value="[MSICustomErrFile]" />
<MsiProperty Name="PERMACHINE_INSTALL" Value="1" />
</MsiPackage>
<!-- Here we set MSI propertyies if user chose perUser install -->
<MsiPackage Id="SetupMeteor_UserInstall" Compressed="yes" InstallCondition="NOT Installed AND (PerUserInstall = 1)"
SourceFile="bin\$(var.Configuration)\$(var.Platform)\SetupMeteor.msi" Vital="yes" >
<MsiProperty Name="METEOR_DIR" Value="[InstallFolder]" />
<MsiProperty Name="INSTALL_REG_PATH" Value="[InstallRegPath]"/>
<MsiProperty Name="MSICUSTOMERRFILE" Value="[MSICustomErrFile]" />
<MsiProperty Name="PERUSER_INSTALL" Value="1" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>

View File

@@ -1,87 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:fire="http://schemas.microsoft.com/wix/FirewallExtension"
xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension">
<?include Configuration.wxi?>
<Product Id="*" Name="$(var.METEOR_ProductName)" Language="1033" Version="$(var.METEOR_Version)" Manufacturer="$(var.METEOR_Manufacturer)" UpgradeCode="$(var.METEOR_UpgradeCode)">
<Package Description="This opackage will install Meteor on your computer." InstallerVersion="300" Compressed="yes" InstallScope="perUser" InstallPrivileges="limited"/>
<!-- This will allow a new msi package to upgrade an existing older version (in case patch is not used) -->
<MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." AllowSameVersionUpgrades="yes"/>
<Media Id="1" Cabinet="product.cab" EmbedCab="yes"/>
<Property Id="DiskPrompt" Value="$(var.METEOR_ProductName) Installation [1]"/>
<Property Id="ARPURLINFOABOUT" Value="$(var.METEOR_ProductName)"/>
<Property Id="ARPURLUPDATEINFO" Value="$(var.METEOR_ProductName)"/>
<Property Id="ARPHELPLINK" Value="$(var.METEOR_ProductName)"/>
<Property Id="METEOR_DWN_URL" Value="$(var.METEOR_PkgDwnUrl)" />
<?if $(var.Platform)="x86"?>
<Binary Id="WiXHelper" SourceFile="..\WiXHelper\bin\Release\Win32\WiXHelper.dll"/>
<?else?>
<Binary Id="WiXHelper" SourceFile="..\WiXHelper\bin\Release\Win64\WiXHelper.dll"/>
<?endif?>
<Binary Id="SevenZip" SourceFile="Resources\7za.exe" />
<Feature Id="ProductFiles" Title="Meteor Product Files" Level="1">
<ComponentGroupRef Id="CG_MeteorConfiguration"/>
</Feature>
<!-- Directory structure -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="METEOR_DIR">
<Directory Id="P_METEOR_DIR" Name=".meteor" />
</Directory>
</Directory>
<CustomAction Id="Download_MeteorPackage" BinaryKey="WiXHelper" Return="check" DllEntry="Download_MeteorPackage" />
<CustomAction Id="Extract_MeteorFiles" BinaryKey="WiXHelper" Return="check" DllEntry="Extract_MeteorFiles" />
<CustomAction Id="BulkRemoveMeteorFiles" BinaryKey="WiXHelper" Return="check" DllEntry="BulkRemoveMeteorFiles" />
<CustomAction Id="SetFolderPackages" Property="METEORDIR_PACKAGES" Value="[METEOR_DIR].meteor\packages" />
<CustomAction Id="SetFolderPkg_Meta" Property="METEORDIR_PKG_META" Value="[METEOR_DIR].meteor\package-metadata" />
<InstallExecuteSequence>
<Custom Action="Download_MeteorPackage" After="InstallFiles">NOT Installed</Custom>
<Custom Action="Extract_MeteorFiles" After="Download_MeteorPackage">NOT Installed</Custom>
<Custom Action="SetFolderPackages" After="InstallInitialize">REMOVE~="ALL"</Custom>
<Custom Action="SetFolderPkg_Meta" After="InstallInitialize">REMOVE~="ALL"</Custom>
<Custom Action="BulkRemoveMeteorFiles" Before="RemoveFiles">REMOVE~="ALL"</Custom>
</InstallExecuteSequence>
<UI>
<ProgressText Action="Extract_MeteorFiles">Installing Meteor files ...</ProgressText>
<ProgressText Action="BulkRemoveMeteorFiles">Removing Meteor files ...</ProgressText>
</UI>
</Product>
<Fragment>
<ComponentGroup Id="CG_MeteorConfiguration">
<Component Id="UserEnvironmentsVar" Guid="{6222C645-5576-468F-A776-9FE7BA2FF465}" Directory="TARGETDIR">
<Condition>NOT Installed AND PERUSER_INSTALL</Condition>
<Environment Id="UserEnvPATH" Name="PATH" Value="[P_METEOR_DIR]" Separator=";" Action="set" Part="last" Permanent="yes" System="no" />
</Component>
<Component Id="SystemEnvironmentsVar" Guid="{6222C645-5576-468F-A776-9FE7BA2FF465}" Directory="TARGETDIR">
<Condition>NOT Installed AND PERMACHINE_INSTALL</Condition>
<Environment Id="SystemEnvPATH" Name="PATH" Value="[P_METEOR_DIR]" Separator=";" Action="set" Part="last" Permanent="yes" System="yes" />
</Component>
<Component Id="UninstallMeteorFilesAndFolders" Guid="{989BB4D9-78CE-4230-A2AB-292998A88B82}" Directory="TARGETDIR">
<RemoveFile Id="RemoveRootBatch" On="uninstall" Directory="P_METEOR_DIR" Name="meteor.bat" />
<RemoveFolder Id="RemoveRootFolder" On="uninstall" Directory="P_METEOR_DIR" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
<?xml version="1.0" encoding="UTF-8"?>
<Wix
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:fire="http://schemas.microsoft.com/wix/FirewallExtension"
xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension">
<?include Configuration.wxi?>
<Product Id="*" Name="$(var.METEOR_ProductName)" Language="1033" Version="$(var.METEOR_Version)" Manufacturer="$(var.METEOR_Manufacturer)" UpgradeCode="$(var.METEOR_UpgradeCode)">
<Package Description="This opackage will install Meteor on your computer." InstallerVersion="300" Compressed="yes" InstallScope="perUser" InstallPrivileges="limited"/>
<!-- This will allow a new msi package to upgrade an existing older version (in case patch is not used) -->
<MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." AllowSameVersionUpgrades="yes"/>
<Media Id="1" Cabinet="product.cab" EmbedCab="yes"/>
<Property Id="DiskPrompt" Value="$(var.METEOR_ProductName) Installation [1]"/>
<Property Id="ARPURLINFOABOUT" Value="$(var.METEOR_ProductName)"/>
<Property Id="ARPURLUPDATEINFO" Value="$(var.METEOR_ProductName)"/>
<Property Id="ARPHELPLINK" Value="$(var.METEOR_ProductName)"/>
<Property Id="METEOR_DWN_URL" Value="$(var.METEOR_PkgDwnUrl)" />
<?if $(var.Platform)="x86"?>
<Binary Id="WiXHelper" SourceFile="..\WiXHelper\bin\Release\Win32\WiXHelper.dll"/>
<?else?>
<Binary Id="WiXHelper" SourceFile="..\WiXHelper\bin\Release\Win64\WiXHelper.dll"/>
<?endif?>
<Binary Id="SevenZip" SourceFile="Resources\7za.exe" />
<Feature Id="ProductFiles" Title="Meteor Product Files" Level="1">
<ComponentGroupRef Id="CG_MeteorConfiguration"/>
</Feature>
<!-- Directory structure -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="METEOR_DIR">
<Directory Id="P_METEOR_DIR" Name=".meteor" />
</Directory>
</Directory>
<CustomAction Id="Download_MeteorPackage" BinaryKey="WiXHelper" Return="check" DllEntry="Download_MeteorPackage" />
<CustomAction Id="Extract_MeteorFiles" BinaryKey="WiXHelper" Return="check" DllEntry="Extract_MeteorFiles" />
<CustomAction Id="BulkRemoveMeteorFiles" BinaryKey="WiXHelper" Return="check" DllEntry="BulkRemoveMeteorFiles" />
<CustomAction Id="SetFolderPackages" Property="METEORDIR_PACKAGES" Value="[METEOR_DIR].meteor\packages" />
<CustomAction Id="SetFolderPkg_Meta" Property="METEORDIR_PKG_META" Value="[METEOR_DIR].meteor\package-metadata" />
<InstallExecuteSequence>
<Custom Action="Download_MeteorPackage" After="InstallFiles">NOT Installed</Custom>
<Custom Action="Extract_MeteorFiles" After="Download_MeteorPackage">NOT Installed</Custom>
<Custom Action="SetFolderPackages" After="InstallInitialize">REMOVE~="ALL"</Custom>
<Custom Action="SetFolderPkg_Meta" After="InstallInitialize">REMOVE~="ALL"</Custom>
<Custom Action="BulkRemoveMeteorFiles" Before="RemoveFiles">REMOVE~="ALL"</Custom>
</InstallExecuteSequence>
<UI>
<ProgressText Action="Extract_MeteorFiles">Installing Meteor files ...</ProgressText>
<ProgressText Action="BulkRemoveMeteorFiles">Removing Meteor files ...</ProgressText>
</UI>
</Product>
<Fragment>
<ComponentGroup Id="CG_MeteorConfiguration">
<Component Id="UserEnvironmentsVar" Guid="{6222C645-5576-468F-A776-9FE7BA2FF465}" Directory="TARGETDIR">
<Condition>NOT Installed AND PERUSER_INSTALL</Condition>
<Environment Id="UserEnvPATH" Name="PATH" Value="[P_METEOR_DIR]" Separator=";" Action="set" Part="last" Permanent="yes" System="no" />
</Component>
<Component Id="SystemEnvironmentsVar" Guid="{6222C645-5576-468F-A776-9FE7BA2FF465}" Directory="TARGETDIR">
<Condition>NOT Installed AND PERMACHINE_INSTALL</Condition>
<Environment Id="SystemEnvPATH" Name="PATH" Value="[P_METEOR_DIR]" Separator=";" Action="set" Part="last" Permanent="yes" System="yes" />
</Component>
<Component Id="UninstallMeteorFilesAndFolders" Guid="{989BB4D9-78CE-4230-A2AB-292998A88B82}" Directory="TARGETDIR">
<RemoveFile Id="RemoveRootBatch" On="uninstall" Directory="P_METEOR_DIR" Name="meteor.bat" />
<RemoveFolder Id="RemoveRootFolder" On="uninstall" Directory="P_METEOR_DIR" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -1,97 +1,97 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="Caption">[WixBundleName] Setup</String>
<String Id="Title">[WixBundleName]</String>
<String Id="InstallHeader">Welcome to the [WixBundleName] Setup</String>
<String Id="InstallMessage">Setup will install [WixBundleName] on your computer. During the wizard, you will be able to adjust product features and settings that fit best to your needs.</String>
<String Id="InstallVersion">Version [WixBundleVersion]</String>
<String Id="InstallLicenseLinkText">By installing this application you have to read, understood and agree [WixBundleName]'s &lt;a href="[TermsUrl]"&gt;Terms of Use&lt;/a&gt; and &lt;a href="[PrivacyUrl]"&gt;Privacy Policy&lt;/a&gt;.</String>
<String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
<String Id="HelpHeader">Setup Help</String>
<String Id="HelpText">
/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or creates a complete local copy of the bundle in directory. Install is the default.
/passive | /quiet - displays minimal UI with no prompts or displays no UI and no prompts. By default UI and all prompts are displayed.
/norestart - suppress any attempts to restart. By default UI will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.
</String>
<String Id="HelpCloseButton">&amp;Close</String>
<String Id="InstallAcceptCheckbox">I &amp;agree to the license terms and conditions</String>
<String Id="InstallOptionsButton">&amp;Options</String>
<String Id="InstallInstallButton">&amp;Install</String>
<String Id="InstallCloseButton">&amp;Cancel</String>
<String Id="BackButton">&lt; Back</String>
<String Id="NextButton">Next &gt;</String>
<String Id="InstallMeteor">Install [WixBundleName]</String>
<String Id="InstallUpgradeLinkText">Version [WixBundleVersion] &lt;a href="#"&gt;upgrade available&lt;/a&gt;</String>
<String Id="CurrentUserPass">Current user password:</String>
<String Id="InstallDirHeader">[WixBundleName] install directory</String>
<String Id="InstallDirMessage">Please select the way you want [WixBundleName] to be installed on your computer.</String>
<String Id="InstallDirPathLabel">Install location:</String>
<String Id="InstallScopeLabel">Install this application for:</String>
<String Id="PerMachineInstallRButton">For all users on this computer (recommended)</String>
<String Id="PerUserInstallRButton">Only for me ([LogonUser])</String>
<String Id="RegistrationHeader">[WixBundleName] registration</String>
<String Id="RegistrationInfo">In order to continue it is recommended to configure your meteor developer account. </String>
<String Id="CreateRButton">Create a new developer account</String>
<String Id="SignInRButton">Sign In using an existing developer account</String>
<String Id="RegisterEmail">E-mail Address</String>
<String Id="RegisterUser">User Name</String>
<String Id="RegisterPass">Password</String>
<String Id="SkipRegistration">Skip [WixBundleName] registration and continue with setup</String>
<String Id="OptionsHeader">Setup Options</String>
<String Id="OptionsInfo">Adjust setup parameters in order to your needs.</String>
<String Id="OptionsLocationLabel">Install location:</String>
<String Id="OptionsBrowseButton">&amp;Browse...</String>
<String Id="OptionsLocationLabel2">Database location:</String>
<String Id="OptionsBrowseButton2">B&amp;rowse...</String>
<String Id="OptionsOkButton">&amp;OK</String>
<String Id="OptionsCancelButton">&amp;Cancel</String>
<String Id="ProgressHeader">Installing [WixBundleName]</String>
<String Id="ProgressHeaderRepair">Repairing [WixBundleName]</String>
<String Id="ProgressHeaderUninstall">Uninstalling [WixBundleName]</String>
<String Id="ProgressInfo">Please wait while Setup installs [WixBundleName] on your computer.</String>
<String Id="ProgressInfoRepair">Please wait while Setup repairs [WixBundleName] installed on your computer.</String>
<String Id="ProgressInfoUninstall">Please wait while [WixBundleName] is removed from your computer.</String>
<String Id="ProgressLabel">Processing:</String>
<String Id="OverallProgressPackageText">Initializing...</String>
<String Id="ExecuteProgressText">Initializing...</String>
<String Id="OverallProgressText">Initializing...</String>
<String Id="ExecuteProgressActionDataText"></String>
<String Id="ProgressCancelButton">&amp;Cancel</String>
<String Id="ModifyHeader">[WixBundleName] Maintenance</String>
<String Id="ModifyInfo">The setup wizard allows you to repair or remove the [WixBundleName] on your computer. If you have a previous [WixBundleName] application currently running, it is recommended to close it.&#13;&#13;&#10;Click Repair if you want to repair [WixBundleName], Uninstall to remove it or click Cancel to close this maintenance wizard.</String>
<String Id="ModifyRepairButton">&amp;Repair</String>
<String Id="ModifyUninstallButton">&amp;Uninstall</String>
<String Id="ModifyCloseButton">&amp;Close</String>
<String Id="SuccessHeader">Setup Successful</String>
<String Id="SuccessHeaderRepair">Repair Successful</String>
<String Id="SuccessHeaderUninstall">Uninstall Successful</String>
<String Id="SuccessInfo">Setup has finished installing [WixBundleName] on your computer.&#13;&#10;&#13;&#10;Open a commandprompt window and type "meteor" to start.</String>
<String Id="SuccessErrorInfoText">Following non critical errors occured:</String>
<String Id="SuccessInfoRepair">Setup has finished repairing [WixBundleName] installed on your computer. The application may be launched by selecting the installed icons.</String>
<String Id="SuccessInfoUninstall">[WixBundleName] was successfully removed from your computer.</String>
<String Id="SuccessLaunchButton">&amp;Launch</String>
<String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
<String Id="SuccessRestartButton">&amp;Restart</String>
<String Id="SuccessCloseButton">&amp;Close</String>
<String Id="FailureHeader">Setup Failed</String>
<String Id="FailureHeaderRepair">Repair Failed</String>
<String Id="FailureHeaderUninstall">Uninstall Failed</String>
<String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the &lt;a href="#"&gt;log file&lt;/a&gt;.</String>
<String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
<String Id="FailureRestartButton">&amp;Restart</String>
<String Id="FailureCloseButton">&amp;Close</String>
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="Caption">[WixBundleName] Setup</String>
<String Id="Title">[WixBundleName]</String>
<String Id="InstallHeader">Welcome to the [WixBundleName] Setup</String>
<String Id="InstallMessage">Setup will install [WixBundleName] on your computer. During the wizard, you will be able to adjust product features and settings that fit best to your needs.</String>
<String Id="InstallVersion">Version [WixBundleVersion]</String>
<String Id="InstallLicenseLinkText">By installing this application you have to read, understood and agree [WixBundleName]'s &lt;a href="[TermsUrl]"&gt;Terms of Use&lt;/a&gt; and &lt;a href="[PrivacyUrl]"&gt;Privacy Policy&lt;/a&gt;.</String>
<String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
<String Id="HelpHeader">Setup Help</String>
<String Id="HelpText">
/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or creates a complete local copy of the bundle in directory. Install is the default.
/passive | /quiet - displays minimal UI with no prompts or displays no UI and no prompts. By default UI and all prompts are displayed.
/norestart - suppress any attempts to restart. By default UI will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.
</String>
<String Id="HelpCloseButton">&amp;Close</String>
<String Id="InstallAcceptCheckbox">I &amp;agree to the license terms and conditions</String>
<String Id="InstallOptionsButton">&amp;Options</String>
<String Id="InstallInstallButton">&amp;Install</String>
<String Id="InstallCloseButton">&amp;Cancel</String>
<String Id="BackButton">&lt; Back</String>
<String Id="NextButton">Next &gt;</String>
<String Id="InstallMeteor">Install [WixBundleName]</String>
<String Id="InstallUpgradeLinkText">Version [WixBundleVersion] &lt;a href="#"&gt;upgrade available&lt;/a&gt;</String>
<String Id="CurrentUserPass">Current user password:</String>
<String Id="InstallDirHeader">[WixBundleName] install directory</String>
<String Id="InstallDirMessage">Please select the way you want [WixBundleName] to be installed on your computer.</String>
<String Id="InstallDirPathLabel">Install location:</String>
<String Id="InstallScopeLabel">Install this application for:</String>
<String Id="PerMachineInstallRButton">For all users on this computer (recommended)</String>
<String Id="PerUserInstallRButton">Only for me ([LogonUser])</String>
<String Id="RegistrationHeader">[WixBundleName] registration</String>
<String Id="RegistrationInfo">In order to continue it is recommended to configure your meteor developer account. </String>
<String Id="CreateRButton">Create a new developer account</String>
<String Id="SignInRButton">Sign In using an existing developer account</String>
<String Id="RegisterEmail">E-mail Address</String>
<String Id="RegisterUser">User Name</String>
<String Id="RegisterPass">Password</String>
<String Id="SkipRegistration">Skip [WixBundleName] registration and continue with setup</String>
<String Id="OptionsHeader">Setup Options</String>
<String Id="OptionsInfo">Adjust setup parameters in order to your needs.</String>
<String Id="OptionsLocationLabel">Install location:</String>
<String Id="OptionsBrowseButton">&amp;Browse...</String>
<String Id="OptionsLocationLabel2">Database location:</String>
<String Id="OptionsBrowseButton2">B&amp;rowse...</String>
<String Id="OptionsOkButton">&amp;OK</String>
<String Id="OptionsCancelButton">&amp;Cancel</String>
<String Id="ProgressHeader">Installing [WixBundleName]</String>
<String Id="ProgressHeaderRepair">Repairing [WixBundleName]</String>
<String Id="ProgressHeaderUninstall">Uninstalling [WixBundleName]</String>
<String Id="ProgressInfo">Please wait while Setup installs [WixBundleName] on your computer.</String>
<String Id="ProgressInfoRepair">Please wait while Setup repairs [WixBundleName] installed on your computer.</String>
<String Id="ProgressInfoUninstall">Please wait while [WixBundleName] is removed from your computer.</String>
<String Id="ProgressLabel">Processing:</String>
<String Id="OverallProgressPackageText">Initializing...</String>
<String Id="ExecuteProgressText">Initializing...</String>
<String Id="OverallProgressText">Initializing...</String>
<String Id="ExecuteProgressActionDataText"></String>
<String Id="ProgressCancelButton">&amp;Cancel</String>
<String Id="ModifyHeader">[WixBundleName] Maintenance</String>
<String Id="ModifyInfo">The setup wizard allows you to repair or remove the [WixBundleName] on your computer. If you have a previous [WixBundleName] application currently running, it is recommended to close it.&#13;&#13;&#10;Click Repair if you want to repair [WixBundleName], Uninstall to remove it or click Cancel to close this maintenance wizard.</String>
<String Id="ModifyRepairButton">&amp;Repair</String>
<String Id="ModifyUninstallButton">&amp;Uninstall</String>
<String Id="ModifyCloseButton">&amp;Close</String>
<String Id="SuccessHeader">Setup Successful</String>
<String Id="SuccessHeaderRepair">Repair Successful</String>
<String Id="SuccessHeaderUninstall">Uninstall Successful</String>
<String Id="SuccessInfo">Setup has finished installing [WixBundleName] on your computer.&#13;&#10;&#13;&#10;Open a commandprompt window and type "meteor" to start.</String>
<String Id="SuccessErrorInfoText">Following non critical errors occured:</String>
<String Id="SuccessInfoRepair">Setup has finished repairing [WixBundleName] installed on your computer. The application may be launched by selecting the installed icons.</String>
<String Id="SuccessInfoUninstall">[WixBundleName] was successfully removed from your computer.</String>
<String Id="SuccessLaunchButton">&amp;Launch</String>
<String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
<String Id="SuccessRestartButton">&amp;Restart</String>
<String Id="SuccessCloseButton">&amp;Close</String>
<String Id="FailureHeader">Setup Failed</String>
<String Id="FailureHeaderRepair">Repair Failed</String>
<String Id="FailureHeaderUninstall">Uninstall Failed</String>
<String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the &lt;a href="#"&gt;log file&lt;/a&gt;.</String>
<String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
<String Id="FailureRestartButton">&amp;Restart</String>
<String Id="FailureCloseButton">&amp;Close</String>
</WixLocalization>

View File

@@ -1,124 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010">
<Window Width="624" Height="388" FontId="0">#(loc.Caption)</Window>
<Font Id="0" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF" >Segoe UI</Font> <!-- Installer default font with white background-->
<Font Id="1" Height="-14" Weight="500" Foreground="000000" Background="FFFFFF" >Segoe UI</Font> <!-- Installer default font with white background-->
<Font Id="2" Height="-14" Weight="800" Foreground="333333" >Tahoma</Font> <!-- Page header big font -->
<Font Id="3" Height="-22" Weight="500" Foreground="252525" >Segoe UI</Font> <!-- Big light font to dispaly product name in welcome and finish pages -->
<Font Id="4" Height="-11" Weight="500" Foreground="000000" >Tahoma</Font>
<Font Id="5" Height="-10" Weight="500" Foreground="FFFFFF" >Segoe UI</Font>
<Font Id="6" Height="-12" Weight="500" Foreground="0000FF" Background="FFFFFF" >Segoe UI</Font> <!-- Installer default font with white background-->
<Font Id="7" Height="-12" Weight="500" Foreground="000000" >Segoe UI</Font> <!-- Same as installer default font but transparent -->
<Page Name="Help">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Text>
<Text X="24" Y="78" Width="-24" Height="-100" FontId="0" DisablePrefix="yes">#(loc.HelpText)</Text>
<Button Name="HelpCancelButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.HelpCloseButton)</Button>
</Page>
<Page Name="Install">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="84" Y="30" Width="450" Height="107" ImageFile="meteor-logo.png"/>
<!--<Text X="178" Y="20" Width="-24" Height="32" FontId="2" DisablePrefix="yes">#(loc.InstallHeader)</Text>-->
<Hypertext X="24" Y="-100" Width="-24" Height="14" TabStop="yes" FontId="4" HideWhenDisabled="yes">#(loc.InstallLicenseLinkText)</Hypertext> -->
<!--<Checkbox Name="EulaAcceptCheckbox" X="178" Y="202" Width="-24" Height="17" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>-->
<!--<Text X="178" Y="72" Width="-24" Height="56" FontId="0" DisablePrefix="yes">#(loc.InstallMessage)</Text>
<Hypertext Name="UpgradeHyperlink" X="178" Y="-16" Width="-24" Height="17" TabStop="yes" FontId="4" HideWhenDisabled="yes">#(loc.InstallUpgradeLinkText)</Hypertext>-->
<Text X="24" Y="-10" Width="100" Height="14" FontId="5" DisablePrefix="yes">#(loc.InstallVersion)</Text>
<Button Name="NextButton" X="200" Y="-142" Width="-200" Height="44" TabStop="yes" FontId="3">#(loc.InstallMeteor)</Button>
</Page>
<Page Name="InstallDir">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">#(loc.InstallDirHeader)</Text>
<Text X="24" Y="78" Width="-24" Height="32" FontId="1" DisablePrefix="yes">#(loc.InstallDirMessage)</Text>
<Text X="64" Y="130" Width="-24" Height="17" FontId="0">#(loc.InstallScopeLabel)</Text>
<Button Name="PerMachineInstall" X="120" Y="150" Width="-24" Height="17" TabStop="yes" FontId="0" HideWhenDisabled="no" HexStyle="0x0000009">#(loc.PerMachineInstallRButton)</Button>
<Button Name="PerUserInstall" X="120" Y="170" Width="-24" Height="17" TabStop="yes" FontId="0" HideWhenDisabled="no" HexStyle="0x0000009">#(loc.PerUserInstallRButton)</Button>
<Text X="64" Y="218" Width="92" Height="17" FontId="0">#(loc.InstallDirPathLabel)</Text>
<Editbox Name="InstallFolderEditbox" X="164" Y="216" Width="-144" Height="21" TabStop="yes" FontId="0" FileSystemAutoComplete="yes" HideWhenDisabled="no" />
<Button Name="BrowseButton" X="-64" Y="215" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="no">#(loc.OptionsBrowseButton)</Button>
<Button Name="BackButton" X="-256" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.BackButton)</Button>
<Button Name="NextButton" X="-140" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.NextButton)</Button>
<Button Name="CloseButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>
<Page Name="SvcOptions">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">#(loc.RegistrationHeader)</Text>
<Text X="24" Y="78" Width="-24" Height="24" FontId="1" DisablePrefix="yes">#(loc.RegistrationInfo)</Text>
<Button Name="CreateRButton" X="48" Y="105" Width="-24" Height="17" TabStop="yes" FontId="0" HideWhenDisabled="no" HexStyle="0x0000009">#(loc.CreateRButton)</Button>
<Button Name="SignInRButton" X="48" Y="125" Width="-24" Height="17" TabStop="yes" FontId="0" HideWhenDisabled="no" HexStyle="0x0000009">#(loc.SignInRButton)</Button>
<Text Name="RegisterEmailLabel" X="92" Y="154" Width="120" Height="17" FontId="0">#(loc.RegisterEmail):</Text>
<Text Name="RegisterUserLabel" X="92" Y="182" Width="120" Height="17" FontId="0">#(loc.RegisterUser):</Text>
<Text Name="RegisterPassLabel" X="92" Y="210" Width="120" Height="17" FontId="0">#(loc.RegisterPass):</Text>
<Editbox Name="RegisterEmail" X="220" Y="152" Width="180" Height="21" TabStop="yes" FontId="0">[RegisterEmail]</Editbox>
<Editbox Name="RegisterUser" X="220" Y="180" Width="180" Height="21" TabStop="yes" FontId="0">[RegisterUser]</Editbox>
<Editbox Name="RegisterPass" X="220" Y="208" Width="180" Height="21" TabStop="yes" FontId="0" HexStyle="0x20">[RegisterPass]</Editbox>
<Checkbox Name="SkipRegistration" X="56" Y="-98" Width="-56" Height="21" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SkipRegistration)</Checkbox>
<Button Name="BackButton" X="-256" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.BackButton)</Button>
<Button Name="InstallButton" X="-140" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
<Button Name="CloseButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>
<Page Name="Progress">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text Name="ProgressHeader" X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">[varProgressHeader]</Text>
<Text Name="ProgressInfo" X="24" Y="78" Width="-24" Height="36" FontId="1" DisablePrefix="yes">[varProgressInfo]</Text>
<Text Name="OverallProgressPackageText" X="24" Y="161" Width="-24" Height="17" FontId="0" DisablePrefix="yes">#(loc.ExecuteProgressText)</Text>
<Progressbar Name="OverallCalculatedProgressbar" X="24" Y="183" Width="-24" Height="17" />
<Text Name="ExecuteProgressActionDataText" X="98" Y="205" Width="-24" Height="52" FontId="0" DisablePrefix="yes">#(loc.ExecuteProgressActionDataText)</Text>
<Button Name="ProgressCancelButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.ProgressCancelButton)</Button>
</Page>
<Page Name="Modify">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Text>
<Text X="24" Y="78" Width="-24" Height="140" FontId="1" DisablePrefix="yes">#(loc.ModifyInfo)</Text>
<Button Name="RepairButton" X="-256" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
<Button Name="UninstallButton" X="-140" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
<Button Name="ModifyCancelButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.ModifyCloseButton)</Button>
</Page>
<Page Name="Success">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text Name="SuccessHeader" X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">[varSuccessHeader]</Text>
<Text Name="SuccessInfo" X="24" Y="78" Width="-24" Height="72" FontId="1" TabStop="yes" HideWhenDisabled="yes">[varSuccessInfo]</Text>
<Text Name="SuccessErrorInfoText" X="24" Y="160" Width="-24" Height="17" FontId="0" TabStop="yes" HideWhenDisabled="yes" >[varSuccessErrorInfoText]</Text>
<Text Name="SuccessErrorMessageText" X="48" Y="180" Width="-24" Height="64" FontId="6" TabStop="yes" HideWhenDisabled="yes" >[varSuccessErrorMessageText]</Text>
<Text Name="SuccessRestartText" X="24" Y="-90" Width="-24" Height="34" FontId="7" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessRestartText)</Text>
<Text X="24" Y="-10" Width="100" Height="14" FontId="5" DisablePrefix="yes">#(loc.InstallVersion)</Text>
<Button Name="LaunchButton" X="-256" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessLaunchButton)</Button>
<Button Name="SuccessRestartButton" X="-140" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessRestartButton)</Button>
<Button Name="SuccessCancelButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.SuccessCloseButton)</Button>
</Page>
<Page Name="Failure">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text Name="FailureHeader" X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">[varFailureHeader]</Text>
<Hypertext Name="FailureLogFileLink" X="24" Y="78" Width="-24" Height="48" FontId="1" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext>
<Hypertext Name="FailureMessageText" X="24" Y="130" Width="-24" Height="48" FontId="0" TabStop="yes" HideWhenDisabled="yes"/>
<Text X="24" Y="-10" Width="100" Height="14" FontId="5" DisablePrefix="yes">#(loc.InstallVersion)</Text>
<Text Name="FailureRestartText" X="24" Y="-100" Width="-24" Height="34" FontId="0" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text>
<Button Name="FailureRestartButton" X="-140" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button>
<Button Name="FailureCloseButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button>
</Page>
<?xml version="1.0" encoding="utf-8"?>
<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010">
<Window Width="624" Height="388" FontId="0">#(loc.Caption)</Window>
<Font Id="0" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF" >Segoe UI</Font> <!-- Installer default font with white background-->
<Font Id="1" Height="-14" Weight="500" Foreground="000000" Background="FFFFFF" >Segoe UI</Font> <!-- Installer default font with white background-->
<Font Id="2" Height="-14" Weight="800" Foreground="333333" >Tahoma</Font> <!-- Page header big font -->
<Font Id="3" Height="-22" Weight="500" Foreground="252525" >Segoe UI</Font> <!-- Big light font to dispaly product name in welcome and finish pages -->
<Font Id="4" Height="-11" Weight="500" Foreground="000000" >Tahoma</Font>
<Font Id="5" Height="-10" Weight="500" Foreground="FFFFFF" >Segoe UI</Font>
<Font Id="6" Height="-12" Weight="500" Foreground="0000FF" Background="FFFFFF" >Segoe UI</Font> <!-- Installer default font with white background-->
<Font Id="7" Height="-12" Weight="500" Foreground="000000" >Segoe UI</Font> <!-- Same as installer default font but transparent -->
<Page Name="Help">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Text>
<Text X="24" Y="78" Width="-24" Height="-100" FontId="0" DisablePrefix="yes">#(loc.HelpText)</Text>
<Button Name="HelpCancelButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.HelpCloseButton)</Button>
</Page>
<Page Name="Install">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="84" Y="30" Width="450" Height="107" ImageFile="meteor-logo.png"/>
<!--<Text X="178" Y="20" Width="-24" Height="32" FontId="2" DisablePrefix="yes">#(loc.InstallHeader)</Text>-->
<Hypertext X="24" Y="-100" Width="-24" Height="14" TabStop="yes" FontId="4" HideWhenDisabled="yes">#(loc.InstallLicenseLinkText)</Hypertext> -->
<!--<Checkbox Name="EulaAcceptCheckbox" X="178" Y="202" Width="-24" Height="17" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>-->
<!--<Text X="178" Y="72" Width="-24" Height="56" FontId="0" DisablePrefix="yes">#(loc.InstallMessage)</Text>
<Hypertext Name="UpgradeHyperlink" X="178" Y="-16" Width="-24" Height="17" TabStop="yes" FontId="4" HideWhenDisabled="yes">#(loc.InstallUpgradeLinkText)</Hypertext>-->
<Text X="24" Y="-10" Width="100" Height="14" FontId="5" DisablePrefix="yes">#(loc.InstallVersion)</Text>
<Button Name="NextButton" X="200" Y="-142" Width="-200" Height="44" TabStop="yes" FontId="3">#(loc.InstallMeteor)</Button>
</Page>
<Page Name="InstallDir">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">#(loc.InstallDirHeader)</Text>
<Text X="24" Y="78" Width="-24" Height="32" FontId="1" DisablePrefix="yes">#(loc.InstallDirMessage)</Text>
<Text X="64" Y="130" Width="-24" Height="17" FontId="0">#(loc.InstallScopeLabel)</Text>
<Button Name="PerMachineInstall" X="120" Y="150" Width="-24" Height="17" TabStop="yes" FontId="0" HideWhenDisabled="no" HexStyle="0x0000009">#(loc.PerMachineInstallRButton)</Button>
<Button Name="PerUserInstall" X="120" Y="170" Width="-24" Height="17" TabStop="yes" FontId="0" HideWhenDisabled="no" HexStyle="0x0000009">#(loc.PerUserInstallRButton)</Button>
<Text X="64" Y="218" Width="92" Height="17" FontId="0">#(loc.InstallDirPathLabel)</Text>
<Editbox Name="InstallFolderEditbox" X="164" Y="216" Width="-144" Height="21" TabStop="yes" FontId="0" FileSystemAutoComplete="yes" HideWhenDisabled="no" />
<Button Name="BrowseButton" X="-64" Y="215" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="no">#(loc.OptionsBrowseButton)</Button>
<Button Name="BackButton" X="-256" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.BackButton)</Button>
<Button Name="NextButton" X="-140" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.NextButton)</Button>
<Button Name="CloseButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>
<Page Name="SvcOptions">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">#(loc.RegistrationHeader)</Text>
<Text X="24" Y="78" Width="-24" Height="24" FontId="1" DisablePrefix="yes">#(loc.RegistrationInfo)</Text>
<Button Name="CreateRButton" X="48" Y="105" Width="-24" Height="17" TabStop="yes" FontId="0" HideWhenDisabled="no" HexStyle="0x0000009">#(loc.CreateRButton)</Button>
<Button Name="SignInRButton" X="48" Y="125" Width="-24" Height="17" TabStop="yes" FontId="0" HideWhenDisabled="no" HexStyle="0x0000009">#(loc.SignInRButton)</Button>
<Text Name="RegisterEmailLabel" X="92" Y="154" Width="120" Height="17" FontId="0">#(loc.RegisterEmail):</Text>
<Text Name="RegisterUserLabel" X="92" Y="182" Width="120" Height="17" FontId="0">#(loc.RegisterUser):</Text>
<Text Name="RegisterPassLabel" X="92" Y="210" Width="120" Height="17" FontId="0">#(loc.RegisterPass):</Text>
<Editbox Name="RegisterEmail" X="220" Y="152" Width="180" Height="21" TabStop="yes" FontId="0">[RegisterEmail]</Editbox>
<Editbox Name="RegisterUser" X="220" Y="180" Width="180" Height="21" TabStop="yes" FontId="0">[RegisterUser]</Editbox>
<Editbox Name="RegisterPass" X="220" Y="208" Width="180" Height="21" TabStop="yes" FontId="0" HexStyle="0x20">[RegisterPass]</Editbox>
<Checkbox Name="SkipRegistration" X="56" Y="-98" Width="-56" Height="21" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SkipRegistration)</Checkbox>
<Button Name="BackButton" X="-256" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.BackButton)</Button>
<Button Name="InstallButton" X="-140" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
<Button Name="CloseButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>
<Page Name="Progress">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text Name="ProgressHeader" X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">[varProgressHeader]</Text>
<Text Name="ProgressInfo" X="24" Y="78" Width="-24" Height="36" FontId="1" DisablePrefix="yes">[varProgressInfo]</Text>
<Text Name="OverallProgressPackageText" X="24" Y="161" Width="-24" Height="17" FontId="0" DisablePrefix="yes">#(loc.ExecuteProgressText)</Text>
<Progressbar Name="OverallCalculatedProgressbar" X="24" Y="183" Width="-24" Height="17" />
<Text Name="ExecuteProgressActionDataText" X="98" Y="205" Width="-24" Height="52" FontId="0" DisablePrefix="yes">#(loc.ExecuteProgressActionDataText)</Text>
<Button Name="ProgressCancelButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.ProgressCancelButton)</Button>
</Page>
<Page Name="Modify">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Text>
<Text X="24" Y="78" Width="-24" Height="140" FontId="1" DisablePrefix="yes">#(loc.ModifyInfo)</Text>
<Button Name="RepairButton" X="-256" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
<Button Name="UninstallButton" X="-140" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
<Button Name="ModifyCancelButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.ModifyCloseButton)</Button>
</Page>
<Page Name="Success">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text Name="SuccessHeader" X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">[varSuccessHeader]</Text>
<Text Name="SuccessInfo" X="24" Y="78" Width="-24" Height="72" FontId="1" TabStop="yes" HideWhenDisabled="yes">[varSuccessInfo]</Text>
<Text Name="SuccessErrorInfoText" X="24" Y="160" Width="-24" Height="17" FontId="0" TabStop="yes" HideWhenDisabled="yes" >[varSuccessErrorInfoText]</Text>
<Text Name="SuccessErrorMessageText" X="48" Y="180" Width="-24" Height="64" FontId="6" TabStop="yes" HideWhenDisabled="yes" >[varSuccessErrorMessageText]</Text>
<Text Name="SuccessRestartText" X="24" Y="-90" Width="-24" Height="34" FontId="7" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessRestartText)</Text>
<Text X="24" Y="-10" Width="100" Height="14" FontId="5" DisablePrefix="yes">#(loc.InstallVersion)</Text>
<Button Name="LaunchButton" X="-256" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessLaunchButton)</Button>
<Button Name="SuccessRestartButton" X="-140" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessRestartButton)</Button>
<Button Name="SuccessCancelButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.SuccessCloseButton)</Button>
</Page>
<Page Name="Failure">
<Image X="0" Y="0" Width="618" Height="363" ImageFile="Background.png"/>
<Image X="0" Y="0" Width="618" Height="56" ImageFile="TopHeader.png"/>
<Text Name="FailureHeader" X="24" Y="20" Width="-220" Height="24" FontId="2" DisablePrefix="yes">[varFailureHeader]</Text>
<Hypertext Name="FailureLogFileLink" X="24" Y="78" Width="-24" Height="48" FontId="1" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext>
<Hypertext Name="FailureMessageText" X="24" Y="130" Width="-24" Height="48" FontId="0" TabStop="yes" HideWhenDisabled="yes"/>
<Text X="24" Y="-10" Width="100" Height="14" FontId="5" DisablePrefix="yes">#(loc.InstallVersion)</Text>
<Text Name="FailureRestartText" X="24" Y="-100" Width="-24" Height="34" FontId="0" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text>
<Button Name="FailureRestartButton" X="-140" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button>
<Button Name="FailureCloseButton" X="-24" Y="-10" Width="110" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button>
</Page>
</Theme>

View File

@@ -1,71 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>3.8</ProductVersion>
<ProjectGuid>7b569f5b-5d73-4e7b-be41-041a2f22a521</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputType>Bundle</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<Name>SetupPackage</Name>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\$(Configuration)\$(Platform)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<SuppressPdbOutput>True</SuppressPdbOutput>
<SuppressAllWarnings>True</SuppressAllWarnings>
<Pedantic>False</Pedantic>
<OutputName>Setup_Meteor</OutputName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<OutputPath>bin\$(Configuration)\$(Platform)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<SuppressPdbOutput>True</SuppressPdbOutput>
<SuppressAllWarnings>True</SuppressAllWarnings>
<Pedantic>False</Pedantic>
<OutputName>Setup_Meteor</OutputName>
</PropertyGroup>
<ItemGroup>
<Compile Include="Meteor_Bundle.wxs" />
</ItemGroup>
<ItemGroup>
<WixExtension Include="WixNetFxExtension">
<HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
<Name>WixNetFxExtension</Name>
</WixExtension>
<WixExtension Include="WixBalExtensionExt">
<HintPath>..\WiXBalExtension\build\WixBalExtensionExt.dll</HintPath>
<Name>WixBalExtensionExt</Name>
</WixExtension>
<WixExtension Include="WixUtilExtension">
<HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
<Name>WixUtilExtension</Name>
</WixExtension>
</ItemGroup>
<ItemGroup>
<Content Include="Configuration.wxi" />
<Content Include="Resources\Background.png" />
<Content Include="Resources\Theme_Meteor.xml" />
<Content Include="Resources\TopHeader.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\Theme_Meteor.wxl" />
</ItemGroup>
<ItemGroup>
<Folder Include="Resources" />
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<PropertyGroup>
<PostBuildEvent>copy "$(ProjectDir)$(OutDir)$(TargetFileName)" "$(ProjectDir)..\Release\" /Y</PostBuildEvent>
</PropertyGroup>
<!--
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>3.8</ProductVersion>
<ProjectGuid>7b569f5b-5d73-4e7b-be41-041a2f22a521</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputType>Bundle</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<Name>SetupPackage</Name>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\$(Configuration)\$(Platform)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<SuppressPdbOutput>True</SuppressPdbOutput>
<SuppressAllWarnings>True</SuppressAllWarnings>
<Pedantic>False</Pedantic>
<OutputName>Setup_Meteor</OutputName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<OutputPath>bin\$(Configuration)\$(Platform)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<SuppressPdbOutput>True</SuppressPdbOutput>
<SuppressAllWarnings>True</SuppressAllWarnings>
<Pedantic>False</Pedantic>
<OutputName>Setup_Meteor</OutputName>
</PropertyGroup>
<ItemGroup>
<Compile Include="Meteor_Bundle.wxs" />
</ItemGroup>
<ItemGroup>
<WixExtension Include="WixNetFxExtension">
<HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
<Name>WixNetFxExtension</Name>
</WixExtension>
<WixExtension Include="WixBalExtensionExt">
<HintPath>..\WiXBalExtension\build\WixBalExtensionExt.dll</HintPath>
<Name>WixBalExtensionExt</Name>
</WixExtension>
<WixExtension Include="WixUtilExtension">
<HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
<Name>WixUtilExtension</Name>
</WixExtension>
</ItemGroup>
<ItemGroup>
<Content Include="Configuration.wxi" />
<Content Include="Resources\Background.png" />
<Content Include="Resources\Theme_Meteor.xml" />
<Content Include="Resources\TopHeader.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\Theme_Meteor.wxl" />
</ItemGroup>
<ItemGroup>
<Folder Include="Resources" />
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<PropertyGroup>
<PostBuildEvent>copy "$(ProjectDir)$(OutDir)$(TargetFileName)" "$(ProjectDir)..\Release\" /Y</PostBuildEvent>
</PropertyGroup>
<!--
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -10,6 +10,8 @@ IF "%1"=="clean" GOTO :CLEAN
:BUILD
if not exist Release md Release
echo Building WiXBalExtension...
pushd WiXBalExtension
Call Build
@@ -21,7 +23,7 @@ echo Building custom action collection 32-bit library (WiXHelper project)
%MSBUILD% WiXHelper\WiXHelper.vcxproj /t:Rebuild /p:Configuration="Release" /p:Platform=Win32 /p:DefineConstants="TRACE"%OUTLOG%
if %errorlevel% neq 0 (
echo Build failed
pause
rem pause
goto :EOF
)
@@ -42,7 +44,7 @@ echo Building Meteor installer package...
%MSBUILD% MeteorSetup.sln /t:Rebuild /p:Configuration="Release" /p:Platform="x86" /p:DefineConstants="TRACE"%OUTLOG%
if %errorlevel% neq 0 (
echo Build failed
pause
rem pause
goto :EOF
)