私はwxsにこの構成を持っています
<CustomAction Id="UninstallDriver" BinaryKey="Setup.CustomActions.dll"
DllEntry="UninstallDriver" Execute="immediate" Return="check"/>
<Custom Action="UninstallDriver" After="InstallInitialize">Installed AND (NOT REINSTALL)</Custom>
カスタムアクション:
/// <summary>
/// Uninstall driver
/// </summary>
/// <param name="session"></param>
/// <returns></returns>
[CustomAction]
public static ActionResult UninstallDriver(Session session)
{
try
{
session.Log("Start unistalling redirect driver");
var toolPath = GetPathToFile(session, @"%INSTALLLOCATION%Tools.exe");
session.Log("Path for tools={0}", toolPath);
if (!File.Exists(toolPath))
{
session.Log("Can't find Tools.exe at specified location");
return ActionResult.Failure;
}
var proc = Process.Start(toolPath);
proc.StartInfo.Arguments = @"/uninstall";
proc.Start();
var exited = proc.WaitForExit(10000);
if (exited && proc.ExitCode == 0)
{
session.Log("Driver uninstall completed");
return ActionResult.Success;
}
}
catch (Exception ex)
{
session.Log("Error while uninstalling driver={0}", ex.Message);
}
return ActionResult.Failure;
}
そして、アンインストール時にこのカスタムアクションを呼び出すと、「このインストールを完了するために必要な DLL を実行できませんでした」というメッセージが表示されます。しかし、x86 用の Tools.exe をビルドしても問題は発生しませんでした。64x ビット バージョンで動作させるにはどうすればよいですか?