aboutsummaryrefslogtreecommitdiffstats
path: root/Software
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2019-02-25 16:03:14 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2019-02-25 16:03:14 +0200
commit08d9858ecd0d4adb0c9c6076d7d2b1216e8f64c3 (patch)
treeb1f11d302b4db5346213b7c93c78d4b9500d8398 /Software
parent602f49b2b0eb1f032f3dead60e8bf499ceca0a7b (diff)
downloadTango-08d9858ecd0d4adb0c9c6076d7d2b1216e8f64c3.tar.gz
Tango-08d9858ecd0d4adb0c9c6076d7d2b1216e8f64c3.zip
Completed advanced installer lib + unit test.
Diffstat (limited to 'Software')
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txtbin52 -> 52 bytes
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/part4/PPC Installer v1.0.31.cab (renamed from Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/part2/PPC Installer v1.0.31.cab)bin42165720 -> 42202264 bytes
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/part4/output-info.ini (renamed from Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/part2/output-info.ini)bin93942 -> 93946 bytes
-rw-r--r--Software/Visual_Studio/Build/Shortcuts/Machine Emulator.lnkbin1471 -> 1445 bytes
-rw-r--r--Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnkbin1532 -> 1516 bytes
-rw-r--r--Software/Visual_Studio/Build/Shortcuts/Proto Compiler GUI.lnkbin1464 -> 1444 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.WatchDog/MainWindowVM.cs15
-rw-r--r--Software/Visual_Studio/Tango.AdvancedInstaller/InstallerBuilder.cs77
-rw-r--r--Software/Visual_Studio/Tango.AdvancedInstaller/PackageType.cs14
-rw-r--r--Software/Visual_Studio/Tango.AdvancedInstaller/ProjectProperty.cs216
-rw-r--r--Software/Visual_Studio/Tango.AdvancedInstaller/Tango.AdvancedInstaller.csproj2
-rw-r--r--Software/Visual_Studio/Tango.Core/Components/CmdCommand.cs38
-rw-r--r--Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/AdvancedInstaller_TST.cs43
-rw-r--r--Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject-cache/cacheIndex.txtbin0 -> 52 bytes
-rw-r--r--Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject-cache/part1/disk1.cabbin0 -> 147 bytes
-rw-r--r--Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject-cache/part1/output-info.inibin0 -> 1470 bytes
-rw-r--r--Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject.aip8
-rw-r--r--Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/Setup Files/DemoProject.msibin0 -> 518656 bytes
-rw-r--r--Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj4
20 files changed, 367 insertions, 52 deletions
diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt
index a603ff06b..6d87e9201 100644
--- a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt
+++ b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt
Binary files differ
diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/part2/PPC Installer v1.0.31.cab b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/part4/PPC Installer v1.0.31.cab
index d7d54343c..472742398 100644
--- a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/part2/PPC Installer v1.0.31.cab
+++ b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/part4/PPC Installer v1.0.31.cab
Binary files differ
diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/part2/output-info.ini b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/part4/output-info.ini
index 474dea2e2..16f65ef5a 100644
--- a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/part2/output-info.ini
+++ b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/part4/output-info.ini
Binary files differ
diff --git a/Software/Visual_Studio/Build/Shortcuts/Machine Emulator.lnk b/Software/Visual_Studio/Build/Shortcuts/Machine Emulator.lnk
index 2adce19ff..9c6368954 100644
--- a/Software/Visual_Studio/Build/Shortcuts/Machine Emulator.lnk
+++ b/Software/Visual_Studio/Build/Shortcuts/Machine Emulator.lnk
Binary files differ
diff --git a/Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnk b/Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnk
index 2966f595d..87ec99d02 100644
--- a/Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnk
+++ b/Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnk
Binary files differ
diff --git a/Software/Visual_Studio/Build/Shortcuts/Proto Compiler GUI.lnk b/Software/Visual_Studio/Build/Shortcuts/Proto Compiler GUI.lnk
index a6654b9a4..74475c931 100644
--- a/Software/Visual_Studio/Build/Shortcuts/Proto Compiler GUI.lnk
+++ b/Software/Visual_Studio/Build/Shortcuts/Proto Compiler GUI.lnk
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest
index d72e75011..efc5f8179 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest
@@ -16,7 +16,7 @@
Remove this element if your application requires this virtualization for backwards
compatibility.
-->
- <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
+ <!--<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />-->
</requestedPrivileges>
</security>
</trustInfo>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.WatchDog/MainWindowVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.WatchDog/MainWindowVM.cs
index 466c178a2..0693b0931 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.WatchDog/MainWindowVM.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.WatchDog/MainWindowVM.cs
@@ -107,10 +107,19 @@ namespace Tango.PPC.WatchDog
try
{
- Process.Start(Path.Combine(AssemblyHelper.GetCurrentAssemblyFolder(), tango_process_name + ".exe"));
+ var process = Process.Start(Path.Combine(AssemblyHelper.GetCurrentAssemblyFolder(), tango_process_name + ".exe"));
LogManager.Log("PPC application started.");
- Thread.Sleep(5000);
- _watchdog.Start();
+ LogManager.Log("Waiting for the application to enter an idle state....");
+ if (process.WaitForInputIdle((int)TimeSpan.FromMinutes(1).TotalMilliseconds))
+ {
+ LogManager.Log("Application is in idle state. waiting another 10 seconds...");
+ Thread.Sleep(TimeSpan.FromSeconds(10));
+ _watchdog.Start();
+ }
+ else
+ {
+ LogManager.Log("The PPC application did not enter to an idle state within 1 minute. The Watchdog will not start again!");
+ }
}
catch (Exception ex)
{
diff --git a/Software/Visual_Studio/Tango.AdvancedInstaller/InstallerBuilder.cs b/Software/Visual_Studio/Tango.AdvancedInstaller/InstallerBuilder.cs
index c9c5f73c3..ed52aeb05 100644
--- a/Software/Visual_Studio/Tango.AdvancedInstaller/InstallerBuilder.cs
+++ b/Software/Visual_Studio/Tango.AdvancedInstaller/InstallerBuilder.cs
@@ -11,34 +11,91 @@ namespace Tango.AdvancedInstaller
{
public String AdvancedInstallerPath { get; set; }
- public String ProjectFile { get; set; }
+ public String ProjectFile { get; private set; }
- public String OutputFolder { get; set; }
+ private InstallerBuilder()
+ {
+ AdvancedInstallerPath = @"C:\Program Files (x86)\Caphyon\Advanced Installer 15.6\bin\x86\AdvancedInstaller.com";
+ }
- public String ProductVersion { get; set; }
+ public InstallerBuilder(String projectFile) : this()
+ {
+ ProjectFile = projectFile;
+ }
- public String ProductName { get; set; }
+ public InstallerBuilder(String advancedInstallerPath, String projectFile) : this(projectFile)
+ {
+ AdvancedInstallerPath = advancedInstallerPath;
+ }
- public PackageType PackageType { get; set; }
+ public Task<String> GetProperty(ProjectProperty property)
+ {
+ return Task.Factory.StartNew<String>(() =>
+ {
+ CmdCommand command = new CmdCommand(AdvancedInstallerPath, $"/edit \"{ProjectFile}\" /GetProperty {property.ToString()}");
+ var result = command.Run().Result;
+ return result.StandardOutput.Replace("\r", "").Replace("\n", "");
+ });
+ }
- public InstallerBuilder()
+ public Task SetProperty(ProjectProperty property, String value)
{
- AdvancedInstallerPath = @"C:\Program Files (x86)\Caphyon\Advanced Installer 15.6\bin\x86\advinst.exe";
+ return Task.Factory.StartNew(() =>
+ {
+ CmdCommand command = new CmdCommand(AdvancedInstallerPath, $"/edit \"{ProjectFile}\" /SetProperty {property.ToString()}=\"{value}\"");
+ command.Run().Wait();
+
+ String propValue = GetProperty(property).Result;
+
+ if (propValue != value)
+ {
+ throw new ArgumentException("The property set command had succeeded but the property value validation has failed.");
+ }
+ });
}
- public Task Build()
+ public Task Build(String productVersion, String outputFile)
{
return Task.Factory.StartNew(() =>
{
- CmdCommand command = new CmdCommand(AdvancedInstallerPath, $"/edit \"{ProjectFile}\" /SetVersion {ProductVersion}");
+ CmdCommand command = new CmdCommand(AdvancedInstallerPath, $"/edit \"{ProjectFile}\" /SetVersion {productVersion}");
command.Run().Wait();
- command = new CmdCommand(AdvancedInstallerPath, $"/edit \"{ProjectFile}\" /SetPackageName \"{OutputFolder}\\{ProductName}_v{ProductVersion}.{PackageType.ToString().ToLower()}\" -buildname DefaultBuild");
+ command = new CmdCommand(AdvancedInstallerPath, $"/edit \"{ProjectFile}\" /SetPackageName \"{outputFile}\" -buildname DefaultBuild");
command.Run().Wait();
command = new CmdCommand(AdvancedInstallerPath, $"/rebuild \"{ProjectFile}\"");
+ command.Timeout = TimeSpan.FromMinutes(2);
+ command.Run().Wait();
+ });
+ }
+
+ public Task Uninstall()
+ {
+ return Task.Factory.StartNew(() =>
+ {
+ String productName = GetProperty(ProjectProperty.ProductName).Result;
+ CmdCommand command = new CmdCommand("wmic", $"product where name=\"{productName}\" call uninstall /nointeractive");
+ command.ExitStrategy = CmdCommand.ExitStrategies.StandardOutput;
command.Run().Wait();
});
}
+
+ public Task<bool> IsInstalled()
+ {
+ return Task.Factory.StartNew<bool>(() =>
+ {
+ String productName = GetProperty(ProjectProperty.ProductName).Result;
+ CmdCommand command = new CmdCommand("wmic", $"product get name");
+ command.ExitStrategy = CmdCommand.ExitStrategies.StandardOutput;
+ var result = command.Run().Result;
+
+ List<String> list = result.StandardOutput.Split(new[] { '\r', '\n' }).ToList();
+
+ bool found = list.Any(x => x.Trim() == productName);
+
+ return found;
+ });
+ }
}
}
diff --git a/Software/Visual_Studio/Tango.AdvancedInstaller/PackageType.cs b/Software/Visual_Studio/Tango.AdvancedInstaller/PackageType.cs
deleted file mode 100644
index 75120665c..000000000
--- a/Software/Visual_Studio/Tango.AdvancedInstaller/PackageType.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Tango.AdvancedInstaller
-{
- public enum PackageType
- {
- MSI,
- EXE,
- }
-}
diff --git a/Software/Visual_Studio/Tango.AdvancedInstaller/ProjectProperty.cs b/Software/Visual_Studio/Tango.AdvancedInstaller/ProjectProperty.cs
new file mode 100644
index 000000000..ea9112dd3
--- /dev/null
+++ b/Software/Visual_Studio/Tango.AdvancedInstaller/ProjectProperty.cs
@@ -0,0 +1,216 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.AdvancedInstaller
+{
+ public enum ProjectProperty
+ {
+ ACTION,
+ ADDDEFAULT,
+ ADDLOCAL,
+ ADDSOURCE,
+ AdminProperties,
+ AdminToolsFolder,
+ AdminUser,
+ ADVERTISE,
+ AFTERREBOOT,
+ ALLUSERS,
+ Alpha,
+ AppDataFolder,
+ ARPAUTHORIZEDCDFPREFIX,
+ ARPCOMMENTS,
+ ARPCONTACT,
+ ARPHELPLINK,
+ ARPHELPTELEPHONE,
+ ARPINSTALLLOCATION,
+ ARPNOMODIFY,
+ ARPNOREMOVE,
+ ARPNOREPAIR,
+ ARPPRODUCTICON,
+ ARPREADME,
+ ARPSIZE,
+ ARPSYSTEMCOMPONENT,
+ ARPURLINFOABOUT,
+ ARPURLUPDATEINFO,
+ AVAILABLEFREEREG,
+ BorderSide,
+ BorderTop,
+ CaptionHeight,
+ CCP_DRIVE,
+ ColorBits,
+ CommonAppDataFolder,
+ CommonFiles64Folder,
+ CommonFilesFolder,
+ COMPADDDEFAULT,
+ COMPADDLOCAL,
+ COMPADDSOURCE,
+ COMPANYNAME,
+ ComputerName,
+ CostingComplete,
+ Date,
+ DefaultUIFont,
+ DesktopFolder,
+ DISABLEADVTSHORTCUTS,
+ DISABLEMEDIA,
+ DISABLEROLLBACK,
+ DiskPrompt,
+ EnableUserControl,
+ EXECUTEACTION,
+ EXECUTEMODE,
+ FASTOEM,
+ FavoritesFolder,
+ FILEADDDEFAULT,
+ FILEADDLOCAL,
+ FILEADDSOURCE,
+ FontsFolder,
+ Installed,
+ INSTALLLEVEL,
+ Intel,
+ Intel64,
+ IsAdminPackage,
+ LeftUnit,
+ LIMITUI,
+ LocalAppDataFolder,
+ LOGACTION,
+ LogonUser,
+ Manufacturer,
+ MEDIAPACKAGEPATH,
+ MediaSourceDir,
+ MSIARPSETTINGSIDENTIFIER,
+ MSICHECKCRCS,
+ MSIDEPLOYMENTCOMPLIANT,
+ MSIDISABLEEEUI,
+ MSIDISABLELUAPATCHING,
+ MSIDISABLERMRESTART,
+ MSIENFORCEUPGRADECOMPONENTRULES,
+ MSIFASTINSTALL,
+ MsiHiddenProperties,
+ MSIINSTALLPERUSER,
+ MSIINSTANCEGUID,
+ MsiLogFileLocation,
+ MsiLogging,
+ MsiNetAssemblySupport,
+ MSINEWINSTANCE,
+ MSINODISABLEMEDIA,
+ MsiNTProductType,
+ MsiNTSuiteBackOffice,
+ MsiNTSuiteDataCenter,
+ MsiNTSuiteEnterprise,
+ MsiNTSuitePersonal,
+ MsiNTSuiteSmallBusiness,
+ MsiNTSuiteSmallBusinessRestricted,
+ MsiNTSuiteWebServer,
+ MsiPatchRemovalList,
+ MSIPATCHREMOVE,
+ MSIRESTARTMANAGERCONTROL,
+ MsiRestartManagerSessionKey,
+ MSIRMSHUTDOWN,
+ MsiRunningElevated,
+ MsiSystemRebootPending,
+ MsiTabletPC,
+ MsiUIHideCancel,
+ MsiUIProgressOnly,
+ MsiUISourceResOnly,
+ MSIUNINSTALLSUPERSEDEDCOMPONENTS,
+ MSIUSEREALADMINDETECTION,
+ MsiWin32AssemblySupport,
+ Msix64,
+ MyPicturesFolder,
+ NetHoodFolder,
+ NOCOMPANYNAME,
+ NOUSERNAME,
+ OLEAdvtSupport,
+ OriginalDatabase,
+ OutOfDiskSpace,
+ OutOfNoRbDiskSpace,
+ ParentOriginalDatabase,
+ ParentProductCode,
+ PATCH,
+ PATCHNEWPACKAGECODE,
+ PATCHNEWSUMMARYCOMMENTS,
+ PATCHNEWSUMMARYSUBJECT,
+ PersonalFolder,
+ PhysicalMemory,
+ PIDKEY,
+ PIDTemplate,
+ Preselected,
+ PRIMARYFOLDER,
+ PrimaryVolumePath,
+ PrimaryVolumeSpaceAvailable,
+ PrimaryVolumeSpaceRemaining,
+ PrimaryVolumeSpaceRequired,
+ PrintHoodFolder,
+ Privileged,
+ ProductCode,
+ ProductID,
+ ProductLanguage,
+ ProductName,
+ ProductState,
+ ProductVersion,
+ ProgramFiles64Folder,
+ ProgramFilesFolder,
+ ProgramMenuFolder,
+ PROMPTROLLBACKCOST,
+ REBOOT,
+ REBOOTPROMPT,
+ RecentFolder,
+ RedirectedDLLSupport,
+ REINSTALL,
+ REINSTALLMODE,
+ RemoteAdminTS,
+ REMOVE,
+ ReplacedInUseFiles,
+ RestrictedUserControl,
+ RESUME,
+ RollbackDisabled,
+ ROOTDRIVE,
+ ScreenX,
+ ScreenY,
+ SecureCustomProperties,
+ SendToFolder,
+ SEQUENCE,
+ ServicePackLevel,
+ ServicePackLevelMinor,
+ SharedWindows,
+ ShellAdvtSupport,
+ SHORTFILENAMES,
+ SourceDir,
+ SOURCELIST,
+ StartMenuFolder,
+ StartupFolder,
+ System16Folder,
+ System64Folder,
+ SystemFolder,
+ SystemLanguageID,
+ TARGETDIR,
+ TempFolder,
+ TemplateFolder,
+ TerminalServer,
+ TextHeight,
+ Time,
+ TRANSFORMS,
+ TRANSFORMSATSOURCE,
+ TRANSFORMSSECURE,
+ TTCSupport,
+ UILevel,
+ UpdateStarted,
+ UpgradeCode,
+ UPGRADINGPRODUCTCODE,
+ UserLanguageID,
+ USERNAME,
+ UserSID,
+ Version9X,
+ VersionDatabase,
+ VersionMsi,
+ VersionNT,
+ VersionNT64,
+ VirtualMemory,
+ WindowsBuild,
+ WindowsFolder,
+ WindowsVolume,
+
+ }
+}
diff --git a/Software/Visual_Studio/Tango.AdvancedInstaller/Tango.AdvancedInstaller.csproj b/Software/Visual_Studio/Tango.AdvancedInstaller/Tango.AdvancedInstaller.csproj
index 2062df763..766cf51c3 100644
--- a/Software/Visual_Studio/Tango.AdvancedInstaller/Tango.AdvancedInstaller.csproj
+++ b/Software/Visual_Studio/Tango.AdvancedInstaller/Tango.AdvancedInstaller.csproj
@@ -45,7 +45,7 @@
<Link>GlobalVersionInfo.cs</Link>
</Compile>
<Compile Include="InstallerBuilder.cs" />
- <Compile Include="PackageType.cs" />
+ <Compile Include="ProjectProperty.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ReturnCodes.cs" />
</ItemGroup>
diff --git a/Software/Visual_Studio/Tango.Core/Components/CmdCommand.cs b/Software/Visual_Studio/Tango.Core/Components/CmdCommand.cs
index ef8c913eb..bbd954fd4 100644
--- a/Software/Visual_Studio/Tango.Core/Components/CmdCommand.cs
+++ b/Software/Visual_Studio/Tango.Core/Components/CmdCommand.cs
@@ -17,6 +17,19 @@ namespace Tango.Core.Components
Unicode,
}
+ public enum ExitStrategies
+ {
+ WaitForExit,
+ StandardOutput,
+ }
+
+ public class CmdCommandResult
+ {
+ public String StandardOutput { get; set; }
+ public String StandardError { get; set; }
+ public int ExitCode { get; set; }
+ }
+
private Process _process;
public String Arguments { get; set; }
@@ -25,10 +38,10 @@ namespace Tango.Core.Components
public String WorkingDir { get; set; }
- public int ExitCode { get; set; }
-
public OutEncoding OutputEncoding { get; set; }
+ public ExitStrategies ExitStrategy { get; set; }
+
public CmdCommand(String processName, String arguments)
{
Timeout = TimeSpan.FromSeconds(5);
@@ -51,15 +64,19 @@ namespace Tango.Core.Components
Arguments = arguments;
}
- public Task Run()
+ public Task<CmdCommandResult> Run()
{
- return Task.Factory.StartNew(() =>
+ return Task.Factory.StartNew<CmdCommandResult>(() =>
{
LogManager.Log($"Starting process {_process.StartInfo.FileName} with arguments {Arguments}...");
_process.Start();
- _process.WaitForExit((int)Timeout.TotalMilliseconds);
- if (_process.HasExited)
+ if (ExitStrategy == ExitStrategies.WaitForExit)
+ {
+ _process.WaitForExit((int)Timeout.TotalMilliseconds);
+ }
+
+ if (_process.HasExited || ExitStrategy == ExitStrategies.StandardOutput)
{
String output = _process.StandardOutput.ReadToEnd();
String error = _process.StandardError.ReadToEnd();
@@ -77,12 +94,17 @@ namespace Tango.Core.Components
LogManager.Log($"Process Standard Output:\n{output}");
LogManager.Log($"Process Standard Error:\n{error}");
- ExitCode = _process.ExitCode;
-
if (_process.ExitCode != 0)
{
throw new IOException($"The process {_process.StartInfo.FileName} has exited with the code {_process.ExitCode}.");
}
+
+ return new CmdCommandResult()
+ {
+ StandardOutput = output,
+ StandardError = error,
+ ExitCode = _process.ExitCode,
+ };
}
else
{
diff --git a/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/AdvancedInstaller_TST.cs b/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/AdvancedInstaller_TST.cs
index 60a047c0c..b883db7b7 100644
--- a/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/AdvancedInstaller_TST.cs
+++ b/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/AdvancedInstaller_TST.cs
@@ -5,6 +5,7 @@ using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using Tango.AdvancedInstaller;
using Tango.Core.IO;
@@ -16,30 +17,52 @@ namespace Tango.UnitTesting.AdvancedInstaller
public class AdvancedInstaller_TST
{
[TestMethod]
- public void Set_Version_and_Package_name_And_Build()
+ public void Build_Install_Verify()
{
- InstallerBuilder builder = new InstallerBuilder();
-
var demo_project_path = Directory.GetCurrentDirectory() + "\\AdvancedInstaller\\DemoProject";
var project_Path = Path.Combine(demo_project_path, "DemoProject.aip");
var files_path = Path.Combine(demo_project_path, "Files");
var added_file = files_path + "\\addedFile.txt";
+ InstallerBuilder builder = new InstallerBuilder(project_Path);
+
File.WriteAllText(added_file, "Added File!");
var output_folder = TemporaryManager.Default.CreateFolder();
- builder.ProjectFile = project_Path;
- builder.OutputFolder = output_folder;
- builder.ProductName = "TEST TEST TEST";
- builder.ProductVersion = "2.0.0.0";
- builder.PackageType = PackageType.MSI;
+ String product_name = builder.GetProperty(ProjectProperty.ProductName).Result;
+ String manufacturer = builder.GetProperty(ProjectProperty.Manufacturer).Result;
- builder.Build().Wait();
+ var output_file = output_folder + "\\" + product_name + " Installer_v2.0.0.msi";
+
+ builder.Build("2.0.0", output_file).Wait();
File.Delete(added_file);
- output_folder.Display();
+ Assert.IsTrue(File.Exists(output_file));
+
+ var process = Process.Start(output_file);
+ process.WaitForExit();
+
+ File.Delete(output_file);
+
+ String installationFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), manufacturer, product_name);
+
+ Assert.IsTrue(File.Exists(Path.Combine(installationFolder, Path.GetFileName(added_file))));
+
+ Thread.Sleep(2000);
+
+ bool installed = builder.IsInstalled().Result;
+
+ Assert.IsTrue(installed);
+
+ builder.Uninstall().Wait();
+
+ Thread.Sleep(2000);
+
+ installed = builder.IsInstalled().Result;
+
+ Assert.IsFalse(installed);
}
}
}
diff --git a/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject-cache/cacheIndex.txt b/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject-cache/cacheIndex.txt
new file mode 100644
index 000000000..5fe5afe5a
--- /dev/null
+++ b/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject-cache/cacheIndex.txt
Binary files differ
diff --git a/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject-cache/part1/disk1.cab b/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject-cache/part1/disk1.cab
new file mode 100644
index 000000000..c376f83d7
--- /dev/null
+++ b/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject-cache/part1/disk1.cab
Binary files differ
diff --git a/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject-cache/part1/output-info.ini b/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject-cache/part1/output-info.ini
new file mode 100644
index 000000000..3586cb103
--- /dev/null
+++ b/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject-cache/part1/output-info.ini
Binary files differ
diff --git a/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject.aip b/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject.aip
index a4889c4c0..10abc0933 100644
--- a/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject.aip
+++ b/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/DemoProject.aip
@@ -5,8 +5,10 @@
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiPropsComponent">
<ROW Property="AI_BITMAP_DISPLAY_MODE" Value="0"/>
- <ROW Property="ALLUSERS" Value="1"/>
+ <ROW Property="ALLUSERS" Value="1" MultiBuildValue="DefaultBuild:"/>
<ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/>
+ <ROW Property="ARPNOMODIFY" MultiBuildValue="DefaultBuild:1"/>
+ <ROW Property="LIMITUI" MultiBuildValue="DefaultBuild:1"/>
<ROW Property="Manufacturer" Value="Twine"/>
<ROW Property="ProductCode" Value="1033:{C26BE216-84DB-452A-BA46-F927A7F87F39} " Type="16"/>
<ROW Property="ProductLanguage" Value="1033"/>
@@ -101,7 +103,7 @@
<ROW Action="AI_ResolveKnownFolders" Type="1" Source="aicustact.dll" Target="AI_ResolveKnownFolders"/>
<ROW Action="AI_SHOW_LOG" Type="65" Source="aicustact.dll" Target="LaunchLogFile" WithoutSeq="true"/>
<ROW Action="AI_STORE_LOCATION" Type="51" Source="ARPINSTALLLOCATION" Target="[APPDIR]"/>
- <ROW Action="SET_APPDIR" Type="307" Source="APPDIR" Target="[ProgramFilesFolder][Manufacturer]\[ProductName]"/>
+ <ROW Action="SET_APPDIR" Type="307" Source="APPDIR" Target="[ProgramFilesFolder][Manufacturer]\[ProductName]" MultiBuildTarget="DefaultBuild:[AppDataFolder][Manufacturer]\[ProductName]"/>
<ROW Action="SET_SHORTCUTDIR" Type="307" Source="SHORTCUTDIR" Target="[ProgramMenuFolder][ProductName]"/>
<ROW Action="SET_TARGETDIR_TO_APPDIR" Type="51" Source="TARGETDIR" Target="[APPDIR]"/>
</COMPONENT>
@@ -137,6 +139,6 @@
<ROW UpgradeCode="[|UpgradeCode]" VersionMin="[|ProductVersion]" Attributes="2" ActionProperty="AI_NEWERPRODUCTFOUND"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.SynchronizedFolderComponent">
- <ROW Directory_="APPDIR" SourcePath="Files" ExcludePattern="*~|#*#|%*%|._|CVS|.cvsignore|SCCS|vssver.scc|mssccprj.scc|vssver2.scc|.svn|.DS_Store" ExcludeFlags="6"/>
+ <ROW Directory_="APPDIR" SourcePath="Files" Feature="MainFeature" ExcludePattern="*~|#*#|%*%|._|CVS|.cvsignore|SCCS|vssver.scc|mssccprj.scc|vssver2.scc|.svn|.DS_Store" ExcludeFlags="6"/>
</COMPONENT>
</DOCUMENT>
diff --git a/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/Setup Files/DemoProject.msi b/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/Setup Files/DemoProject.msi
new file mode 100644
index 000000000..9803733dc
--- /dev/null
+++ b/Software/Visual_Studio/Tango.UnitTesting/AdvancedInstaller/DemoProject/Setup Files/DemoProject.msi
Binary files differ
diff --git a/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj b/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj
index 357a2344b..4e852fed8 100644
--- a/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj
+++ b/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj
@@ -118,7 +118,7 @@
</ItemGroup>
<ItemGroup>
<Content Include="AdvancedInstaller\DemoProject\DemoProject.aip">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<None Include="App.config" />
<None Include="packages.config" />
@@ -242,7 +242,7 @@
<Import Project="..\packages\System.Data.SQLite.Core.1.0.108.0\build\net46\System.Data.SQLite.Core.targets" Condition="Exists('..\packages\System.Data.SQLite.Core.1.0.108.0\build\net46\System.Data.SQLite.Core.targets')" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
+ <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file