我似乎无法使一个自定义操作起作用。我可能做错了。这就是我的尝试:
我想在我的应用程序安装(Visual Studio Installer项目)中运行一个自定义操作,以运行可执行文件。该可执行文件只是进行一些系统.io文件复制任务,我已经确认当单独运行该可执行文件时,它完美地工作。
我创建了安装程序项目,并将exe添加到应用程序文件夹中;进入自定义操作并将exe添加到Commit步骤中;设置InstallerClass为true;运行安装程序,没有得到我希望的结果。因此,我添加了一个写入Windows日志的行。再次运行安装程序后,在Windows日志中查看,发现似乎没有运行。向exe代码添加了debug.break。卸载/重新安装我的安装程序,什么也没有发生。最终,我坐下来观察进程并确认可执行文件从未被执行过。
有哪些想法吗?
目标系统:Windows XP、Vista Visual Studio版本:2008 Sp1 语言:VB.NET 目标框架:2.0
非常好。我认为我通过您发布的代码正在接近。我将其转换为VB,但我遇到了这个错误:找不到myexename.savedstate。我假设我应该传递一些东西给你发布的子程序,但我不知道是什么。(顺便说一句,这是一个控制台应用程序)我添加了对System.Configuration.Install.dll的引用,以下是我的代码:
我没有调用它。我以前从未使用过Installer类。我可能在这里做了一些非常新手的事情。根据您的指示,我已经添加了我想要在安装期间运行的exe中粘贴的代码。我将该exe添加到了我的应用程序文件夹中,然后将其添加到Commit自定义操作中。现在这是我现在在我试图运行的exe源码中拥有的代码:
我想在我的应用程序安装(Visual Studio Installer项目)中运行一个自定义操作,以运行可执行文件。该可执行文件只是进行一些系统.io文件复制任务,我已经确认当单独运行该可执行文件时,它完美地工作。
我创建了安装程序项目,并将exe添加到应用程序文件夹中;进入自定义操作并将exe添加到Commit步骤中;设置InstallerClass为true;运行安装程序,没有得到我希望的结果。因此,我添加了一个写入Windows日志的行。再次运行安装程序后,在Windows日志中查看,发现似乎没有运行。向exe代码添加了debug.break。卸载/重新安装我的安装程序,什么也没有发生。最终,我坐下来观察进程并确认可执行文件从未被执行过。
有哪些想法吗?
目标系统:Windows XP、Vista Visual Studio版本:2008 Sp1 语言:VB.NET 目标框架:2.0
非常好。我认为我通过您发布的代码正在接近。我将其转换为VB,但我遇到了这个错误:找不到myexename.savedstate。我假设我应该传递一些东西给你发布的子程序,但我不知道是什么。(顺便说一句,这是一个控制台应用程序)我添加了对System.Configuration.Install.dll的引用,以下是我的代码:
我没有调用它。我以前从未使用过Installer类。我可能在这里做了一些非常新手的事情。根据您的指示,我已经添加了我想要在安装期间运行的exe中粘贴的代码。我将该exe添加到了我的应用程序文件夹中,然后将其添加到Commit自定义操作中。现在这是我现在在我试图运行的exe源码中拥有的代码:
_ 公共类ApplicationInstaller 继承 Installer 公共重写子过程 Commit(ByVal savedState As IDictionary) ' 在提交时执行一些操作 The_Sub_I_Have_my_codein() MyBase.Commit(savedState) 结束子过程
公共重写子过程 Install(ByVal stateSaver As IDictionary) ' 在安装时执行一些操作
结束子过程
公共重写子过程 Uninstall(ByVal savedState As IDictionary) ' 在卸载时执行一些操作 结束子过程 结束类
嗯...在exe的项目属性中,我点击了“签名程序集”,并且错误已经消失了。不过看起来这个exe并没有运行我想要的代码。