问题标签 [setup-project]

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 回答
517 浏览

visual-studio - 如何根据版本生成 MSI 包名称?

在 Visual Studio 安装项目中,有没有办法根据当前应用程序版本号自动生成 MSI 文件名?

0 投票
1 回答
1543 浏览

visual-studio - Visual Studio 安装项目未能将密钥添加到注册表

我正在 Visual Studio 2008 中创建一个安装包来注册一个 COM 组件,其中一项操作是向注册表添加一些键。

奇怪的是,当我运行安装程序时,它会正确创建密钥层次结构,但是它创建的层次结构中的最后一个密钥具有错误的 GUID ...而它在安装程序中的权利...有没有人遇到过这个或有任何关于出了什么问题的建议?

谢谢

0 投票
3 回答
730 浏览

visual-studio-2005 - 如何告诉 MSI 不要在 VS2005 的设置和部署项目中覆盖现有文件?

我在 VS2005 中有一个安装和部署项目。我正在安装的文件之一是 SQLite 数据文件。

我即将发布该软件的新版本,但我发现如果我在现有安装上运行更新,它会覆盖数据文件。

我在安装项目中有一个更新的数据文件,所以它比已经安装的更新,但我不想覆盖它。

我尝试将该文件的永久属性设置为 True,但无济于事。

有什么建议么?

0 投票
1 回答
1200 浏览

deployment - 使用安装项目部署 SQL compact Edition(SDF 文件)

我有一个使用 SQL Compact 版本作为数据存储的 C#.NET 桌面应用程序。该应用程序应由机器上的任何用户使用,并且所有人都应该看到相同的数据(每个用户的数据不应不同)。

我想知道我应该在哪里部署 SDF 文件?

  • 用户的个人数据文件夹(我的文档)意味着每个用户将拥有一个单独的数据库。
  • 部署在与应用程序相同的文件夹会导致 vista 将文件复制到 \USers\Appdata\local\VirtualStore\ 并且似乎为每个用户制作不同的副本。

最好在哪里部署 SDF 文件以确保所有用户都在查看相同的数据?

0 投票
1 回答
1052 浏览

visual-studio - Visual Studio 安装项目中的“复选框 (A)”和“复选框 (B)”对话框有什么区别?

在 Visual Studio 安装和部署项目中,我可以为安装程序设计用户界面。我有一个欢迎屏幕、一个许可证接受对话框,然后是一个安装位置对话框。都好。

我想再包含一个对话框,以确认更改文件关联。我认为这样做的方法是使用具有复选框的对话框。

我可以右键单击 UI 节点,然后选择“添加对话框”,我得到了这个选择:

复选框

这些复选框对话框有什么区别?

我尝试使用 RTFM,但找不到有关这些选项的文档。

0 投票
1 回答
6553 浏览

visual-studio - 在 Visual Studio 安装项目中,如何以复选框对话框为条件更新注册表?

目前,我使用安装项目中的注册表设置来为我的应用程序设置文件关联和关联文件的图标。

注册表设置

在通用的 VS Setup 项目中,注册表的更新总是完成的。如何根据复选框对话框的状态更新注册表?

替代文字

0 投票
8 回答
46773 浏览

visual-studio - 在 Visual Studio 安装项目中,如何生成卸载脚本?

我有一个 Visual Studio 安装项目。安装后,它会在应用程序文件夹中创建一个卸载批处理文件。如果用户想卸载产品,他可以去“添加/删除程序”,或者他可以直接双击卸载.cmd。内容是:

那里的 GUID 是 Visual Studio 中安装项目的 ProductCode。

产品代码

但是,为了使升级正常工作,我必须在每次生成新的 MSI 时增加版本号。而且,如果我增加版本号,那么我还必须为 ProductCode 生成一个新的 Guid。这意味着静态卸载.cmd 文件需要更改。

如何在构建时动态生成包含 ProductCode 的批处理文件?

0 投票
1 回答
1932 浏览

visual-studio - VS设置项目;如何在卸载时恢复注册表值?

我在 Visual Studio 中有一个安装项目。作为常规安装的一部分,它会在 Windows 注册表中创建/更新一些键和值。如何使更新可逆?

你可能会说“它们是可逆的”,但我不这么认为。以下是我认为它的工作方式:使用 VS 设计器指定所需的注册表项和值。这些键和值在安装过程中写入,在卸载过程中删除。简单的。什么是不可逆的?

当安装期间写入的密钥之一中存在现有值时,问题就出现了。假设它的值为 1。然后在新安装时它的值为 100。卸载后,它根本没有任何值 - 值消失了。


我试图通过“自定义操作”来解决这个问题。

在安装期间,如果用户确认,msiexec 会将值写入注册表。以前在注册表项中的任何内容都消失了。(我们称之为“更新 A”)

为了保留该值,在安装时,有一个自定义操作可以读取并保留“之前”设置。它“更新 A”之前运行。到现在为止还挺好。

卸载时,正常的操作是删除安装期间添加的常规注册表项和值。这工作得很好。将此称为“更新 B”。

要恢复原始注册表值,我还有另一个“自定义操作”。这个在卸载时运行。它成功地将原始值恢复到注册表中。注册表看起来就像原始安装之前一样。我使用ProcMon(一个让我监控注册表更新等的工具)验证了这是否有效。将此称为“更新 C”。

只有一个问题。卸载时,更新 B 发生更新 C 之后。这意味着,在自定义操作恢复原始注册表设置后,msi 会清除恢复的值,就像处理所有其他注册表更新一样。

结果是注册表有空值而不是恢复的值。

有什么帮助吗?如何重新订购更新?我需要Orca吗?我真的不想安装和学习另一个工具来实现这一点。我也希望它是自动的。绝对不希望通过 MSI 编辑器直观地单击来实现这一点。


我可以通过使用WindowsInstaller.Installer类的 Javascript 构建后事件来执行此操作吗? Aaron Stebner 发布了一个脚本,其中添加了“安装后启动应用程序?” Visual Studio 生成的 MSI 对话框。Windows Installer 支持“启动应用程序”功能,但它并未在 VS2008/2005 的设计器中公开。一个快速的 biolerplate 脚本,在 VS 中作为构建后步骤运行,添加到 Launch 对话框中。

自定义操作的排序是否有类似的可能?

0 投票
1 回答
963 浏览

visual-studio - 定义为脚本的自定义操作 - 我可以将其设为“二进制表流”吗?

作为 MSI 项目的一部分,我有几个自定义操作,在 vS2008 中定义。

这些操作被定义为简短的 Javascript。有两种在安装时运行,一种在卸载时运行。一切正常。

这些脚本作为常规文件安装在应用程序文件夹中。在安装期间运行的脚本会在执行结束时自行删除。卸载时运行的脚本位于应用程序目录中,直到需要它为止。

我了解到在 MSI 中有一个叫做“二进制表流”的东西。我不知道它是如何工作的,但显然自定义操作脚本可以存储为二进制表流,这意味着它们不会安装在文件系统中。

我可以在 VS2008 中配置自定义操作脚本以作为二进制表流嵌入到 MSI 中吗?

编辑:我认为二进制表流只是一种说法,有问题的文件存储在 MSI 中名为“二进制”的表中。

如果是这种情况,也许另一个问题是,我可以对 MSI 进行后处理以将脚本从“非二进制表”移动到二进制表吗?

0 投票
1 回答
654 浏览

visual-studio-2008 - 如何为使用 VS2008 安装和部署项目创建的快捷方式获取大的 Vista 图标?

首先,我制作了一个应用程序,并将其应用程序图标设置为我制作的图标。该图标中有 256x256px,它在 windows vista 中运行良好(当图标非常大时使用 256 大小)。

我制作了一个安装项目,安装了我制作的应用程序,并在桌面上添加了一个快捷方式。快捷方式的图标不会变大,最大保持为 +- 48x48。就好像安装项目更改了图标以从中删除大版本。应用程序本身的图标很好,只是快捷方式不是

指向嵌入在应用程序中的图标的快捷方式图标不起作用。指向一个单独的图标文件也不起作用。

如何获得使用正确图标的快捷方式,包括 256 大小的图标?

编辑:一个可编写脚本的解决方案会很棒!