问题标签 [windows-installer]

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 投票
8 回答
7641 浏览

windows - 在谷歌浏览器等 AppData 中安装程序有什么好处?

我刚刚注意到在 Vista 和 XP 的 AppData 中都安装了 Chromium。如果谷歌这样做,如果其他应用程序这样做,那是因为有某种形式的保护吗?我们应该编写与 Google 做同样事情的安装程序吗?

0 投票
1 回答
1714 浏览

.net - .MSI 并不总是卸载以前的版本

在许多应用程序中,我们使用 Visual Studio 安装项目创建 MSI 安装程序。在大多数情况下,安装工作正常,但有时没有正确卸载以前的版本。用户最终会在桌面上看到两个图标,并且在“添加/删除程序”列表中,该应用程序出现了两次。我们还没有找到任何模式,并且在大多数情况下,安装程序可以正常工作。

0 投票
3 回答
10360 浏览

wix - 使 WiX 安装集升级到同一个文件夹

如何对使用WiX构建的安装集 (MSI) 进行重大升级,并将其安装到与原始安装相同的文件夹中?

安装被正确检测为升级,但仍显示目录选择屏幕并使用默认值(不一定是当前安装文件夹)。

我是否必须进行手动工作,例如在第一次安装时将安装文件夹保存在注册表项中,然后在升级时读取此注册表项?如果是这样,有什么例子吗?

或者是否有一些更简单的方法可以在MSI或 WiX中实现这一点?

作为参考,我当前的 WiX 文件如下:

0 投票
4 回答
1956 浏览

.net - 您如何从 .Net Installer 类自定义操作中找出 ProductCode

我需要在 Installer.OnCommitted 回调中知道应用程序的 ProductCode。似乎没有一种明显的方法来确定这一点。

0 投票
3 回答
3193 浏览

visual-studio-2008 - 如何让我的 VS2008 x86 安装程序在 x64 上安装 x64 程序集?

我正在使用 VS2008 安装程序(加上自定义 Orca 操作)为我的 .NET 产品创建安装程序。

我最近才发现我使用的第三方程序集之一是特定于 x86 的(因为它包含一些本机代码);因此,x64 客户在启动时遇到了关于程序集不适合他们的平台的错误。

我向这样的客户发送了一份该第三方程序集的 x64 版本的副本,并告诉他只需将其复制到现有的 x86 版本上即可。成功了,甜!所以现在我只需要让安装程序为我做这件事。

这实际上看起来很重要:(。理想情况下,我只希望安装程序(它将是 x86,因为它可以在两个平台上运行)包含此第三方程序集的 x86 和 x64 版本,并安装适当的一个。在换句话说,我想要一个让我的用户生活更轻松的安装程序。

我以为我已经解决了这个问题,使用 MSI 条件语句等等。但显然不是……除非您指定“x86”或“x64”,否则 VS2008 安装项目将无法编译。如果您指定 x86,它会给出一个编译错误,指出它不能包含 x64 程序集。如果指定 x64,则结果无法在 x86 计算机上执行。该死!

以前一定有人遇到过这个问题。不幸的是,谷歌没有帮助,所以我求助于 StackOverflow!

0 投票
1 回答
154 浏览

installation - 安装演示项目 - 最佳实践

使用 Windows Installer(针对 XP 和 Vista),是否有在您的应用程序中安装演示项目和文件的最佳实践?

0 投票
10 回答
14867 浏览

windows-installer - 将 Inno Setup 安装程序包装在 MSI 中以便通过 AD 进行分发是否可行/明智?

我们的安装程序是用 Inno Setup 编写的,我们实际上对此非常满意。然而,一些客户不断要求他们可以更轻松地通过 Active Directory 分发的 MSI 安装程序。/LOADINF通过使用我们自己的选项扩展 Inno Setup 的机制,我们已经竭尽全力使安装程序能够很好地处理自动和无人值守的安装。

为了满足要求 MSI 的客户,我一直在考虑将我们的常规安装程序简单地包装在一个可能使用 WIX 创建的 MSI 中。问题是:我可以保持我们当前安装程序提供的高可配置性吗?在无人值守/大规模安装场景中,我将如何通过外部 MSI 公开 Inno Setup 安装程序的选项?

请注意,我自己还没有真正深入研究 MSI-creation 和 WIX。现在我只对知道他们在说什么的人是否认为这将是一种可行/明智的方法来首先投入我们的精力感兴趣......

[编辑:] 最初我认为我可以使用临时提取和执行方法,即 MSI 将简单地用作将 Inno 安装程序传送到目标 PC 并在/VERYSILENT-mode 下执行它的容器。但我想要求 MSI 的客户也希望能够从中心位置卸载甚至修改安装,我想在那种情况下这是不可能的,对吗?

PS:我们这里也有旧版的 WISE for MSI,但那次经历实际上是我们开始使用 Inno 的原因...

0 投票
6 回答
8905 浏览

wix - .msi 文件能否自行安装(可能通过自定义操作)?

我想构建一个 MSI,在其安装过程中,它将自身连同其包含的文件/组件一起部署到 TargetDir。

因此 MyApp.msi 在其文件表中包含 MyApp.exe 和 MyAppBootstrapperEmpty.exe(没有资源)。

用户启动 MyAppBootstrapperPackaged.exe(包含 MyApp.msi 作为资源,从某处的 Internet 或电子邮件或其他方式获得)。MyAppBootStrapperPackaged.exe 将 MyApp.msi 提取到一个临时文件夹并通过 msiexec.exe 执行它。

msiexec.exe 进程完成后,我想要 MyApp.msi、MyBootstrapperEmpty.exe(以及 %ProgramFiles%\MyApp 文件夹中的 MyApp.exe,以便 MyApp.exe 在运行时可以确保访问 MyApp.msi(用于创建以下 -提到的包装内容)。

MyAppBootstrapper*.exe 可以尝试将 MyApp.msi 复制到 %ProgramFiles%\MyApp 文件夹,但需要提升才能这样做,并且不允许通过 Windows Installer 卸载过程(从添加/删除程序或其他方式)将其删除,这应该保留。

显然(我认为这很明显 - 我错了吗?)我不能将 MSI 作为文件包含在我的媒体/CAB(鸡和蛋场景)中,所以我相信必须在安装之前通过自定义操作来完成过程中,将原始 MSI 添加到 MSI DB 的媒体/CAB 和文件表中的适当条目。这可以做到吗?如果可以,怎么做?

考虑一个内容分发模型,其中内容文件只能与应用程序一起分发。内容由最终用户在运行时通过应用程序生成,并打包成一个可分发的 EXE,其中包括应用程序和内容。

MyApp 的安装程序必须保持为 MSI,但可以由 Bootstrapper EXE 执行。安装的 MyApp.exe 必须同时访问 MyApp.msi 和 EXE 将由应用程序在运行时从基础(空)MyAppBootstrapper.exe(也由 MSI 安装)以及由应用程序创建的内容“组装”最终用户。EXE 的资源 MSI 必须与用于安装正在执行运行时打包的 App 的资源 MSI 相同。

WIX 不能与 MyApp 一起安装。

在运行/打包时不能有网络依赖(即不能通过 Web 服务进行打包 - 必须在本地完成)。

我熟悉(并使用)自定义操作(托管和非托管,通过 DTF 和其他方式)。

0 投票
1 回答
2217 浏览

windows-installer - Displaying the correct size in Windows' Add/Remove Programs

I have a need to manually setup the registry settings for an entry in Window's Add/Remove Programs (for XP and Vista). Everything works except for the displayed size.

According to this 2004 post by Raymond Chen it should be possible by setting the EstimatedSize registry value but it doesn't work. This more recent MSDN page says the EstimatedSize value is "Determined and set by the Windows Installer." Does anyhow know how I can manually set the size value outside the Windows Installer?

(Suggestions to use a single large MSI are appreciated but we have done that in the past and its proven difficult and inflexible. Our current approach is a custom application to manage hundreds of smaller MSI packages, but this means the application itself has to write out the registry settings for Add/Remove Programs.)

0 投票
4 回答
2982 浏览

windows-installer - Windows Installer:如何仅为管理员创建开始菜单快捷方式?

我有一个 WSI 安装程序包,用于安装我的应用程序。应用程序本身可以由普通用户运行,但我有一个只能由系统管理员运行的配置应用程序。因此,我不希望它出现在所有用户的“开始”菜单中,只为管理员显示。

有没有办法告诉 Windows Installer 为所有用户创建一些快捷方式,而另一些只为管理员创建?