问题标签 [wix3]
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.
combobox - 如何在安装时在 WiX 中填充 ComboBox?
编辑:由于 Rob 的回答,我已经更新了下面的代码,现在它可以工作了。
我找到了几个页面来展示如何做到这一点(http://www.cmcrossroads.com/content/view/13160/120/,http://www.mail-archive.com/wix-users@ lists.sourceforge.net/msg05103.html)并查看了 WAI 的源代码(http://wai.codeplex.com/),但无论我尝试什么,我似乎都无法让它在我的安装程序中工作. 如果有人能发现我做错了什么,我将不胜感激。我的对话 WiX 片段如下所示:
我的自定义操作代码是:
以前有两个问题:
1) 上面的代码在自定义操作的运行过程中失败,“函数在执行期间失败。数据库:表更新失败。” - 这是因为索引问题导致代码尝试将字符串写入 int 列。
2)如果我换行
至
然后查看跟踪,该操作似乎成功,但是当安装程序运行时,组合框没有可供选择的条目。
如果我将组合框更改为硬编码值,一切正常,即使我对 lWebsiteName 的等价物进行硬编码。
vb6 - WIX 3:对 Visual Basic 6 COM Dll 使用 HEAT
我正在使用 WIX 3。我使用 heat 为 VB6 dll 创建了一个 wxs 文件。msi创建没有任何错误,安装也成功。
一切似乎都很好,我可以从 VB 客户端成功调用该组件。
但是,如果我从 ASP 页面调用该组件,则会得到 0x800401f3。
如果我使用自我注册(regsvr32)而不是安装程序,则两者都可以正常工作。
我做了一个注册表差异来弄清楚自我注册(regsvr32)和安装程序之间有什么区别,我看到了以下内容
- HKCR 中的所有条目都匹配 - 在这里都很好
- regsvr32 在 HKLM 中添加条目,而安装程序不接触 HKLM
我想知道这是否是问题所在,还是我完全走错了路。
MSDN(http://msdn.microsoft.com/en-us/library/ms694355(VS.85).aspx)提到 HKLM 中需要注册表项,想知道我在这里缺少什么。
以下是 heat 创建的文件。
更新:使用文件的“SelfReg”选项使 ASP 客户端也能正常工作。我从其他帖子中读到,这是不可以使用的。有人能告诉我该怎么做吗?
wix - 在 wix 中更改我的组件 GUID?
我应该何时更改或不更改 WIX 中的组件 GUID? Microsoft SDK 信息令人困惑。
Glytzhkof 编辑:为了澄清,问题涉及何时应为 MSI 组件更改组件 GUID。组件可以随以下方面发生变化:更改目标路径,向/从同一组件添加或删除文件,添加注册表数据等......这会导致所谓的组件引用问题,即最佳实践在 MSI 中创建组件。
windows-xp - 卸载正在使用的共享程序集使 WinSxs 处于错误状态
我在 WinXP 上使用 Wix3 卸载共享的 win32 SxS 程序集时遇到问题。我的 wix 文件看起来很像http://n2.nabble.com/Tutorial-How-to-install-files-into-WinSxS-td841475.html中描述的文件。
问题是,如果程序集中的模块正在使用中,卸载程序会以成功错误代码完成,但程序集处于损坏状态:清单和安全目录已被删除,但程序集目录仍然存在,其中包含我的 dll . DLL 在重新启动后仍然存在,因此不会以任何方式标记为删除。MSI 日志文件中没有明显的错误。
如果我尝试重新安装软件包,它会跳过程序集的安装。这些组件不再注册,所以我无法让安装程序再次尝试卸载。以下显示在后续安装的 msi 日志中:
MSI (c) (98:44) [11:46:56:263]:跳过装配组件的安装:{26A273E7-7F9A-4F77-9FA8-5E413A155BEC},因为装配已经存在
除了手动删除我的程序集目录之外,我找不到将 SxS 恢复到良好状态的方法,此时该目录不再受 XP 系统还原的保护。
虽然我的实际安装程序要复杂得多,但我已经能够使用一个非常基本的安装程序来重现它,该安装程序具有包含单个组件的单个功能。该组件包含一个 dll、一个清单和一个安全目录。dlls <File> 元素设置了 KeyPath、Assembly 和 AssemblyManifest 属性。安装后,我可以通过在 MSVS 中打开 DLL 来模拟加载程序集的过程。
我应该在卸载时调用额外的操作来检测和防止这种情况吗?或者,即使 WinSXS 中已经存在 DLL,是否有强制执行安装操作的方法?
有点相关,如果我尝试升级安装了该程序集的软件包,如果程序集没有更改,我也会遇到问题。安装程序决定它不需要重新安装程序集(因为它没有更改),但是当 SxsUninstallCA 运行时,它会继续并删除程序集。从安装程序的角度来看,组件仍然安装,但文件已消失。
windows - 动态创建 WIX 文件,无需手动编辑 wix 文件
假设您发布了软件的下一个版本,您将不得不手动更新您的 WIX 文件以删除过时的文件并添加新文件等。
我的用例就像“在用户目标 C:\Program Files\MyApp 中递归添加 /sample/path 下的文件”一样简单。
有没有这样的自动化程序?
wix - 如何根据 WIX 中的属性动态设置文件源?
我们有四个区域(dev、test、qa、prod),它们都需要特定于环境的配置文件。我正在尝试开发一个 WIX 安装,它将接受来自 msiexec 命令行的属性分配并动态设置配置文件的文件源。我已经尝试了几乎所有内容并阅读了每一页,但我似乎无法让它发挥作用。这似乎是一个微不足道的问题。
wix - Wix 中的组件 GUID
我有一个 .net dll,由我的 2 个应用程序、客户端和服务器共享。
当用户选择安装时,我不知道文件将安装在哪里,他可能只安装客户端或同时安装客户端和服务器。
我在服务器和客户端 wix 上都有组件,它只包含共享程序集。
我应该为他们两个设置相同的 GUID 吗?在同一路径上安装服务器和客户端是否会以任何方式影响安装?服务器和客户端可能需要不同的程序集版本,但文件名相同。
wix - Wix:将模块与多个 wxs 文件合并
所以,我正在尝试创建一个合并模块,其中有多个 wxs 文件。自从我的项目构建成功以来,我认为一切都很好。后来,我意识到其中一个二级 wxs 文件的 Source 属性中使用的路径完全错误,但编译器没有给出以下错误:
系统找不到文件'..\..\release_area\WrongPath\Component2.dll'。
在辅助 wxs 文件中,我添加了一个DirectoryRef元素,该元素引用主 wxs 文件中的文件夹AssemblyFolder以创建两个文件之间的引用。
主 wxs 文件:
辅助 wxs 文件:
只是为了澄清:为了测试,我<Component Id="Component2.dll">
直接在主 wxs 中复制了我的错误:系统找不到文件 '..\..\release_area\WrongPath\Component2.dll'。
所以,我的猜测是辅助 wxs 文件和主 wxs 文件之间的引用是完全错误的,这就是编译器不验证文件路径但我无法弄清楚问题所在的原因。
wix - 用于安装网站的 Wix UI
任何人都有用于安装 ASP.Net 网站的 WiX UI 序列?要求虚拟目录和类似于 Visual Studio 安装项目的应用名称的东西?