问题标签 [votive]
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.
msbuild - WIX 3.5 在 NAnt 下失败,但在 VS2010 下失败
我知道这是一个常见问题,但我在论坛中可以找到的所有内容似乎都与 64 位框架不兼容有关(在我的情况下这不是问题)。
我有一组使用 Votive 开发的简单 WIX 3.5 安装程序,我可以在 VS2010 中愉快地编译,但是当我尝试在 TeamCity(即 TeamCity -> Nant -> MSBuild -> WIX)上通过 NAnt(和 MSBuild)编译它们时,我得到了以下错误:
有任何想法吗?
c# - 通过 WiX 使用的 C# 中的自定义操作失败并出现错误 1154
我在 Visual Studio 2010 中使用 WiX 3.5.1930,目标是 .NET Framework 3.5。(就其自定义操作模板而言,最近每周构建的 WiX 似乎非常糟糕,至少目前如此。1930 是最近的构建,它似乎使可构建的 C# CA 具有工作参考。)
我有两个用 C# 编写的自定义操作程序集。其中一个工作正常。另一个失败并出现以下错误:
我已经比较了 .csproj 文件和 .wixproj 文件,并且尽我所能判断差异是否合适(例如包含的 .cs 文件列表)。我已将非工作 .wxs 更改为调用工作自定义操作而不是非工作自定义操作,并且它的工作方式与预期一样。
我还能看到什么来让这个工作?
编辑:为了完整起见,1154 指的是无效的 DLL - net helpmsg 将其(英文)翻译为“运行此应用程序所需的库文件之一已损坏”。
第二次编辑:对 dll 运行 peverify(在安装程序运行时从 \windows\installer 中获取了一个副本),它说 dll 中的一切都很好。DLL 仅具有“返回成功”的自定义操作方法,因此没有太多需要验证的内容,但它确实确认 DLL 没有损坏。
第三次编辑:损坏的自定义操作中的代码如下:
没什么。.wxs的相关部分如下:
security - Two almost identical WIX projects - one works fine, the other fails with security issue
I have WIX installers for two windows services. Both are installed using the same credentials, but one works while the other fails with the error "Service "PCP Event Processor-3.9.9.0-wix' (MyServiceExeName) could not be installed. Verify that you have sufficient privileges to install system services.". I use a common wxi file for both projects with the credentials to use, so it's not an account name or domain name typo AFAICS. The only substantial differences between the two services being installed are:
- The failing project has a .licx file for the 3rd party component.
- the failing project is a WinExe project. The successful install is an Exe (Console style app)
As far as I can see, there is no real difference (obviously GUIDs are different) between the wxs files for the two installers. The failing component has WIX installer code like this:
I'm using Wix 3.5 with Votive in VS 2010, and both projects are .NET 3.5 SP1 apps. I'm using Windows 7, with UAC turned off.
Any ideas?
wix - 是否可以使用 .wxl 文件在 WiX 中本地化 EULA?
我使用 WiX 创建的安装程序是通过 .wxl 文件本地化的。在 WiX 中可以指定多种文化,并且 light.exe 将被多次调用,为每种语言创建一个安装程序(这在从 Visual Studio 构建安装程序时可用)。
除 EULA 外的所有作品文件。它是在 .wxs 文件中定义的
而且我不知道从 .wxl 本地化文件中更改此值的好方法。使用
不工作,sice .wxl 文件在链接时使用, .wxs 在它们之前编译,所以编译器找不到!(loc.EulaFile)
. 搜索论坛我发现了两种解决方法。首先是为每种语言创建一个自定义许可对话框——这似乎可行,但这是一种非常困难的方法,而且源代码非常臃肿。第二种方法是删除 Visual Studio / Votive 构建并多次调用 light.exe,每次通过 -d 命令行键指定不同的许可证文件。
有什么办法可以解决这个问题并使用本地化的 EULA 文件,以便可以在 VisualStudio + Voltive 中构建项目,而无需复制粘贴大量对话框?本地化安装程序是一个非常常见的问题,所以也许存在一些我不知道的解决方案?
visual-studio-2010 - 如何更改 Wix 3.5 MSI 的语言?
我在 Visual Studio 2010 中使用 Windows Installer XML 3.5 创建了一个安装程序。安装程序本身运行良好,但现在我想将其默认语言从英语 (1033) 更改为德语 (1031)。因此,我将产品标签中的语言属性更改为“1031”,据我所知,这应该可以发挥作用,但没有任何反应。语言还是英文。
我在这里想念什么?
visual-studio-2010 - 自动收获项目时设置 keypath
我正在使用 WiX 的项目参考功能使用 Heat 自动收获一个项目。这特别有用,因为 WiX 安装程序是在本地和 TFS2010 构建服务器上构建的,当它在构建服务器上构建时,输出被重定向到不同的位置,这意味着如果我不自动收获项目,它会得到试图为最近编译的项目引用正确的位置非常混乱。
我有以下 WiX“代码”来安装和启动服务:
到目前为止,一切都很好......当安装程序尝试安装和启动 Windows 服务但显示“服务'MyServiceName'(MyServiceName) 无法启动。验证您是否有足够的权限来启动系统服务”时,我遇到了问题。如果我选择“忽略”按钮,则安装“成功”完成,但是当我检查我机器上安装的服务时,新服务没有列出。
根据我的在线调查,我认为问题在于该服务实际上没有正确安装,因为我需要将 KeyPath 设置为应该作为服务运行的可执行文件,但是由于我正在使用 Heat 收集文件,所以我找不到这样做的方法...除非我创建一个自定义操作,该操作将为我安装服务,允许我在安装所有文件后指定可执行文件名称...但这听起来不像应该是正确的解决方案...
有没有人有任何建议或者他们遇到过同样的问题并提出解决方案?
谢谢
2010 年 7 月 10 日更新:在我的 WiX 脚本中,我有以下内容:
我收获的文件的目标目录是 INSTALLLOCATION 目录。
查看使用 Orca 的 msi,我可以看到我的 ServiceComponent 以及为每个收获文件生成的所有组件。查看文件表,没有与此组件关联的文件(因为它们为每个文件生成了一个组件......)。查看 ServiceInstall 表,它尝试安装的组件是 ServiceComponent。
所以我认为我需要以某种方式让 ServiceInstall 元素位于为服务 exe 生成的组件内,以便将此组件安装为服务而不是空的“ServiceComponent”组件?但是由于这个组件是在构建时由热量生成的,所以我没有设法取得任何进一步的进展......
wix - 作为安装过程的一部分,如何让 WiX 调用 .NET 程序集中的方法?
我正在迁移一些现有产品以使用 WiX 3.5(我正在使用 Votive VS 集成)。我正在安装的一些项目需要在第三方框架中注册。要求是我必须在第三方 .NET 程序集中调用 Register() 方法,以通知它我正在安装的项目的存在。它需要一个 COM ProgID。
我不知道如何让 WiX 做到这一点。我考虑过创建一个二进制自定义操作,但我找不到将参数(包含 ProgID 的字符串)传递到该自定义操作的方法。我不想硬编码它,因为我需要它是可重用的代码。我看不到以声明方式执行此操作的方法,因为 Register() 函数是一个“黑匣子”。
伙计,这是一个陡峭的学习曲线。我在这里最好的方法是什么?
msbuild - 让 Wix Votive 注册 COM 对象
我正在使用 Wix 3.5 Votive(Visual Studio 集成)为一些 COM 对象编写安装程序。
在 Votive 中,设置项目引用会从该项目中提取二进制文件,并在编译时自动生成 Wix 源。这绝对很棒,它是 DRY,意味着我不必经常更新 Wix XML。Votive 生成的片段如下所示:
它对我没有使用的源文件、文档和卫星执行相同的操作。但是,它没有为 COM 注册生成注册表实体(程序集标记为“COM Visible”和“Register for COM Interop”,但 Votive 似乎没有处理该问题的机制。
在幕后,Votive 正在调用 Heat.exe 来收集所有这些东西,并在程序集上调用 Heat 会吐出一个包含一堆<Class .../>
和<RegistryValue .../>
条目的文件,这正是进行 COM 注册所需要的。果然,Heat 可以生成这些东西,只需执行一次并将输出编辑到 Wix 项目中就可以了。但是,这违反了 DRY 原则,需要手动使 Wix 项目与源代码保持同步。出于有点切题的原因,我希望在每次构建解决方案时让 Votive/MSBuild 自动执行此操作。
无论如何,我都不是 MSBuild 专家,而且我正处于使用 Wix、Votive 和 MSBuild 的巨大学习曲线上。我花了好几天才走到这一步。所以,我的问题是:有没有一种简单的方法让 Votive/MSBuild 在每次构建解决方案时生成这个 COM 注册内容?我预计对于每个引用的项目,如果设置了“注册 COM 互操作”选项,那么 Votive/MSBuild 将为该项目的输出程序集生成 COM 注册内容。有没有人做到这一点,如果是这样,请在我的大脑变成果冻之前帮我一把!
wix - 使用还愿时如何将额外的 WXS 文件传递给蜡烛?
使用 Votive 从 Visual Studio 构建 WIXLIB 时,如何指定在何处查找不属于 Visual Studio 项目(也不属于引用项目)的其他 WXS 文件?
我不想将 WXS 文件添加到项目中,因为它们是heat.exe
在构建过程中更新的,因此需要保持可编辑状态(即,它们不能与项目的其余部分一起添加到源代码控制中)。
visual-studio - Visual Studio WiX 和补丁
我试图用 Visual Studio 构建一个 WiX 补丁。很容易。我用 Visual Studio 构建,它构建。但是,当我尝试运行生成的MSI时,我被告知
无法打开此安装包。请与应用程序供应商联系以验证这是一个有效的 Windows Installer 程序包。
理想情况下,我会创建一个小得多的 msp 路径文件,但为了简单起见,我可以使用 MSI 文件。如何使用 Visual Studio 执行此操作,或者,我是否需要下拉到命令行并使用candle.exe、light.exe、torch.exe 和 pyro.exe?
WiX 代码如下所示: