【问题标题】:Set path of a visual studio installer programatically以编程方式设置 Visual Studio 安装程序的路径
【发布时间】:2014-12-16 13:29:29
【问题描述】:

我是创建 MSI 的新手,还在学习中。 这是我的问题:

我有一个包含 2 个项目的小型测试解决方案:一个简单的 WPF 应用程序和一个类库。 WPF 使用类库来获取要显示的随机文本。 在 Visual Studio 2013 中做了一个安装项目,并成功创建了一个将安装应用程序的 MSI。

我了解到我可以将“安装程序类”.cs 文件添加到我的一个项目中,以便能够订阅某些事件,例如“BeforeInstall”和“AfterInstall”。我可以使用它在注册表中写入一些值,例如用户选择的安装路径。

一切都好,但现在发生了这种情况:我决定更新类库以返回不同的文本,并且我需要为我的应用程序创建一个补丁,它只会更新类库(dll),而不是 wpf 应用程序自己。

为了实现这一点,我创建了另一个安装项目,将类库输出添加到其中。大概我在注册表中有以前安装的安装路径,我的问题如下:

如何告诉补丁设置安装到我在注册表中的路径,或者如果注册表不存在则根本不安装? 我试图在类库项目中创建一个安装程序类.cs,我可以在其中编写一些代码来从寄存器中获取路径,但是我找不到在哪里设置它。

我已经阅读了很多 stackoverflow 帖子,这就是我走到这一步的原因,但现在我真的被困住了。

谢谢。

【问题讨论】:

  • 我发现我可以添加一个启动条件来搜索目标机器的注册表,但我无法让它工作。
  • 也找到了这个链接,试着按照他们说的做,但它们并不具体,我真的无法理解。此外,该帖子来自 2007 年:blogs.msdn.com/b/astebner/archive/2005/09/20/472125.aspx
  • 经过进一步研究,我发现这个链接正是我需要的,但它似乎不起作用。它显示“无法访问网络位置 \MyApp”。我按照这里的说明进行操作:support.microsoft.com/kb/827026

标签: c# wpf visual-studio-2013 installation setup-project


【解决方案1】:

您无需执行任何操作。在安装项目的 Registry 视图中,创建要存储用户输入的安装目录的项目,并为其指定值 [TARGETDIR],该值区分大小写。

您无法使用 VS 设置项目创建补丁,也无法使用任何工具制作实际补丁,其中唯一的更改是自定义操作代码。您按照此处所述进行升级:

https://www.simple-talk.com/dotnet/visual-studio/updates-to-setup-projects/

这是旧的但仍然正确。唯一的新功能是您需要在 RemovePreviousVersions 升级中增加要更新的文件的文件版本。

在不知道“返回不同文本”的确切含义的情况下,我无能为力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2011-04-17
    • 1970-01-01
    • 2011-01-15
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多