问题标签 [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 投票
1 回答
198 浏览

wix - Wix ProgressDlg 未正确显示状态信息

我正在使用Wix为我们的应用程序设置安装程序。我正在使用WixUI_Mondo对话框集。问题是ProgressDlg显示的状态如下:

状态:复制新文件:文件:[1],目录:[9],大小:[6]

我的 wxs 文件中会缺少什么?

谢谢!

PS:我没有在 UI 中自定义任何东西。

0 投票
1 回答
787 浏览

wix - 如何在不重建引用项目的情况下使用 wix 构建 msi?

我有一个创建 MSI 的 wixproj,并引用了一个 csproj。这是在 teamcity 上构建的,有许多构建步骤:

  • NuGet 安装
  • 构建 csproj(默认目标)
  • 在构建的 .exe 上运行 signtool
  • 构建 wixproj(默认目标)
  • 在构建的 .msi 上运行 signtool

msi 已签名,但安装后,.exe 未签名。

对此进行调查,事实证明,使用 wixproj 上的默认目标运行 msbuild 会重建 exe,覆盖已签名的 exe。

我尝试在 wixproj 构建步骤中更改目标,但“Candle”未知,并且“编译”错误并显示“未定义的预处理器变量 '$(var.App.TargetPath)'”

0 投票
1 回答
1126 浏览

powershell - 如何在 WiX 中启动 PowerShell 并正确访问 Windows 注册表?

更新

有趣的是,如果我运行 32 位 powershell 来运行脚本,它会给我同样的错误。看起来 32 位 powershell 无法访问 64 位注册表树?我尝试使用WixQuietExec64但它给出了同样的错误。我还尝试提供 powershell 的完整路径C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe

原帖

我有以下test.ps1脚本:

在普通 PowerShell 窗口中运行脚本会产生以下输出:

所以它有效。现在从 WiX 安装程序启动 PowerShell 并执行脚本,它不会生成相同的结果:

现在,如果我们观察到错误消息,就好像它可以访问树,直到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ExchangeServer\,因为我的脚本将搜索并列出所有版本,所以v15到那时必须可以访问,但是当它试图更深入地得到ItemProperty,它不能。

这让我相信,从 WiX 安装程序启动我的 PowerShell 时,我可能遗漏了一些东西......?

这是我的 wxs 文件中的内容:

以下是我已经尝试或仔细检查过的项目列表:

  • 我尝试了,和 的不同组合-NoProfile,但仍然不行。-ExecutionPolicy ByPass-Version 2.0
  • 我已经在运行安装程序InstallPrivileges="elevated"
  • 我已经在运行CustomActionasExecute="deferred"Impersonate="no"
  • 我试过了AdminImage="yes"
  • 我试过设置<Property Id="MSIUSEREALADMINDETECTION" Value="1" />

任何其他线索将不胜感激。:(

0 投票
0 回答
690 浏览

wix - 如何在 Wix 中有条件地设置安装权限

我正在使用 Wix 3.11 并尝试有条件地设置我的包的安装权限。

我想做的是:

但是,这不起作用。安装时,总是选择具有提升权限的那个。
另外,我尝试在 .wxi 文件中创建一个变量并将其设置为:

.wxi 文件:

.wxs 文件:

但同样的情况再次发生:总是选择提升的特权。
我在非管理员用户的 2 台不同的机器上进行了测试。

我在互联网上没有找到任何解决方案,所以我想知道:是否可以有条件地设置一个包?

谢谢你的时间。

编辑

我找到了AdminUser属性,这似乎正是我所需要的。我相应地更改了我的 wxs 文件以设置 AdminUser:

在阅读安装日志文件时,我注意到在 MSIUSEREALADMINDETECTION 之前设置了 AdminUser,并且设置 MSIUSEREALADMINDETECTION 不会触发 AdminUser 的重置。

我将我的 SetProperties 安排到我能找到的最先操作,即“FindRelatedProducts”,但是 AdminUser 甚至在此之前设置(实际上在 installExecuteSequence 和 installUISequence 之前),我无法首先设置 MSIUSEREALADMINDETECTION。

我相信没有办法确定您是在管理员还是标准会话下运行安装。
如果有人知道解决方案,请随时提出建议。

感谢 Michael 和 Brian 抽出宝贵时间。

0 投票
0 回答
106 浏览

internet-explorer - 无法自动安装来自网站下载的 CAB 文件的额外 .msi 文件

我无法自动安装 CAB 文件中额外的 .msi 文件。我制作了一个 DLL 文件并将其打包成 MSI 文件。此 MSI 文件由 WIX 创建。然后我将此 MSI 文件包装到 CAB 文件中。当用户使用 IE 浏览器下载 cab 文件时,无法安装此 msi。我该如何解决?或者如何使用 WIX 创建 setp.exe 文件。

0 投票
1 回答
31 浏览

wix - 升级触发自定义操作

我有一个用于维护安装的自定义操作:

但是在卸载过程中从原始 MSI 升级期间正在执行此操作。它是 Wix 基础架构中的错误吗?有没有办法控制它?

0 投票
1 回答
243 浏览

mysql - 如何选择使用 Wix Installer 安装(或不安装)某些功能?

我曾经使用 NSIS 为我的产品制作安装程序,但我被告知 Wix 的编码更加简洁和灵活。

不过,我遇到了一个问题,因为在安装过程中,用户可能会决定安装或不安装 MySql。

我该如何设置?

我正在使用一个引导程序,它调用主 MSI 包(使用我的产品和一个对话框进行配置,用户可以设置安装或不安装 MySql)。在同一个引导程序中,我有 MySql 安装程序调用。如何仅在需要时安装?

解释我的文件结构: 我有一个 MySql.wxs 片段,以及带有引导程序的 Bundle.wxs 中的 PackageGroupRef。

0 投票
1 回答
113 浏览

wix - 如何使用标准 WiX 引导程序检测安静安装的结果?

我使用 WiXStandardBootstrapperApplication 创建了一个安装程序。如果我在带有 /quiet 的命令窗口中运行它,命令窗口会立即返回提示符并在后台继续安装,因此我无法使用 ERRORLEVEL 检查安装结果。如何知道安装是否成功?更重要的是,一些将安装推送到许多 PC 的系统管理工具如何知道它是否成功?

0 投票
1 回答
882 浏览

wix - 带有大包装的Wix Bootstrapper

我正在使用 Wix Toolset 3.11 并尝试创建一个 Wix 引导程序,该引导程序正在为我的软件安装一个非常大的先决条件 - 一个遗留的 InstallShield 可执行文件,在 ~600 个文件夹中找到 ~5000 个相关文件。我已将所有这些文件压缩成一个大约 3GB 的自解压存档。尝试构建时出现以下错误:

light.exe(0,0):错误 LGHT0001:算术运算导致溢出。

这是我当前在引导程序中的相关 XML:

我尝试了压缩、缓存、名称等的不同变体,都导致相同的错误。我知道这是由于包含的 exe 文件很大;在此处查看Github 问题

我还看到分离的容器应该有助于解决这个问题。我尝试了几种将容器与我的 PackageGroup 结合使用的组合,但也无济于事。

所以,问题是:我如何在我的安装程序中包含这个非常大的 exe 包,以便我将它安装在包链中,但不将它嵌入到引导数据文件中?

0 投票
1 回答
97 浏览

c#-4.0 - WCF Windows 服务的 WIX 安装程序

我有 WCF 服务,我可以从 WCF 客户端成功构建和测试(从 CMD Installutill 安装)。现在我创建了一个 wix 安装程序项目来为相同的 WCF 服务创建一个 exe。以下是我使用的 WIX 代码:

WIX 输出 exe 包将成功安装(作为 Windows 服务)并自动启动。之后,当我使用相同的 WCF 测试客户端进行测试时,我看不到服务正在运行。