使用安装和部署以及Installer类卸载用c#编写的应用程序

使用安装和部署以及Installer类卸载用c#编写的应用程序,第1张

概述我的程序安装我的自定义服务并注册它.现在我要做的是取消注册服务并在卸载后删除所有文件.我正在使用Visual Studio和Setup and Deployment以及Installer类,我已经覆盖了下面介绍的一些方法: protected override void OnAfterUninstall(IDictionary savedState){ base.OnAfterUnins 我的程序安装我的自定义服务并注册它.现在我要做的是取消注册服务并在卸载后删除所有文件.我正在使用Visual Studio和Setup and Deployment以及Installer类,我已经覆盖了下面介绍的一些方法:

protected overrIDe voID OnAfterUninstall(IDictionary savedState){    base.OnAfterUninstall(savedState);    string directory = "C:\Program files (x86)\MyService\";    if (System.IO.Directory.Exists(directory))    {        string[] files = System.IO.Directory.Getfiles(directory);        foreach (string file in files)        {            System.IO.file.Delete(file);        }        System.IO.Directory.Delete(directory);    }}protected overrIDe voID OnBeforeUninstall(IDictionary savedState){    base.OnBeforeUninstall(savedState);    string path = "-u \"C:\Program files (x86)\MyService\AA_service.exe\"";    processstartinfo startInfo = new processstartinfo();    startInfo.CreateNowindow = false;    startInfo.UseShellExecute = false;    startInfo.filename = "C:\Program files (x86)\MyService\InstallUtil.exe";    startInfo.windowstyle = Processwindowstyle.HIDden;    startInfo.Arguments = path;    Process.Start(startInfo);}

它不会取消注册服务,也不会删除应用程序文件夹.谁能告诉我我做错了什么?

//编辑

现在它正在尝试删除文件,但我在卸载时遇到访问被拒绝错误.我想删除的文件是.exe,.dll和其他一些文件

解决方法 您是否将自定义 *** 作添加到MSI中?如果您的卸载事件没有自定义 *** 作,那么我不确定是否会调用这些事件.您是否有任何理由使用之前和之后的安装事件而不是覆盖“uninstall”命令?

如果不调用组件的Install功能,则安装程序也不会调用卸载功能.如果要查看代码是否正在执行,可以将消息框编程到卸载程序(或System.Diagnostics.DeBUGger.Attach())中.

另外,作为可移植性问题,我强烈建议您使用Environment.GetFolderPath(Environment.SpecialFolder.Programfiles)命令查找程序文件目录.这将跨越x64和x86,以及将来对程序文件目录的任何修订.

其次,我也会使用Path.Combine函数将文件夹安全地合并在一起.

编辑:
我想你可能会误用安装程序.安装程序的自定义 *** 作是在MSI安装服务后“注册”该服务.它也是在MSI删除之前取消注册该服务.

获取WIX的副本或在Visual Studio中使用MSI构建器.将服务的项目输出删除到项目中,设置自定义 *** 作以调用服务exe,然后MSI将为您处理安装/卸载.将调用自定义 *** 作并使用缓存注册/取消注册您的服务.

但要非常小心,如果您需要升级,那么服务安装程序的行为就会出现错误,如果没有正确连接MSI以处理可能发生的所有序列,则无法成功升级或降级.

总结

以上是内存溢出为你收集整理的使用安装和部署以及Installer类卸载用c#编写的应用程序全部内容,希望文章能够帮你解决使用安装和部署以及Installer类卸载用c#编写的应用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存