我有这个确切的问题。
我所做的是这样的:
- 提供uninstall.bat 文件。此文件无条件安装
- 在安装程序中提供自定义操作,重写uninstall.bat 文件并插入正确的产品代码。
这是作为自定义操作运行的脚本。它会重写uninstall.bat 文件,然后自行删除。
// CreateUninstaller.js
//
// Runs on installation, to create an uninstaller
// .cmd file in the application folder. This makes it
// easy to uninstall.
//
// Mon, 31 Aug 2009 05:13
//
var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
var parameters = Session.Property("CustomActionData").split("|");
var targetDir = parameters[0];
var productCode = parameters[1];
ts = fso.OpenTextFile(targetDir + "uninstall.cmd", ForWriting, true);
ts.WriteLine("@echo off");
ts.WriteLine("goto START");
ts.WriteLine("=======================================================");
ts.WriteLine(" Uninstall.cmd");
ts.WriteBlankLines(1);
ts.WriteLine(" This is part of MyProduct.");
ts.WriteBlankLines(1);
ts.WriteLine(" Run this to uninstall MyProduct");
ts.WriteBlankLines(1);
ts.WriteLine("=======================================================");
ts.WriteBlankLines(1);
ts.WriteLine(":START");
ts.WriteLine("@REM The uuid is the 'ProductCode' in the Visual Studio setup project");
ts.WriteLine("%windir%\\system32\\msiexec /x " + productCode);
ts.WriteBlankLines(1);
ts.Close();
// all done - try to delete myself.
try
{
var scriptName = targetDir + "createUninstaller.js";
if (fso.FileExists(scriptName))
{
fso.DeleteFile(scriptName);
}
}
catch (e2)
{
}
我想我可以用 WiX 做到这一点,但我不想学习它。