加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows – Visual Studio 2008安装程序项目 – 自定义操作未触

发布时间:2020-12-13 22:35:29 所属栏目:Windows 来源:网络整理
导读:我似乎无法使用自定义操作.我可能做错了.这是我正在尝试做的事情: 我想在运行可执行文件的应用程序安装(Visual Studio Installer项目)中运行自定义操作.可执行文件只是执行一些system.io文件复制任务,并且我已经确认可执行文件单独运行时工作正常. 我创建了
我似乎无法使用自定义操作.我可能做错了.这是我正在尝试做的事情:

我想在运行可执行文件的应用程序安装(Visual Studio Installer项目)中运行自定义操作.可执行文件只是执行一些system.io文件复制任务,并且我已经确认可执行文件单独运行时工作正常.

>我创建了安装程序项目
>将exe添加到应用程序文件夹中
>转到自定义操作并将exe添加到Commit步骤
> InstallerClass设置为true
>跑了安装程序,没有得到我希望的结果.所以我添加了一行来写入Windows日志.再次运行安装程序后查看Windows日志,看起来它没有运行.添加了debug.break到exe代码Unisntalled /重新安装我的安装程序,没有任何反应.我终于坐下来看着进程并确认exe永远不会被执行.

有什么想法吗?

目标系统:Windows XP,Vista
Visual Studio版本:2008 Sp1
语言:VB.NET
目标框架:2.0

优秀.由于您发布的代码,我认为我越来越近了.我将它转换为VB,我收到此错误:无法找到myexename.savedstate.我想我应该把东西传给你发布的潜艇,但我不知道是什么. (顺便说一句,这是一个控制台应用程序)我添加了对System.Configuration.Install.dll的引用,这是我的代码:


Imports System.ComponentModel
Imports System.Configuration.Install

 _
    Public Class ApplicationInstaller
        Inherits Installer
        Public Overloads Overrides Sub Commit(ByVal savedState As IDictionary)
            ' Do some work on commit
            The_Sub_I_Want_To_Run()
        End Sub
        Public Overloads Overrides Sub Install(ByVal stateSaver As IDictionary)
            ' Do some work on install
        End Sub
        Public Overloads Overrides Sub Uninstall(ByVal savedState As IDictionary)
            ' Do some work on uninstall
        End Sub
    End Class

我没有打电话给那个.我之前从未使用过Installer类.我可能会在这里做一些非常新秀的事情.根据您的说明,我已经在我安装期间要运行的exe中添加了下面粘贴的代码.我将exe添加到我的应用程序文件夹,然后将其添加到Commit自定义操作中.现在这里是我现在在我尝试运行的exe源代码中的代码:

  _
    Public Class ApplicationInstaller
        Inherits Installer
        Public Overloads Overrides Sub Commit(ByVal savedState As IDictionary)
            ' Do some work on commit
            The_Sub_I_Have_my_codein()
            MyBase.Commit(savedState)
        End Sub
        Public Overloads Overrides Sub Install(ByVal stateSaver As IDictionary)
            ' Do some work on install

        End Sub
        Public Overloads Overrides Sub Uninstall(ByVal savedState As IDictionary)
            ' Do some work on uninstall
        End Sub
    End Class

嗯…在exe的项目属性中,我点击了“签署程序集”,错误消失了.但是,看起来exe不会运行我想要的代码.

解决方法

您要添加到Commit步骤的exe或库应包含一个派生自 Installer并使用 RunInstaller属性标记的类,如下所示:

[RunInstaller(true)]
public class ApplicationInstaller : Installer
{
    public override void Commit(IDictionary savedState) {
      // Do some work on commit
    }
    public override void Install(IDictionary stateSaver) {
      // Do some work on install
    }
    public override void Uninstall(IDictionary savedState) {
      // Do some work on uninstall
    }
}

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读