Window 安装Shield 2009 Premier,然后卸载&x27;t关闭进程/gui

Window 安装Shield 2009 Premier,然后卸载&x27;t关闭进程/gui,window,installshield,uninstallation,Window,Installshield,Uninstallation,我的应用程序(使用C#.net开发)已打开,现在我卸载,InstallShield会显示消息,说明该应用程序已打开,以及是否确实要关闭该应用程序。选择“忽略”继续卸载。应用程序的某些文件和exe未关闭。如何在卸载时通过installshield关闭它们。或者我必须设置一些属性。我知道在卸载时添加自定义操作可以杀死进程,但不应该安装StutsFor吗? < P>如果你的目标是重启打开的应用程序而不遵守“忽略”的选择,你可以考虑将“重启”属性设置为“强制”。这将要求该用户重新启动系统,从而获得所需的

我的应用程序(使用C#.net开发)已打开,现在我卸载,InstallShield会显示消息,说明该应用程序已打开,以及是否确实要关闭该应用程序。选择“忽略”继续卸载。应用程序的某些文件和exe未关闭。如何在卸载时通过installshield关闭它们。或者我必须设置一些属性。我知道在卸载时添加自定义操作可以杀死进程,但不应该安装StutsFor吗?

< P>如果你的目标是重启打开的应用程序而不遵守“忽略”的选择,你可以考虑将“重启”属性设置为“强制”。这将要求该用户重新启动系统,从而获得所需的结果。

如果您的项目类型是InstallScript MSI或它支持InstallScript,我更愿意为此编写代码,例如:

export prototype _Server_UnInstalling();
function _Server_UnInstalling()
STRING Application, ServiceName;
begin    
   //application name 
    Application = "Demo";
    MessageBox("In _Server_UnInstalling",INFORMATION);
    //Check whether application is running or not.
    if ProcessRunning( Application ) then
        MessageBox("Demo is running",INFORMATION);
        //Close server Application 
        ProcessEnd(Application);
    endif;                          

    //if application is having service at the background then 
    ServiceName = "Demo Server";
    //Uninstall the server windows services on uninstallation.
    ServiceRemoveDuringUninstallation(ServiceName);

end;
上面的示例给出了框架,您需要实现ProcessRunning、ProcessEnd和ServiceRemoveDuringInstallation方法的逻辑,您可以参考Installshield帮助文档以及源代码


希望这有助于

一,。安装程序应用程序(运行Setup.exe),2。运行程序,3。现在卸载程序(程序仍处于打开状态),4。卸载警告应用程序已打开,5。继续卸载选择忽略,6卸载完成,7。现在结果是exe和一些DLL没有被删除,应用程序仍然打开!!!我的观点是,在卸载过程中,应用程序不应该自动关闭,并且通过卸载删除相关的dll和exe文件吗?如果应用程序未打开,卸载将删除安装期间复制的所有文件/目录。这是MSI安装程序还是InstallScript安装程序?如果是MSI,您是否正在使用重新启动管理器?重新启动后文件是否会被删除?在MSI中,它的工作方式是a)MSI检测到它想要删除的打开文件;b) 它使用重启管理器来关闭它们;c) 如果失败,它将提示您重新启动,并将在下次重新启动时删除它们。