问题标签 [custom-action]

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 投票
3 回答
3989 浏览

c# - 自定义列表中的 SharePoint 自定义上下文菜单出现在文件夹上,而不仅仅是文件上

我创建了一个自定义列表,这里是列表模板:

我添加了一个自定义操作:

这个上下文菜单出现在文件和文件夹上,我的上下文菜单是否可以只出现在文件上?

0 投票
4 回答
2331 浏览

c# - 在自定义操作中获取 setup.exe 的位置

C# 2005

我正在使用安装程序类,因为我需要一个将读取 xml 配置文件的自定义操作。

所以当用户双击设置时,在同一个文件夹中会有一个 config.xml 文件。我想在安装事件中阅读此 config.xml 文件。该文件夹将包含 setup.exe 和 config.xml

但是,它无法找到 config.xml 文件,因为它正在 C:\windows\system32 下寻找它。我通过使用 applicationstartup.path 发现了这一点。但是,包含 setup 和 config.xml 的 setup 文件夹位于我的桌面上。

我以为它会在当前位置寻找它。这将是设置文件夹。

困难在于我的安装文件夹将从 Internet 下载,任何用户都可以下载它并将其解压缩到计算机上的任何位置。

这是我安装事件的代码片段。

非常感谢您的任何建议

0 投票
5 回答
24134 浏览

wix - 如何将 msiexec 属性传递给 WiX C# 自定义操作?

我有一个使用 Wxs 3.0 创建的 MSI 文件。我的 MSI 引用了一个 C# 自定义操作,它是使用新的C# Custom Action project编写的。

我想将一个参数传递给 msiexec,该参数被路由到我的自定义操作 - 例如:

msiexec /i MyApp.msi ENVIRONMENT=TEST#

在我的 .wxs 文件中,我指的是这样的自定义操作:

我的 C# 自定义操作设置如下:

我期望能够像这样访问该属性:

字符串 environmentName = session.Property["ENVIRONMENT"];

但这似乎不起作用。

如何访问我在自定义操作中传递给 msiexec 的属性?

0 投票
4 回答
1776 浏览

c++ - msi 安装程序的自定义操作 dll-s 是否必须仅使用 Visual Studio 创建?

我已经用 Visual Studio 创建了安装项目。我还需要一些自定义操作 - 使用 Visual c++ 创建 DLL,它工作得很好,但我不想在我的项目中包含 Visual c++ 运行时文件。那么是否可以使用其他一些 c++ 编译器来构建这个 dll?

我曾尝试使用 Dev-c++ 进行编译,但是在编译时,我从文件 msi.h 和 msiquery.h 中得到几百个编译错误

0 投票
5 回答
24294 浏览

windows - 在 Windows Installer Commit 中运行批处理文件

在安装主输出后,我无法成功修改 Windows Installer MSI 以运行批处理文件。我已经搜索过这个并找到了很多建议,但没有任何效果。

添加自定义操作
自定义操作只能是可执行文件。批处理文件不可执行。

创建运行批处理文件的 Windows 脚本宿主可执行文件
很多人都尝试过这样做,包括在SO上,但没有人能够让它发挥作用。

使用 WIX 或 InstallShield
我没有时间或权限更改公司安装程序技术。

使用 Orca 编辑 .msi 并添加自定义属性,然后添加自定义操作,然后编辑 InstallExecuteSequence,...
我已经尝试了几个小时,并且只创建了在运行时引发系统错误的安装程序。
0 投票
1 回答
2401 浏览

wix - Wix:如何在 CustomAction 之后设置属性?我需要CustomAction吗?

我想安装一个带有 Wix 设置的插件。在计算机上,可以安装更多版本的应用程序,因此用户必须决定应该使用哪个版本。应用程序以这种方式写入注册表:

HKLM\软件\公司\应用程序\版本 ....

这意味着密钥 HKLM\Software\Company\Application 没有直接值,我必须询问它的孩子在 C# 中做了什么:RegistryKey.GetSubKeyNames。

问题 1:

有没有什么方法可以在没有 CustomAction 的情况下读取这些子项名称?

我没有发现这种可能性,这就是我使用自定义操作完成它的原因。

问题2:

但是如何将 CustomAction 中的结果设置为 wxs 中的属性?可能吗?

如果你能帮助我,我会很高兴...

再见,伊沃

0 投票
1 回答
1571 浏览

installation - 在运行 .NET 自定义操作之前强制安装 GAC?

我正在使用 VS 2008 安装和部署项目来部署混合的托管/非托管应用程序。我在使用内置注册属性(“Register”属性的“vsdraCOM”枚举值)注册混合模式 DLL 时遇到问题。作为一种解决方法,我添加了一个 .NET 自定义安装程序集(带有一个派生自 System.Configuration.Install.Installer。)我确定该类正在运行,并且许多操作通过该程序集中的代码成功安装和卸载,包括执行多个程序集的 Dll(Un)RegisterServer 入口点.

但是,一个 DLL 没有成功注册。它是唯一依赖于某些要安装到 GAC 的第 3 方可再发行程序集的 DLL。由于 VS 2008 的设置和部署项目中对这些程序集的内置支持,我已将这些程序集安装到 GAC,并且我知道这是有效的。我已经确认发生的事情是在安装程序执行 GAC 安装之前执行自定义操作。

唷。所以我的问题是,有没有办法强制安装程序在执行自定义操作之前执行 GAC 安装?有没有办法使用自定义操作的“条件”属性来做到这一点?如果没有,我最好的选择是什么?从 DLL 中捕获注册表项并将它们添加到安装程序的注册表设置中(不喜欢这样,因为将来有人可能会在类中添加新的 COM 服务器)?使用 .NET 代码手动将程序集安装到 GAC 中(还不知道该怎么做)?

谢谢,

戴夫

0 投票
2 回答
4994 浏览

.net - 卸载时的自定义操作(单击一次) - 在 .NET 中

对于使用 ClickOnce 安装的 .NET 应用程序,是否有任何方法可以在卸载过程中运行自定义操作。

具体来说,我需要删除一些与应用程序相关的文件(我在第一次运行时创建的)并在卸载过程中调用 Web 服务。

有任何想法吗?

0 投票
4 回答
9381 浏览

c# - 在 C# 中从 Msi 中的自定义操作强制重启

从 C# 自定义操作中安装后,我们如何提示计算机重新启动?

我们正在使用 VS 2005 的安装项目进行安装,我们需要以编程方式决定提示重新启动(因此不会在每次安装时都发生,只是在某些安装时发生)。

更新:我们首先在寻找已经内置到 MSI 自定义操作系统中的东西。如果不存在,我们可以以某种方式自行重启 PC,但希望避免这种情况。

更新:我们看到在 Orca 中编辑 Msi 时您可以在哪里设置 REBOOT=Force,您可以在运行时通过 C# 自定义操作修改这些表吗?我们可以将其设置为每次都重新启动,但这可能会使我们的设置烦人(它只需要在极少数情况下重新启动)。

更新:我们尝试设置:

在我们自定义操作的 Install() 方法中,但没有运气。IDictionary, savedState 似乎并没有真正做任何事情。

也试过:

但我认为这个集合只是传递给自定义操作的命令行参数。

更新:有没有办法用 Orca 编辑我们的 MSI 以使这个技巧发挥作用?也许在某些文件存在的情况下安排重新启动?我们还没有找到如何通过 C# 自定义操作设置 MSI 属性。

更新:我们尝试连接到 AppDomain.ProcessExit 和 AppDomain.DomainUnload 并启动一个新线程并调用 Process.GetCurrentProcess().WaitForExit() 并且这些事件都不会从 C# 自定义操作中触发...

0 投票
1 回答
343 浏览

visual-studio - 如何从 VS2008 安装项目中的自定义操作脚本返回值

我正在创建一个安装项目,我需要执行一个 VBScript 文件作为自定义操作,但我不知道如何将脚本中的值返回到安装。我需要这样做,因为我想在脚本中决定安装是继续还是失败。

提前致谢。