mirror of
https://github.com/Ryujinx/Opentk.git
synced 2024-12-25 18:55:35 +00:00
115 lines
4.8 KiB
C#
115 lines
4.8 KiB
C#
#region License
|
|
//
|
|
// The Open Toolkit Library License
|
|
//
|
|
// Copyright (c) 2006 - 2010 the Open Toolkit library.
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
// in the Software without restriction, including without limitation the rights to
|
|
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
// the Software, and to permit persons to whom the Software is furnished to do
|
|
// so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in all
|
|
// copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
// OTHER DEALINGS IN THE SOFTWARE.
|
|
//
|
|
#endregion
|
|
|
|
using System;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
|
|
namespace OpenTK.Build
|
|
{
|
|
partial class Project
|
|
{
|
|
static readonly string NsisPath = Path.Combine("Installers", "Nsis");
|
|
|
|
// Constructs NSIS installer.
|
|
// Note 1: for this to work correctly, we need to construct VS projects,
|
|
// compile them and build documentation first. This is not handled here.
|
|
// Note 2: if version numbers are not specified, we ask the user explicitly.
|
|
static void BuildNsis(string pversion, string prevision, string pextra)
|
|
{
|
|
if (!CheckNsisInstallation())
|
|
return;
|
|
|
|
Console.WriteLine("IMPORTANT: for a correct NSIS installer, you need to create VS projects, compile them and build documentation first. Use \"Build.exe all\" to do all this automatically.");
|
|
|
|
if (String.IsNullOrEmpty(pversion) || String.IsNullOrEmpty(prevision) ||
|
|
String.IsNullOrEmpty(pextra))
|
|
RequestVersionInfo(out pversion, out prevision, out pextra);
|
|
|
|
string source_nsi = Path.Combine(NsisPath, "opentk.nsi");
|
|
string actual_nsi = Path.Combine(NsisPath, "opentk-actual.nsi");
|
|
File.WriteAllText(actual_nsi, File.ReadAllText(source_nsi)
|
|
.Replace("{{version}}", pversion)
|
|
.Replace("{{revision}}", prevision)
|
|
.Replace("{{extra}}", pextra));
|
|
|
|
ExecuteCommand("makensis", NsisPath, Path.GetFullPath(actual_nsi));
|
|
File.Delete(actual_nsi);
|
|
}
|
|
|
|
static bool CheckNsisInstallation()
|
|
{
|
|
Console.WriteLine("Checking for NSIS installation.");
|
|
try
|
|
{
|
|
ExecuteCommand("makensis", null, null);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine("Could not detect \"makensis\" command.");
|
|
Console.WriteLine("Please install NSIS and ensure its installation folder exists in your path.");
|
|
Console.WriteLine("Windows users: download from http://nsis.sourceforge.net");
|
|
Console.WriteLine("Ubuntu/Debian users: type \"sudo apt-get install nsis\"");
|
|
Console.WriteLine();
|
|
Console.WriteLine("Exact error message:");
|
|
Console.WriteLine(e.ToString());
|
|
return false;
|
|
}
|
|
Console.WriteLine("Working fine.");
|
|
return true;
|
|
}
|
|
|
|
static void RequestVersionInfo(out string pversion, out string prevision, out string pextra)
|
|
{
|
|
Console.WriteLine("Please specify the following information (press enter for defaults)");
|
|
Console.Write("Product version ({0}): ", ProductVersion);
|
|
pversion = Console.ReadLine();
|
|
Console.Write("Product revision ({0}): ", ProductVersionRevision);
|
|
prevision = Console.ReadLine();
|
|
Console.Write("Product version extra ({0}): ", ProductVersionExtra);
|
|
pextra = Console.ReadLine();
|
|
|
|
if (String.IsNullOrEmpty(pversion))
|
|
pversion = ProductVersion;
|
|
if (String.IsNullOrEmpty(prevision))
|
|
prevision = ProductVersionRevision;
|
|
if (String.IsNullOrEmpty(pextra))
|
|
pextra = ProductVersionExtra;
|
|
}
|
|
|
|
static void CleanNsisFiles()
|
|
{
|
|
DeleteFiles(Path.Combine("Installers", "Nsis"), "opentk-actual.nsi");
|
|
}
|
|
|
|
static void DistCleanNsisFiles()
|
|
{
|
|
CleanNsisFiles();
|
|
DeleteFiles(Path.Combine("Installers", "Nsis"), "*.exe");
|
|
}
|
|
}
|
|
} |