从MSI中排除.InstallState文件

本文关键字:InstallState 文件 排除 MSI | 更新日期: 2023-09-27 18:24:59

我在MSI项目中使用Installer Class,它预成型了一些自定义操作。由于这个类,每次我安装MSI时,它都会将.InstallState文件放入安装文件夹中。我的项目中有另一个模块,它使用现有应用程序的产品代码来卸载Silent mode中的现有应用程序。但它失败了,因为它无法删除.InstallState文件。但如果我手动卸载,它会删除文件。

安装应用程序后,我尝试使用File.Delete()在安装程序类的OnCommit()Commit()方法中删除此文件。但到目前为止没有运气。

有没有办法将此文件从MSI中排除?

从MSI中排除.InstallState文件

我找到了一个解决方法,在安装过程中,我正在执行File.Delete()。我正在删除安装程序类的OnComitting()中的文件。

protected override void OnCommitting(System.Collections.IDictionary savedState)
{
    string installedPath = string.Empty;
    installedPath = Context.Parameters["assemblypath"];
    installedPath = installedPath.Substring(0, installedPath.LastIndexOf(''''));
    File.Delete(Path.Combine(installedPath, "InstallerHelper.InstallState"));
    base.OnCommitting(savedState);
}