Microsoft Visual Studio 2022 -将迁移的Windows窗体应用程序安装到Visual Studio 2022/.Net 4.8时出现错误1001

ozxc1zmp  于 2023-10-21  发布在  .NET
关注(0)|答案(1)|浏览(281)

我有一个Visual Studio 2008/.Net 3.5 Windows窗体应用程序,它有一个单独的安装项目,使用“安装”和“安装”自定义操作。“安装”自定义操作创建“事件日志”源,而“删除”自定义操作删除源和日志。在制作“RemovePreviousVersions”属性设置为“True”的新应用程序版本时,安装项目将删除以前的版本。

namespace EventLogInstallerDLL
{
    [RunInstaller(true)]
    public partial class EventLogInstaller:Installer
    {
        public EventLogInstaller()
        {
            InitializeComponent();
        }

        string sLog =  "Application";
        string sSource = "APP";

        public override void Install(IDictionary savedState)
        {
            base.Install(savedState);

            // Create the source, if it does not already exist.
            if (!System.Diagnostics.EventLog.SourceExists(sSource))
            {
                System.Diagnostics.EventLog.CreateEventSource(sSource, sLog);
            }
        }

        public override void Uninstall(IDictionary savedState)
        {

            // Delete the source, if it exists.
            if (System.Diagnostics.EventLog.SourceExists(sSource))
            {
                System.Diagnostics.EventLog.DeleteEventSource(sSource);
                System.Diagnostics.EventLog.Delete(sLog);
            }

            base.Uninstall(savedState);
        }
    }
}

我将应用程序迁移到Visual Studio 2022/.Net 4.8,以利用Oracle托管访问驱动程序。迁移版本使用“Microsoft Visual Studio Windows Projects 2022”扩展来创建最新的安装包(.msi和setup.exe文件)。新的安装项目中存在类似的“自定义操作”。旧版本在启动时会检测新迁移版本的可用性并启动Windows XP。编译器抛出以下错误。

  • 错误1001。错误1001。卸载时发生异常。此异常将被忽略,卸载将继续。但是,卸载完成后,应用程序可能无法完全卸载。-->试图执行未经授权的操作。*

单击“确定”后,系统将显示以下信息。

  • 安装不完整在安装APP之前,安装程序被中断。您需要重新启动磁盘机以重试。单击“关闭”退出。*

应用程序的迁移版本未成功安装,因此不会执行。
事件日志。

  • 安装成功或错误状态:1603年 *

我怀疑该错误涉及旧的Visual Studio 2008/.Net 3.5安装项目的“删除”自定义操作,该操作试图删除事件日志源/日志,并且没有足够的权限执行该操作。
是否可以在新迁移的Visual Studio 2022/.Net 4.8安装项目中执行任何操作,以成功卸载旧的Visual Studio 2008/.Net 3.5 Windows窗体应用程序并安装新迁移的版本?我删除了“Microsoft Visual Studio Windows Projects 2022”安装项目中的任何“自定义操作”,但在安装新迁移的版本时仍然收到“错误1001”。
旧的Visual Studio 2008/.Net 3.5 Windows窗体应用程序存在于许多用户的笔记本电脑上。用户在启动应用程序时没有管理员权限,它会尝试安装新迁移的版本。我们希望所有用户在再次执行旧版本的应用程序时都能升级到新版本。

rm5edbpk

rm5edbpk1#

你的猜测是正确的。通常,当用户没有足够的权限卸载程序时,会发生错误1001。这是因为该程序没有被清理干净。除了事件日志的残余之外,还可能存在注册表的残余。如果此时继续安装,安装可能会失败。微软官方对Error 1603的解释也验证了你的猜测。
Error 1603 when you try to install a Windows Installer package: A fatal error occurred during installation
通常,要卸载显示1001的软件,我们可以采取以下步骤(如果用户权限不足,可能无效):
1.在桌面上找到要删除的程序,右键单击并选择属性/查找目标。程序的路径将出现在打开的页面上。如果桌面上没有图标,您可以尝试搜索它。此外,软件通常默认存储在C:\Program中。在文件中搜索并删除整个程序软件文件夹。如果系统拒绝,请 Boot 启动电脑,按F8键进入安全模式,删除整个软件文件夹(或下载Unlocker小软件删除)。然后,启动/运行,输入regedit并按Enter键打开注册表编辑器,选择编辑/搜索,找到您所搜索的软件的英文名称,找到软件的键值并删除(多次搜索并重复删除)。
1.在注册表中添加或删除程序。运行,输入regedit并按Enter键。打开注册表并找到[HKEY_MACHINE_MACHINE\SOFTWARE\Microsoft\windows\CurrentVersion\HKEY]子项。在此子项下,删除相应的软件图标。和键值,只需重新启动计算机即可。
但是,如果你想彻底解决这个问题,我的建议是使用微软官方的ClickOnce。ClickOnce是一种部署技术,使您能够创建基于Windows的自更新应用程序,这些应用程序可以在最少的用户交互下安装和运行。
ClickOnce部署克服了部署中的三个主要问题之一,即安全权限。也就是说,Windows XP部署需要管理权限,只允许有限的用户安装; ClickOnce部署允许非管理用户进行安装,并且只赠款应用程序所需的代码访问安全权限。

相关问题