C# MSI安装程序安装和卸载问题

C# MSI安装程序安装和卸载问题,c#,installation,windows-installer,setup-project,C#,Installation,Windows Installer,Setup Project,我有一个MSI安装程序,它有我的自定义安装程序项目输出,我添加了一个exe文件以在安装时运行 因此,我的MSI安装文件将从源位置复制或删除文件,我的自定义GUI将安装我的Windows server调用某些服务器api并更新其登录凭据等内容 文件的复制和删除由MSI在其作为MSI项目的“添加为”输出的操作上控制。如果我安装它,它将复制文件,如果我卸载它,它将删除文件 现在我有以下问题- 1) 现在,若我将转到控制面板并尝试卸载我的应用程序,若我中止它,稍后将从GUI中卸载,我的GUI将中止,但M

我有一个MSI安装程序,它有我的自定义安装程序项目输出,我添加了一个exe文件以在安装时运行

因此,我的MSI安装文件将从源位置复制或删除文件,我的自定义GUI将安装我的Windows server调用某些服务器api并更新其登录凭据等内容

文件的复制和删除由MSI在其作为MSI项目的“添加为”输出的操作上控制。如果我安装它,它将复制文件,如果我卸载它,它将删除文件

现在我有以下问题-

1) 现在,若我将转到控制面板并尝试卸载我的应用程序,若我中止它,稍后将从GUI中卸载,我的GUI将中止,但MSI将清除所有文件

2) 如果我将从GUI中选择卸载和进一步,请选择修复。它仍然会删除文件

所以我的安装程序不是真正的自定义安装程序,它只是同名的

现在我如何快速修复以上两个选项? 有没有更好的方法来完成这个任务->我最初的问题


提前谢谢

听起来你好像在错误的时间做事。在任何安装系统中,您都应该预先收集所有用户输入,然后一旦安装本身开始,在完成所有操作之前,就不需要进一步的用户输入


确保完整性的最简单方法是只允许用户在UI收集阶段取消,而不是在安装阶段。如果您确实想让用户在安装阶段取消,则必须将其传递给基础引擎,以便它知道如何取消并回滚迄今为止所做的任何更改。

在我看来,您需要为您的操作设置适当的条件,例如启动exe文件执行的条件。尝试设置“未安装”之类的内容因此,它只会在初始安装期间发生,而不会在删除/修复或升级期间发生。

谢谢您的建议,但它对我没有任何帮助。这就是我希望安装过程的方式-1)欢迎屏幕2)系统检查3)EULA 4)服务器设置根据产品许可,这是用户的无线电选择。5) 基于上次选择的服务器设置。6) 我的窗口服务器设置将进行rest调用并更新服务器。7) 正在接受域用户帐户凭据。8) 现在开始安装。9) 重定向到云门户,并根据选择发送完成消息。请让我知道这是可能的。