I have some files that i need to install in temp directory before the actual installation of the files i am using a custom action in c# which will install the files embedded in my msi in the temp folder of the user.
using System;
using System.Diagnostics;
using System.IO;
using WixToolset.Dtf.WindowsInstaller;
namespace CustomActionVerifyButton
{
public class CustomActions
{
[CustomAction]
public static ActionResult VerifyOnPremURL(Session session)
{
session.Log("Begin Verifying OnPremURL");
try
{
string tempDirectory = session["TEMPFOLDER"];
session.Log($"ABRACADABARA {tempDirectory}");
string[] fileKeys = {"RegistrationModule", "ConnectivityCheck"};
foreach (var fileKey in fileKeys)
{
string sourceFilePath = session.Format($"[# {fileKey}]");
string destFilePath = Path.Combine(tempDirectory, Path.GetFileName(sourceFilePath));
File.Copy(sourceFilePath, destFilePath, true);
session.Log($"Copied {sourceFilePath} to {destFilePath}");
}
session.Log("End InstallFilesToTemp");
return ActionResult.Success;
}
catch (Exception ex)
{
session.Log($"ERROR in InstallFilesToTemp: {ex.Message}");
return ActionResult.Failure;
}
}
}
}
when this custom action is called my msi finishes and in the log file i get a error indicating some problem with my custom action.
i have also tried to copy a file from my files in temp folder and it works.
using System;
using System.Diagnostics;
using System.IO;
using System.Xml.Linq;
using WixToolset.Dtf.WindowsInstaller;
namespace CustomActionVerifyButton
{
public class CustomActions
{
[CustomAction]
public static ActionResult VerifyOnPremURL(Session session)
{
session.Log("Begin Verifying OnPremURL");
Debugger.Launch();
try
{
string tempDirectory = Path.GetTempPath();
if (!tempDirectory.EndsWith(Path.DirectorySeparatorChar.ToString()))
{
tempDirectory += Path.DirectorySeparatorChar;
}
string sourceFilePathReg = @"C:UsersDemoregistration_module.exe"; //session.GetSourcePath("RegistrationModule");
string sourceFilePathCon = @"C:Usersconnectivity_check.exe"; //session.GetSourcePath("ConnectivityCheck");
string destFilePathCon = Path.Combine(tempDirectory, "secops_agent_registration_module.exe");
string destFilePathReg = Path.Combine(tempDirectory, "secops_domain_connectivity_check.exe");
File.Copy(sourceFilePathReg, destFilePathReg, true);
File.Copy(sourceFilePathCon, destFilePathCon, true);
session.Log("End InstallFilesToTemp");
return ActionResult.Success;
}
catch (Exception ex)
{
session.Log($"ERROR in InstallFilesToTemp: {ex.Message}");
return ActionResult.Failure;
}
}
}
}
but when i try to copy the file from the msi it does not work
zombie is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.