问题标签 [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.
visual-studio - 如何根据版本生成 MSI 包名称?
在 Visual Studio 安装项目中,有没有办法根据当前应用程序版本号自动生成 MSI 文件名?
visual-studio - Visual Studio 安装项目未能将密钥添加到注册表
我正在 Visual Studio 2008 中创建一个安装包来注册一个 COM 组件,其中一项操作是向注册表添加一些键。
奇怪的是,当我运行安装程序时,它会正确创建密钥层次结构,但是它创建的层次结构中的最后一个密钥具有错误的 GUID ...而它在安装程序中的权利...有没有人遇到过这个或有任何关于出了什么问题的建议?
谢谢
visual-studio-2005 - 如何告诉 MSI 不要在 VS2005 的设置和部署项目中覆盖现有文件?
我在 VS2005 中有一个安装和部署项目。我正在安装的文件之一是 SQLite 数据文件。
我即将发布该软件的新版本,但我发现如果我在现有安装上运行更新,它会覆盖数据文件。
我在安装项目中有一个更新的数据文件,所以它比已经安装的更新,但我不想覆盖它。
我尝试将该文件的永久属性设置为 True,但无济于事。
有什么建议么?
deployment - 使用安装项目部署 SQL compact Edition(SDF 文件)
我有一个使用 SQL Compact 版本作为数据存储的 C#.NET 桌面应用程序。该应用程序应由机器上的任何用户使用,并且所有人都应该看到相同的数据(每个用户的数据不应不同)。
我想知道我应该在哪里部署 SDF 文件?
- 用户的个人数据文件夹(我的文档)意味着每个用户将拥有一个单独的数据库。
- 部署在与应用程序相同的文件夹会导致 vista 将文件复制到 \USers\Appdata\local\VirtualStore\ 并且似乎为每个用户制作不同的副本。
最好在哪里部署 SDF 文件以确保所有用户都在查看相同的数据?
visual-studio - 在 Visual Studio 安装项目中,如何生成卸载脚本?
我有一个 Visual Studio 安装项目。安装后,它会在应用程序文件夹中创建一个卸载批处理文件。如果用户想卸载产品,他可以去“添加/删除程序”,或者他可以直接双击卸载.cmd。内容是:
那里的 GUID 是 Visual Studio 中安装项目的 ProductCode。
但是,为了使升级正常工作,我必须在每次生成新的 MSI 时增加版本号。而且,如果我增加版本号,那么我还必须为 ProductCode 生成一个新的 Guid。这意味着静态卸载.cmd 文件需要更改。
如何在构建时动态生成包含 ProductCode 的批处理文件?
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 对话框中。
自定义操作的排序是否有类似的可能?
visual-studio - 定义为脚本的自定义操作 - 我可以将其设为“二进制表流”吗?
作为 MSI 项目的一部分,我有几个自定义操作,在 vS2008 中定义。
这些操作被定义为简短的 Javascript。有两种在安装时运行,一种在卸载时运行。一切正常。
这些脚本作为常规文件安装在应用程序文件夹中。在安装期间运行的脚本会在执行结束时自行删除。卸载时运行的脚本位于应用程序目录中,直到需要它为止。
我了解到在 MSI 中有一个叫做“二进制表流”的东西。我不知道它是如何工作的,但显然自定义操作脚本可以存储为二进制表流,这意味着它们不会安装在文件系统中。
我可以在 VS2008 中配置自定义操作脚本以作为二进制表流嵌入到 MSI 中吗?
编辑:我认为二进制表流只是一种说法,有问题的文件存储在 MSI 中名为“二进制”的表中。
如果是这种情况,也许另一个问题是,我可以对 MSI 进行后处理以将脚本从“非二进制表”移动到二进制表吗?
visual-studio-2008 - 如何为使用 VS2008 安装和部署项目创建的快捷方式获取大的 Vista 图标?
首先,我制作了一个应用程序,并将其应用程序图标设置为我制作的图标。该图标中有 256x256px,它在 windows vista 中运行良好(当图标非常大时使用 256 大小)。
我制作了一个安装项目,安装了我制作的应用程序,并在桌面上添加了一个快捷方式。快捷方式的图标不会变大,最大保持为 +- 48x48。就好像安装项目更改了图标以从中删除大版本。应用程序本身的图标很好,只是快捷方式不是
指向嵌入在应用程序中的图标的快捷方式图标不起作用。指向一个单独的图标文件也不起作用。
如何获得使用正确图标的快捷方式,包括 256 大小的图标?
编辑:一个可编写脚本的解决方案会很棒!