如何调试和单步执行 Visual Studio 安装项目?

问题描述 投票:0回答:2

操作系统:Windows 10 Enterprise N
开发环境:VS2022(64 位)专业版(7.5)
应用程序:VSTO 加载项(Outlook 32 位)

我在安装期间关闭 Outlook 的自定义操作。那行得通。但是,它不会调用我的 UnInstall 代码,它也会关闭 Outlook。

有没有办法单步执行这段代码?

自定义操作代码

using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;
using System.Diagnostics;

namespace MySetupCustomActions
{
    [RunInstaller(true)]
    public class AddCustomizations: Installer
    {
        public AddCustomizations() : base() { }

        // Override the 'Install' method.
        public override void Install(IDictionary savedState)
        {
            base.Install(savedState);    

            KillProcess("outlook");               

        }
        // Override the 'Commit' method.
        public override void Commit(IDictionary savedState)
        {
            base.Commit(savedState);
            KillProcess("outlook");
        }
        // Override the 'Rollback' method.
        public override void Rollback(IDictionary savedState)
        {
            base.Rollback(savedState);
            KillProcess("outlook");
        }

        private void KillProcess(string processName)
        {
            try
            {
                var procs = Process.GetProcessesByName(processName);
                foreach (var p in procs) { p.Kill(); }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
        
        static void Main()
        {
           
            
        }
    }
}
windows-installer setup-deployment visual-studio-setup-proje
2个回答
1
投票

使用 WiX:您已经在使用 WiX 了吗?建议您使用 WiX 而不是 Visual Studio 安装项目。 这里有一些原因WiX 快速入门资源。我有一个关于 WiX CA 调试的答案:MSI Custom Action Debugging。或许直接去Visual Studio debugger used with WiX / MSI的视频演示就可以看到快速演示。我从未尝试过 VS 项目(不需要使用它)。

样本:一些进一步的资源:

条件:自定义动作条件很容易出错。我在测试期间使用消息框来确定自定义操作何时运行。请参阅此处的说明:How to execute conditional custom action on install and modify only?。然后是这个复杂条件实际最终导致的演练:Wix 工具更新使用旧的自定义操作

关于 MSI 条件的一些进一步链接:


0
投票

好吧,不知何故我的“卸载”覆盖不见了!!!

啊!!!太多的深夜。

它的工作。

也就是说,我仍然想知道如何逐步执行这段代码?我会在新主题中发帖。

© www.soinside.com 2019 - 2024. All rights reserved.