Как мы можем установить файлы в наборе инструментов Wix с помощью специального действия C#C#

Место общения программистов C#
Ответить
Anonymous
 Как мы можем установить файлы в наборе инструментов Wix с помощью специального действия C#

Сообщение Anonymous »

У меня есть несколько файлов, которые мне нужно установить во временный каталог перед фактической установкой файлов. Я использую настраиваемое действие в С#, которое установит файлы, встроенные в мой MSI, во временную папку пользователя. >

Код: Выделить всё

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;
}

}
}
}
когда это настраиваемое действие вызывается, мой MSI завершает работу, и в файле журнала появляется ошибка, указывающая на некоторую проблему с моим настраиваемым действием. Я также пытался скопировать файл из своих файлов во временную папку, и это сработало.

Код: Выделить всё

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:\Users\Demo\registration_module.exe"; //session.GetSourcePath("RegistrationModule");
string sourceFilePathCon = @"C:\Users\connectivity_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;
}

}
}
}
но когда я пытаюсь скопировать файл из MSI, это не работает

Подробнее здесь: https://stackoverflow.com/questions/786 ... tom-action
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»