问题标签 [wix3.11]

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 投票
2 回答
11441 浏览

c# - 使用 WIX 安装程序安装 .NET Framework 4.7.2(如果需要)

帮助!我继承了一个带有 WIX 安装程序项目的 .NET 项目。他们隐含地假设每台机器上都安装了 .NET Framework 4.5,这在很大程度上是正确的。现在我们正在添加一些需要 .NET Framework 4.7.2 的功能。我想修改安装集以检查是否存在 4.7.2(或更高版本)并在必要时通过 Web 安装。我发现一些文档部分回答了我的问题,但我仍然很困惑如何开始以及如何填写细节。是否有任何完整的演示或说明可用?我的理解是我需要添加一个“BootStrapper”项目。我' 如果我随后从我的主安装(我现有的安装)中添加/引用 BootStrapper 项目,或者如果我将主安装引用为 Bootstrapper 项目的一部分(通过 MsiPackage 元素),我会感到困惑。另外,如何设置检查 4.7.2?我找到的所有引用都是针对 4.5 或更早版本的,显然注册表中用于检查的位置已更改:

如何检测安装了哪些 .NET Framework 版本和服务包?

假设我在 Bootstrapper 中引用了我的主要安装,我该怎么做?

这些是我为感兴趣的人找到的链接。他们都暗示了答案,但没有给出完整的答案和/或已经过时了。

http://wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/install_dotnet.html

https://www.firegiant.com/wix/tutorial/net-and-net/bootstrapping/

https://wix.ronifuchs.com/

最后,我相信我使用的是 WIX Toolset v3.11。这是文件夹指示的内容(C:\Program Files (x86)\WiX Toolset v3.11)

我提到这一点是因为一些参考资料是指 Wix 4.0(例如:http://wixtoolset.org/releases/" />)

谢谢!

0 投票
1 回答
134 浏览

wix - 如何在更新期间保留任务栏快捷方式?

我有以下情况。

我的产品将二进制文件安装在内部c:\Program Files (x86)\MyCompany\MyApp\,并在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MyCompany.

我使用这个很好的例子构建了 msi:https ://helgeklein.com/blog/2014/09/real-world-example-wix-msi-application-installer/

我刚刚添加了以下代码

问题如下

  • 我第一次安装应用程序,它会安装快捷方式就好了
  • 现在我启动应用程序并选择Pin to taskbar, this will create a shortcut inC:\Users\\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar`
  • 如果我重建 msi 并再次执行设置,任务栏快捷方式不再可点击,因为C:\Users\<user>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar缺少快捷方式

是否可以在更新期间维护任务栏快捷方式?

0 投票
1 回答
834 浏览

c# - .NET Framework 安装后需要 WIX Bootstrapper 重新启动并跳过应用程序启动

感谢安德烈在这里的回答:

使用 WIX 安装程序安装 .NET Framework 4.7.2(如果需要)

我检查是否安装了 .NETFramework 4.7.2 并安装它。不过,我还有一个小问题……我的主应用程序有一个安装后操作来启动该应用程序。在安装 4.7.2 并且系统重新启动之前,无法启动该应用程序。我可以简单地从我的应用程序安装程序中删除此安装后操作代码,但如果它确实启动了应用程序,如果 4.7.2 已经安装并且没有理由重新启动,那就太好了。

如何从我的应用程序安装程序“查看”我的 Bootstrapper 项目并查看是否刚刚安装了 .NET Framework?然后我可以有条件地运行安装后操作。如果刚刚安装了 4.7.2,我相信它会提示要求重新启动,这是完美的。

欢迎提出其他解决问题的方法的建议。我想另一种处理方式是在 .NET 安装后强制重启,并在重启后安装我的应用程序。但我认为最好安装所有内容然后重新启动。我认为这是一个非常普遍的问题,但我没有找到任何解决它的方法。也许问题太简单了!我是 WIX 新手,不清楚如何将变量和信息从一个项目共享到另一个项目。特别是从主应用程序安装程序获取引导程序信息。让我知道我是否可以提供澄清或更详细的信息。
谢谢!

安装后操作如下所示:

跟进:如果安装 4.7.2 所需的重新启动自动发生,而不是提示用户,那也很好。有没有办法做到这一点,或者是硬编码到 4.7.2 中。网络安装程序?

0 投票
0 回答
32 浏览

wix - XmlFile(即 App.config)在修复时重置

我们在应用程序中使用具有默认设置的 XML 配置文件。用户可以更改 UI 中的设置,但这些设置存储在安装程序所关心的任何内容之外的另一个 XML 配置文件中。

在安装过程中,无论是通过安装程序 UI 还是通过 MST 进行无人值守安装,都会收集设置值,然后使用 util:XmlFile 元素将其写入默认设置 XML 文件。

我们遇到的问题是在修复过程中,这些更改会丢失,并且默认设置都设置为空值。我们目前不愿意替换我们存储应用程序设置的方式,因此请不要建议其他方式来存储它们,例如 INI 文件、注册表等。

我们如何在维修期间保留更改?至少,我希望修复不会影响 XML 文件(如果它已经存在),但如果它丢失(即使它是空值)仍将其放回原处。最理想的情况是,修复应该做它应该做的事情,并将一切恢复到初始安装后的状态。

0 投票
1 回答
45 浏览

wix - 不需要 UAC 提升

我有一个可以按用户和每台机器安装的 wix 设置。

我使用WixUI_Advanced对话框在 perUser 和 perMachine 之间进行选择。

但是,即使作为用户,设置最终也会请求 UAC 权限,我不知道为什么。

我通过设置验证InstallPrivileges="limited"了设置运行良好。

有没有办法InstallPrivileges根据用户选择有条件地设置?

0 投票
0 回答
123 浏览

wix - 如果出现 Windows Installer 错误 1704,如何停止基于 WiX 的静默安装

我有一个基于 WiX 的安装程序,用于代理被推送到远程机器并静默运行。在一台特定的机器上,我收到错误 1704,因为 .NET Framework 4.5.2 的安装已暂停:

我的安装程序对 .NET Framework 不执行任何操作,只是在安装条件下检查它是否存在。但是由于安装程序是静默运行的,它会在遇到此错误后继续运行,这通常是向用户显示的消息框。这导致 .NET Framework 4.5.2 被回滚(有效地卸载它)并破坏了各种事情。

如果遇到错误 1704(或任何特定错误),是否有中止安装的方法?

编辑:MSIEXEC.exe 的完整命令行如下:MSI (s) (BC:38) [17:25:21:859]: 命令行: FORCESILENTUI=1 REBOOT=ReallySuppress ALLUSERS=1 MSIRESTARTMANAGERCONTROL=Disable STAGINGPATH= C:\windows\Temp CURRENTDIRECTORY=C:\windows\system32 CLIENTUILEVEL=3 CLIENTPROCESSID=5540

0 投票
1 回答
102 浏览

wix - Wix 工具集 - 使用计算机名称和 IIS Web 应用程序别名的 URL 快捷方式

所以,我一直在尝试 Wix 工具集并偶然发现了一个问题。

如何使用计算机名称和 IIS Web 应用程序别名和/或端口添加 url 快捷方式?

例如:

或者

或者

我知道如何将 URL 快捷方式添加到桌面,但问题是我要使用的 URL。我已经尝试<Property Id="APPURL" Value="http://[ComputerName]/myapp" />并使用APPURL作为Target快捷方式的值,但安装程序回滚 - 它不会继续安装,所以我假设它是错误的。

注意:我已经尝试过对 URL 进行编码,它工作得很好。

有任何想法吗?谢谢

0 投票
1 回答
1276 浏览

wix - Wix 自定义操作 - 会话为空且延迟操作出错

我正在使用带有 VS2017 扩展的 Wix 3.11.1。我在自定义对话上设置控件的属性,然后尝试立即执行自定义操作。当我尝试阅读会话时,它总是空的。

按照建议,我将操作更改为不同的执行,并使用立即操作来设置我的属性。当我运行我的安装程序时,我收到错误:“调试:错误 2896:执行操作 [ActionName] 失败。”

在 CustomDialog.wxs

在 Product.wxs

在 CustomActions.cs

当自定义操作仅包含日志记录语句但添加任何其他代码使其失败时,它会起作用。此外,会话始终为空。

在安装程序日志中:

MSI (c) (88:34) [16:30:21:255]:调用远程自定义操作。DLL:C:\Users\Andre\AppData\Local\Temp\MSIF1A3.tmp,入口点:SaveUserInfo

MSI (c) (88:F8) [16:30:21:256]:启用隐形。

MSI (c) (88:F8) [16:30:21:256]:尝试在调用服务器上安装之前启用所有禁用的权限

MSI (c) (88:F8) [16:30:21:256]:连接到 CA 接口的服务。

操作于 16:30:41 结束:RegistrationInfoCustomAction。返回值 3。

调试:错误 2896:执行操作 RegistrationInfoCustomAction 失败。

安装程序在安装此软件包时遇到意外错误。这可能表明此软件包有问题。错误代码是 2896。参数是:RegistrationInfoCustomAction,,操作结束 16:30:41:SetupDialog。返回值 3. MSI (c) (88:8C) [16:30:41:911]: Doing action: FatalError

0 投票
2 回答
158 浏览

wix - WIX 在 x86/x64 输出目录中找不到 app.exe

我有一个 C# 应用程序,它的构建目标是 x86 或 x64。构建输出是(例如)ProjectDir/bin/x86|x64/Debug|Release/*

在我的*.wxs文件中,我定义了以下变量

<?define AppTargetPath = "$(var.MyApp.TargetPath)" ?>

这指向ProjectDir/bin/Debug|Release/app.exe

如果我构建安装程序,它会失败,因为它找不到我的应用程序 exe

<File Id="AppExe" Source="$(var.AppTargetPath)" KeyPath="yes"/>

如果我查看使用项目引用和变量站点(http://wixtoolset.org/documentation/manual/v3/votive/votive_project_references.html),我找不到另一个变量。

0 投票
1 回答
223 浏览

wix - 如何在合并模块中将文件安装到公共文档?

我需要从我的合并模块将一些文件安装到公共文档。我正在尝试使用 WIX_DIR_COMMON_DOCUMENTS 属性,但所有文件都安装到 Program Files。

这是我的合并模块源代码:

这是我的安装项目源代码:

为什么 WIX_DIR_COMMON_DOCUMENTS 在合并模块中不起作用?