问题标签 [visual-studio-setup-proje]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
210 浏览

visual-studio - 我的应用程序的添加/删除程序中有多个条目

我正在使用 Visual Studio 2013 安装程序来打包我的应用程序。然后我制作 MSI 的副本,在 Orca 中打开它并删除所有对话框以创建一个静默包。所以我有两个应该是相同的MSI,除了一个是静音的,另一个不是。

当我使用 non-silent 包从以前的版本(以相同的方式构建)升级时,一切正常。

但是,当我使用静默包从以前的版本升级时,除了我在添加/删除程序中留下 2 个条目之外,它都可以正常工作。虽然这一切都有效,但对客户来说看起来很丑。当我卸载最新版本时,添加删除程序仍然在添加/删除程序中列出了以前的版本,尽管实际上仍然安装了最新版本。

正如我所说,非静默包运行良好,这让我认为我必须在 Visual Studio 中正确设置所有内容,而 Orca 必须做一些我不打算做的事情。

任何帮助将非常感激。

0 投票
3 回答
543 浏览

c# - 检测所有用户 .msi

我在 Visual Studio 中编写了一个 C# 程序,它使用安装和部署项目来创建一个 .msi 安装程序。“InstallAllUsers”值设置为“True”,因此默认情况下会安装“Everyone”,但用户可以在安装过程中将其更改为“Just Me”。

它只是一个基本的安装程序 - 没什么特别的。

我的问题是:在他们安装程序之后,有没有办法告诉他们选择了哪个选项?是否有一个我可以挖掘的注册表项可以告诉我他们在安装过程中是选择了“Everyone”还是“Just Me”?我没有以编程方式添加任何注册表项,我可以找到我的程序的“卸载”键,但我不知道那里是否有一个值会告诉我。

* 编辑 *

为了更清晰的图片:

当我对我的程序进行更改时,我会增加版本号并将更新的 .msi 提供给用户,他们只是重新运行安装程序。最初应该只有几个用户,所以我没有制作复杂的更新程序。现在有很多用户,并且更新程序正在进行中。目前,当前用户对这个过程很满意——我给他们一个新的 .msi,然后他们再次运行它——除了一件事:安装程序不会“记住”他们上次运行安装程序时的设置(他们的话,不是我的)。我可以从“卸载”注册值中获取他们上次安装的目录,并使用 TARGETDIR 进行设置,因此我已经覆盖了安装路径。但我想弄清楚用户上次是否将“Everyone”更改为“Just Me”。

0 投票
1 回答
175 浏览

c# - 升级使用以前安装程序中的 OnCommit 自定义操作

在使用新的 MSI 将我的解决方案从版本 1 升级到 2 时,我注意到我配置应用程序的自定义操作之一是使用属于版本 1 的值(在 OnCommit 操作上)

我添加了打印出程序集版本的消息框和日志,并确认在升级期间,Windows 安装程序正在使用以前 MSI 中的 dll。但是,如果我手动安装较新的 MSI,则会使用正确的自定义操作。

有没有办法解决这个问题?还没有找到很多关于它为什么使用以前的自定义操作的信息?

我设置RemovePreviousVersions = trueUpgradeCodes相等,而ProductCodes不同。

0 投票
1 回答
514 浏览

c# - 如何将安装项目的 DefaultLocation 设置为在 VS 2010 中执行的路径 msi?

我已经使用 VS 2010 的设置项目来构建我的一个应用程序的设置 (msi)。

我想将应用程序安装到我的 msi 所在的确切位置。如果我的 msi 在 D:\Application 文件夹中并且有人执行它,它应该将应用程序安装到同一个文件夹中。我知道我必须去设置属性>查看>文件系统>应用程序文件夹。对于应用程序文件夹,我必须设置 DefaultLocation 属性。

但是我应该设置什么值,以便我的 msi 将应用程序安装到执行它的确切位置。

0 投票
2 回答
776 浏览

visual-studio-2015 - 为什么在 VS 2015 安装程序项目扩展设置项目中忽略此 DLL?

我有一个使用 VS 2015 安装程序项目扩展创建的安装项目,其中包含一个 DLL,我将其添加到文件系统编辑器中的应用程序文件夹中。所有属性都是默认的,除了 Register,它等于“vsdraCOM”。DLL 存储在 Dropbox 上。Setup 项目与类库项目在同一个解决方案中。安装项目构建到一个工作的 MSI 中。

通常,当我稍后重新打开安装项目时,我会在 DLL 图标旁边看到一个红点。将鼠标悬停在图标上会产生“忽略”。这并不特定于任何一个项目,它发生在所有项目中。

忽略

我没有测试是否会出现这个问题:

  • 使用多个 DLL
  • 使用非 COM DLL
  • 使用 Register 属性的另一个值。
  • 如果安装项目是在单独的解决方案中创建的。

我能够毫无问题地再次构建 MSI,所以它似乎没有负面影响。尽管如此,尽管进行了广泛的搜索,但我无法确定是什么导致了这种情况以及它可能会产生什么影响。

0 投票
2 回答
2711 浏览

c# - 传递 .msi Args 以安装自定义操作

我在 Visual Studio 2013 中有一个安装和部署项目,它为我的解决方案创建了一个 .msi 安装程序。我还有一个在安装自定义操作中启动的 C# WinForms 应用程序。如果用户从命令行启动 .msi,有没有办法将命令行参数传递给在安装自定义操作期间运行的应用程序?

我知道我可以使用 CustomActionData 参数提供安装自定义操作应用程序参数,所以我可以以某种方式将其动态设置为 .msi 参数吗?还是有更简单/更好的方法来做到这一点?

任何帮助,将不胜感激。

0 投票
0 回答
102 浏览

c# - Excel-VBA 工作簿中缺少引用

我有一个随 Visual Studios 安装项目一起安装的 Excel-VBA 电子表格...

我对 VBA 代码进行了更改,测试了更改,将新电子表格插入到设置项目中,构建了设置项目并将其发送给 Q/A。

我收到回复说她甚至无法安装这个东西......其中一个项目(称为 BMath)在 VBA 电子表格中缺少参考......

在我看来,路径在“#”之后被分割:

缺少数学路径:

C:\_数据\B\1.0\20161007_1024\C

工作 BPattern 路径:

C:\_Data\B\1.0\20161007_1024\C#\B\Deployment\BPattern.tlb

为什么这只发生在 BMath 上,而不是同一个文件夹中的其他 (7) 个引用?(C:\_Data\B\1.0\20161007_1024\C#\B\Deployment\)

感谢您的输入。

0 投票
3 回答
3306 浏览

c# - 如何创建安装程序而不是在安装后运行文件?

我目前正在 Visual Studio 2015 中使用安装项目。它运行良好,但我遇到了特殊需要的问题。安装程序完成后,我需要运行在我的应用程序上注册我的服务器的 .js 文件。如果我将我的 .js 文件添加到安装文件夹中的“自定义操作”中,目前使用安装项目,当我运行安装程序时,它会在安装过程中运行我的文件。这不好,因为服务器还没有准备好注册。我需要这个 .js 文件在安装后运行。如果任何有安装项目经验的人可以帮助我,我将非常感激。但是,如果有人知道可以做我要求的更好的安装程序制造商,我也会对此非常感兴趣。也许 WIX 可以为我做到这一点?

0 投票
1 回答
74 浏览

visual-studio - Visual Studio 安装程序不会覆盖非二进制文件

当我在现有已安装产品上运行新安装时,安装程​​序不会覆盖非 EXE 和 DLL 文件。对于 EXE 和 DLL,我可以设置版本号,它定义是否将替换文件。但这对于包含纯文本的配置文件是不可能的。

无论如何强制安装程序替换所有文件?

设置DetectNewInstalledVersionTrueFalse没有任何效果。

RemovePreviousVersions设置为真

0 投票
2 回答
193 浏览

c# - VS 2015 先决条件 dotnetfx 参数

我为该工具创建了一个小型 C# 工具和一个安装程序项目,我的工具使用 .net 框架 4.6。客户端使用 3.5 版(Windows 7 SP1 32 位) - 一切正常。

Setup-Project 检测到先决条件版本并开始安装 dotNetFx45_Full_x86_x64.exe

但是安装 dotnetfx 后,安装项目并没有开始重新启动。安装 dotnetfx 后是否可以重新启动 Setup.exe?

我猜是的,可能使用以下参数 /norestart /ChainingPackage

但是如何将此参数传递给 dotnetfx.exe?

我当前的设置文件夹:

或者我应该使用以下设置文件夹:

谢谢。