gpt4 book ai didi

visual-studio-2010 - 创建自定义操作以启动应用程序和退出安装程序

转载 作者:行者123 更新时间:2023-12-03 18:18:26 25 4
gpt4 key购买 nike

感谢 StackOverflow,我昨天发现了如何向 Visual Studio 安装程序添加自定义操作以在更新后启动我的程序。我现在面临的问题是,在安装程序结束时,程序确实打开了,但在我退出我的应用程序之前,安装程序永远不会完成。

有没有办法确保应用程序仅在用户单击 MSI 包后才启动?
或者程序在安装程序完成时启动但安装程序完成并退出?

我正在运行 Visual Studio 2010,以防万一。

最佳答案

经过一番谷歌搜索,我发现 Visual Studio 安装程序的自定义操作可能需要指向安装程序类。所以我在我的解决方案中创建了一个类型为 class 的新项目。我删除了 class1.cs 文件,并使用以下代码向新项目添加了一个安装程序类(注意:在某些时候需要使用 security.permissions):

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
using System.Diagnostics;
using System.Security.Permissions;


namespace AppName
{
[RunInstaller(true)]
public partial class InstallerClass : System.Configuration.Install.Installer
{
public InstallerClass()
{
InitializeComponent();
}

public override void Commit(System.Collections.IDictionary savedState)
{
base.Commit(savedState);
System.Diagnostics.Process.Start(Context.Parameters["TARGETDIR"].ToString() + "application.exe");
// Very important! Removes all those nasty temp files.
base.Dispose();
}
}
}

添加 InstallerClass 后,我右键单击安装程序项目并选择 Add > Project Output 并添加安装程序类。然后我右键单击已安装的项目并执行“查看”>“自定义操作”。我将安装程序类添加到 Install 和 Commit 文件夹(如果你只将它添加到 Commit,你会得到一个错误 1001:找不到文件 InstallState。由于覆盖提交,它只会在提交时运行。显然 InstallState 是在第 2 阶段创建,所以如果它不在两个阶段,它就会失败)。

您必须添加一个 CustomActionData 条目。为此,请选择“InstallerClass 的主要输出”并转到“属性”选项卡。在 CustomActionData 中粘贴以下内容:
/TARGETDIR="[TARGETDIR]\"

添加后,应用程序在安装完成时正常运行,您可以关闭安装程序而不是等待应用程序退出!

正是我所需要的。感谢谷歌救了我的培根。

我注意到的一个问题是安装程序现在在我的 ApplicationFolder 中创建了多个 .tmp 文件和一个 .InstallState 文件。我想知道是否还有其他东西需要添加到安装程序类中以摆脱这些无用的文件?

想出如何摆脱临时文件。使用 Dispose() 更新了代码。

关于visual-studio-2010 - 创建自定义操作以启动应用程序和退出安装程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3172406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com