问题标签 [dtf]

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 回答
1404 浏览

wix - WiX 中的 DTF 自定义操作参考不是有效的 WiX 参考

我可以使用 DTF 工具 (IE MakeSfxCA.exe) 很好地构建托管自定义操作
我的构建后事件命令行如下所示:

"%WIX%SDK\MakeSfxCA.exe"
"$(TargetDir)$(TargetName).CA.dll"
"%WIX%SDK\x86\SfxCA.dll"
"$(TargetDir)$(TargetName).dll"
"$(TargetDir)Microsoft.Deployment.WindowsInstaller.dll"

但是,每当我尝试添加对已编译 dll 的引用时,我都会收到一个错误,说明某些内容的效果


如果我使用 Visual Studio(2010 和 2008)将项目添加为参考,我的 WiX 项目会编译但不使用 dll。当我尝试运行 msi 时收到此消息


我的 wxs 文件看起来像这样

我的操作系统是 Windows 7,我使用的是 .net 4.0,这会有所不同,我使用的是每周构建

0 投票
1 回答
1676 浏览

wix - 带有 DTF 的 WiX 自定义操作...非常困惑

好的,我已经决定使用 WiX 做我想做的事情的唯一方法(感谢我没有写的旧安装程序,我现在必须升级)是使用一些自定义操作。

基本上,我需要在 RemoveExistingProducts 之前备份一个文件,并在 RemoveExistingProducts 之后再次恢复该文件。我认为这就是所谓的“类型 2 自定义操作”。

我想我理解的顺序,但是,我不明白的首先是我如何将数据传递给我的 C# 操作(文件所在的目录来自 WiX)以及如何引用我的 C#(DTF?)操作Binary 和 CustomAction 标记。

另外,所有这些都需要在标签中吗?所有的例子都表明了这一点。

这是我到目前为止在 .WXS 文件中的内容...

我需要备份的文件是以前安装的设置文件(需要保持完整),它位于目录中:

甚至有一个组件标签,虽然我需要备份已经存在的文件:

这是引用 Visual Studio (2005) 为我创建的 C# 文件:

非常感谢任何帮助。谢谢!

0 投票
2 回答
1412 浏览

installation - 使用 MSI 编程 API 更新 MSI 表

我需要更新 MSI 文件中的属性列。不幸的是,我找不到任何文档(尤其是 C++)。

这是我正在尝试做的代码片段:

如记录->Modify(...) 所述,抛出 _com_error 说明:IDispatch 错误 #1000?这意味着什么。我在哪里可以查看这些错误代码?这些不是 HRESULT...

但更重要的问题是如何正确更新记录?如何遍历所有选定的记录?执行新的提取并将记录与 NULL 进行比较会导致无限循环。

谢谢你的帮助,
欧文斯

0 投票
1 回答
1738 浏览

c# - WIX c#CustomAction,我做错了什么?

我正在使用 VS2010 和 WIX 3.5。

1)我创建了 WIX 设置项目。

2)然后我添加到解决方案 C# 自定义操作项目并将其命名为“CustomActions”

3) 然后我编译了 CustomActions 项目并从我的安装项目中添加了对它的引用。

4)最后放入 .wxs 文件:

那是行不通的。我究竟做错了什么?请帮我。

0 投票
2 回答
252 浏览

sql-server - 分布式事务是在 Windows Installer 自定义操作中启用数据库升级回滚的好主意吗?

我已经超越了 WiX 中可用的 Sql Server 自定义操作,因此我采取了大胆的步骤,使用部署工具基础创建自己的操作。我想成为一个好公民,并确保我的支持回滚。但是最好的方法是什么?

我需要支持 SQL Server 2005 及更高版本的所有版本。

在我看来,问题在于 Windows Installer 分两个阶段工作:它完成工作,在执行过程中存储撤消信息。然后,当所有部分都到位时,它要么提交(删除撤消信息)要么回滚。

这意味着标准交易无法完成这项工作。它们必须在我的 Execute 自定义操作中完成,而且我以后没有机会回滚它们。

我考虑过对数据库进行仅复制备份,如果需要,我可以在回滚操作中恢复,但我认为这种方法虽然简单,但也有缺点。例如,我不知道我们的数据库会有多大——所以我不能保证目标机器上会有可用空间来保存备份。此外,备份和恢复可能需要一段时间才能完成,而且我不希望典型安装(不​​会发生回滚)过慢。

这让我想到了我目前最喜欢的想法:确保分布式事务协调器已启动,然后在进行更改之前初始化分布式事务,然后在适当的自定义操作中提交或回滚它。

看来我可以使用TransactionInterop类的成员来导出一个 cookie,使我能够在不同的自定义操作之间共享事务。

有这种事情经验的人能说一下它是否有可能奏效吗?

0 投票
1 回答
1031 浏览

c# - WiX 3.5.2030.0 CreateDatabase 使用 DTF 外部 UI 处理程序失败,出现 1603,无需外部 UI 处理程序即可工作

我在 Windows 7 上有一个简单的 WiX (3.5.2030.0) 安装程序(根据 msiexec.exe 的属性,Windows Installer 5.0.7600.16385),它使用提供的自定义操作来创建 SQL 数据库。当我自己运行 MSI 或在 C# 设置引导程序中的事务中运行它(使用 DTF 进行互操作)时,它可以正常工作。

当我在引导程序中运行 MSI 并在外部 UI 处理程序中挂接时(工作中唯一的代码更改是这样的调用:

),但是,CreateDatabase 调用失败。SQL 日志中没有任何相关内容 - 它显示正在启动的数据库。SQL Profiler 中没有任何相关内容 - 它显示 CA 检查数据库的存在,然后在创建失败后尝试删除。以下是调试详细日志显示的内容:

请注意,日志没有显示有用的 SQL 错误代码 - 只是(一如既往地无用)1603 错误(翻译:有些东西坏了)。

外部 UI 处理程序中的挂钩与运行数据库创建有什么关系?

我知道这个问题与我的外部 UI 处理程序代码有关,因为如果我用“返回 MessageResult.None”将它短路,那么一切正常。

我的顶级处理程序代码如下;它基于http://msdn.microsoft.com/en-us/library/aa368786(VS.85).aspx

因为还没有实现完整的 UI,现在只是进度部分,我返回“None”,这样内部 UI 仍然会触发。显然,这需要在生产前进行更改。MessageBox 调用也是如此,在生产代码中可能会有不同的处理方式。

谢谢!

0 投票
2 回答
3356 浏览

.net - 使用 Framework 4.0 编译的 MakeSfxCA.exe 和 DLL

我有一个用 Microsoft .NET Framework 4.0 编译的 dll 文件

当我使用 MakeSfxCA.exe 文件并将 dll 作为参数之一传递给命令行时,它会给我以下错误消息:

任何帮助表示赞赏。

提前致谢。

0 投票
1 回答
91 浏览

wix - DTF:更新存档中的文件而不提取它

我正在使用与 WiX 3.5 捆绑的部署工具基础。有一个包含我想要更新而不必先提取它的文件的存档 - 编辑基于设置期间的用户输入。

如何获取对此文件的引用、执行更新并将更改保存到文件而不需要从存档中提取它?自定义操作是用 C# 编写的。

我正在使用Wix v3.5.2415,它与 DTF 程序集的版本相同。

0 投票
1 回答
1309 浏览

wix - 从 DTF 访问 InstallShield“支持文件”(托管自定义操作)

我在 InstallShield 的“支持文件”视图中放置了一堆 .SQL 脚本。

我想在我的自定义操作中访问这些 SQL 脚本(通过 DTF)。我怎样才能做到这一点?

0 投票
2 回答
1029 浏览

wix - DTF 和 MsiGetProperty

相关:从 DTF 访问 InstallShield“支持文件”(托管自定义操作)

我需要阅读属性SUPPORTDIR。根据这个论坛(http://community.flexerasoftware.com/showthread.php?t=180742&page=3),我需要使用 MsiGetProperty。

如何从 DTF 调用 MsiGetProperty?