问题标签 [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 回答
8959 浏览

c# - 使用安装项目安装时指定 Windows 服务名称

目标:为了支持在一台机器上可能有多个实例的 Windows 服务,使用安装项目来创建一个 MSI,它能够:

  1. 接收服务名称的用户输入
  2. 安装服务
  3. 从 1 开始序列化服务名称(以便在记录和卸载时可以使用正确的名称)

我最初的希望是在 App.config 中设置服务名称(然后在实例化 ServiceInstaller 时在卸载期间检索它。这似乎很天真,因为在安装期间无法访问它。

如果 MyInstaller 扩展了 Installer,它可以调用 base.Install(); 但是,我尝试写入 app.config(在 MyInstaller.Install() 内和 base.Install() 之后)是无效的。

因此,虽然可以使用自定义服务名称安装服务,但该名称不会序列化,并且安装程序在卸载时最不满意。

这应该怎么做?

0 投票
2 回答
700 浏览

visual-studio-2008 - 安装程序仅在 x64 系统上安装到 root

我使用 Visual Studio 2008 创建的 MSI 安装程序拒绝将应用程序安装在指定目录中,而只会将应用程序安装在根目录中。如果我采用相同的 MSI 并在 x86 系统上安装,安装程序会将应用程序安装在指定的目录中。

我正在 Server 2008 和 Win7 RC x64 (Hyper-V) 上开发应用程序和 MSI。我在任一开发平台上都看到了相同的结果。

提前致谢!

0 投票
2 回答
22901 浏览

c# - 在安装项目中包含文件夹

我想在安装项目中包含一个文件夹,这样当我部署该安装程序时,完整的文件夹也会部署到安装位置。

0 投票
1 回答
88 浏览

c# - Windows 服务未显示在服务列表中

我必须在 .NET 1.1 中创建服务并使用安装项目安装该服务。我成功安装了该服务,但它没有出现在服务列表中。

0 投票
1 回答
779 浏览

windows-installer - 设置项目 RemovePreviousVersions 时间问题

我有一个安装在客户端 v.8.0 上的应用程序。我制作了一个新版本 9.0,想使用 RemovePreviousVersions 删除旧版本并安装新版本。我在 v.8.0 中设置了自定义操作,以清除在使用应用程序时创建的所有目录。在我的 v.9.0 中,我有一个自定义操作,将目录从要安装的 CD 复制到安装目录。调用自定义操作以删除 v.8.0 并安装 v.9.0 时似乎存在时间问题。我可以看到为 v.9.0 中的自定义操作复制了所有目录,然后当 v.8.0 的卸载自定义操作运行时,我可以看到它们被删除。在尝试安装新版本之前,RemovePreviousVersions 不应该删除旧版本吗?这是一个错误还是我做错了什么。

0 投票
1 回答
4044 浏览

c# - 在安装期间强制覆盖 App.config

目前,我们的客户端软件有 4 个安装程序:

  • 客户端设置测试
  • ClientSetupProduction
  • 客户端更新测试
  • 客户更新生产

它们之间的唯一区别是安装程序包含 Crystal Reports 可再发行文件,而更新不包含。测试和生产只是指定它们在哪个环境中运行,唯一的区别是 Client.exe.config 文件中的一行。

愚蠢,我知道,这就是为什么我在摆脱 Crystal Reports 后用一个安装程序替换了它们。新安装程序将选定的环境写入 setup.config,文件属性引用该文件(参见此处)。

“file”属性对于这个新安装程序的配置文件来说是新的。我遇到的问题是,如果我们在旧安装上修改 Client.exe.config 文件,然后运行新安装程序,则配置文件永远不会使用“file”属性更新。

有没有办法强制它更新文件?RemovePreviousVersions 并不完全有效,因为它是一个不同的安装程序,除非我误解了一些东西。我目前的想法(可能会奏效)是在 OnBeforeInstall 方法中添加代码以将旧的 Client.exe.config 重命名为备份文件,因此它总是会写入新的。不过,似乎安装程序本身应该有一个更简单的解决方案。有任何想法吗?

编辑:在调用 base.OnBeforeInstall() 之前将旧配置文件重命名为 Client.exe.config.old 不起作用。它重命名了文件,但从未写入新文件。

0 投票
2 回答
3042 浏览

installation - 在 MSI 中自定义修复选项

我有一个非常基本的 Visual Studio 安装项目,除了一项修改。我有两个不同的库,我想根据用户的选择安装它们。我在文件中添加了一个复选框屏幕和条件。他们可以安装任何一个组件或两个组件。这一切都很好。

现在满足我的要求。假设用户安装了 MSI 并且只选择了一个组件。现在,他们需要从同一个 MSI 安装第二个组件。如果他们再次运行 MSI,我可以选择修复或删除。修复只会修复最初安装的组件。如何通过再次显示复选框屏幕为他们提供安装其他组件的选项?

如果此功能在 VS 设置项目中不可用,是否还有其他功能?也许是 WiX?

0 投票
2 回答
970 浏览

visual-studio - 尝试制作 Windows 安装程序包时 Visual Studio 的奇怪行为

我对 Visual Studio 有严重问题,我正在尝试创建 Windows Installer 包,所以我创建了新的安装项目,但“添加项目输出组”功能不起作用。下拉列表是空的,所以我什么也做不了。有谁知道为什么?

0 投票
2 回答
1911 浏览

visual-studio-2008 - 是否可以根据引用的 DLL 更改 Visual Studio 安装项目中的变量?

当我更改一些产品信息(如版本、产品名称和作者姓名)时,我不想替换每个文件。Visual Studio 安装项目具有常量变量,例如TARGETDIRSystemFolder等。

是否可以根据引用的 DLL 更改设置项目属性?

PS。WiX能做到这一点吗?

0 投票
3 回答
1442 浏览

.net - .NET 安装项目和卸载程序

我为我的应用程序创建了一个 VS 设置项目。它将应用程序安装到用户定义的位置,并在开始菜单中创建多个快捷方式。它还在控制面板/添加或删除程序中创建一个可用于卸载应用程序的条目。

我想知道是否有一种方法可以创建可以卸载我的应用程序的开始菜单条目(在安装程序创建的其他条目旁边)。

到目前为止,我找到了一个解决方案,但使用起来很痛苦:我已经创建uninstall.bat了部署在我的应用程序文件夹中的文件,并且我正在为这个文件添加一个快捷方式。*.bat看起来的内容是这样的:

我不喜欢这个解决方案的是,每次我更新我的应用程序的产品代码时(每当我按照 VS 的建议更新我的应用程序版本时,我都会这样做)我必须在构建设置项目之前手动编辑这个文件并输入正确的新产品代码。

有谁知道将卸载程序添加到应用程序的更简单方法?