我有一个安装程序,我已经在一个属性( AppSearch扩展)中编写了一个简单的自定义操作来计算某个流程类型的计数,然后在LaunchConditions中使用它来控制安装程序。客户现在想要更丰富的体验,所以我尝试稍微重写一下,以触发FilesInUse对话框。
[CustomAction]
public static ActionResult DetectRunningProgram(Session session)
{
var record = new Record(2);
record[0] = null;
record[1] = "Calc.exe";
record[2] = "Calculator";
session.Message(InstallMessage.FilesInUse, record);
MessageBox.Show("TEST");
return ActionResult.Success;
}这是我在AppSearch之后安排的。我看到显示了FilesInUse对话框,但它没有进入模式。只要我关闭测试消息框,FilesInUse就会消失,我就会看到我的InstallWelcome对话框。
我遗漏了什么?我没有使用外部UI...仅限原生UI。
发布于 2013-04-21 06:49:22
CostFinalize操作将是初始化Windows Installer中的重要状态所必需的。Windows installer直到InstallValidate才处理FilesInUse这一事实是一个很好的提示。在CostFinalize之后安排您的自定义操作应该可以让一切正常工作。例如,将记录添加到重新启动管理器的WiX工具集中的RestartResource自定义操作就安排在InstallValidate之前。
https://stackoverflow.com/questions/16124270
复制相似问题