问题标签 [mkbundle]
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.
c# - Windows XP 上捆绑的 .NET 应用程序
我知道 Windows XP 已经停止支持很长时间了,但我们仍然有客户使用无法更新到更新操作系统的机器。
我们现在想编写一个新的应用程序,虽然总是可以选择使用静态编译的 C++ 应用程序,但我想使用 C#。
我认为可以将旧版本的 Mono 与 mkbundle 一起使用来创建这样一个独立的应用程序。
我找不到有关该主题的真实信息,即 Windows XP SP2 上支持的最后一个单声道版本。根据这个线程:https://github.com/mono/mono/pull/1723,Mono 4.0.0 应该可以工作,但我也找到了说它是 3.2.3 的信息(https://opensourcepack.blogspot.de/ p/xp-last-resort_12.html)。
在我们开始广泛的测试之前,我想知道是否有人有类似的情况并且有其他方法或者可以找到关于该主题的真实(官方)信息?
编辑:我们可以使用适用于 XP 的旧 .NET 框架 4.0。但是机器有时在磁盘空间方面非常有限,我们不能总是安装 .NET 框架。这就是我现在探索其他选择的原因。
谢谢,克努尔
macos - 在 Mac 上将 mkbundle 用于 WinForms 应用程序会引发“无法加载程序集 Mono.WebBrowser”
到目前为止,要使用单声道运行我的 winforms 应用程序,我正在使用终端和 --arch=32 来强制应用程序以 32 位运行。否则,我会收到大多数 winform 无法在 64 位上运行的消息。
但是,我想为我的应用程序创建一个捆绑包,这样最终用户就不必安装单声道或使用终端。为此,我正在使用:
它成功运行并创建了一个包,但是它是 64 位的并且它不起作用,正如警告所说。我试图找到一个 x86 目标,不得不回到单声道 4.8.0-osx-10.8-x86 并使用以下命令:
但是,这会产生错误:
无法加载 .../mono/targets/mono-4.8.0-osx-10.8-x86/lib/mono/4.5/System.Windows.Forms.dll 引用的程序集“Mono.WebBrowser”
如何创建一个可以与我的 winform 应用程序一起使用的包?
shell - 使用 mkbundle 使用 GTK 制作自包含应用程序的问题
我想将这个问题暴露给堆栈溢出社区,看看是否有人可以给我一些关于如何解决这个问题的意见。这里的主要目标是使用 Mono 的mkbundle工具来创建一个独立的二进制文件,该二进制文件将在没有安装单声道(或相关库)的嵌入式系统环境中执行。
我正在使用的应用程序是一个简单加载窗口的小示例。在此图像上,您可以看到依赖项,我已将其设置为包含所有这些依赖项的本地副本。这意味着 . 这些引用的dll及其dll 映射配置都将与可执行文件一起出现在调试文件夹中。还应该注意的是,如果我不包含依赖项的本地副本,则mkbundle命令将失败。
所以我尝试用这个命令执行 mkbundle:
之后,我收到了这份关于链接程序集和库的有希望的报告:
系统配置:/etc/mono/config 机器配置:/usr/etc/mono/4.5/machine.config
正如我们所看到的,不仅来自/etc/mono/config中原始单声道映射的 DLLS 链接,而且还有我们的 gtk 依赖项所需的DLLS。
在此之后,我将尝试运行生成的二进制文件。
应用程序崩溃并给我这个错误:
这真的很令人沮丧,因为我已经多次尝试过这个过程,并确认它适用于没有参考的小型应用程序。我想知道是否有人以前遇到过这个问题并且知道如何解决这个问题,或者如果我以某种方式失败了。
最好的问候,里卡多
c# - 使用 mkbundle 时与 RuntimeInformation OS 检查不一致
我RuntimeInformation.IsOSVersion(OSPlatform.Linux)
用来检测运行应用程序的操作系统是否是 Linux。
当简单地.exe
使用 Mono (Ubuntu Xenial) 构建并使用 运行它时mono example.exe
,调用它会返回true
,因为它应该。但是,当mkbundle
用于制作本机 Linux 可执行文件并使用 调用它时./example
,调用它会返回false
. 下面是我正在使用的代码示例:
有什么办法可以解决这个问题,或者更可靠地检测程序正在运行的操作系统?
c# - 在未安装 .Net 的 xp 上运行 .Net Framework 应用程序
我有一个用 .Net Framework 4.0 编写的应用程序,我需要能够在没有安装 .Net 的情况下在 Win xp sp3 上运行。
我发现使用 mono 和 mkbundle --static --deps,我可以实现我所需要的(如果我理解正确的话)。所以我从一个简单的“Hello world”应用开始:
但是当我使用:
发生错误。
编辑:感谢 gethomast,我成功地为 linux 构建了应用程序。我不得不使用:
但我需要在 windows xp 上运行我的应用程序。是否可以选择下载适用于 windows xp 的工具/运行时?或者我可能需要使用安装在 xp 上的单声道来构建应用程序?或者也许我可以使用安装了旧单声道和 VS 的 win 10?
有人对这个问题有一些经验吗?任何帮助表示赞赏。
macos - 无法 mkbundle 可以在 MacOS 上成功运行和代码签名的 Mach-o 可执行文件
我正面临着试图创建有效的 MacOS mach-o 可执行文件的死胡同。
在 Visual Studio 中创建简单的控制台应用程序;简单的.exe
我用 mkbundle 尝试了 2 条路线:
使用 mkbundle
1. 旧的(--custom)方式:
在设置额外的 CC 编译 args 和 pkg-config 的 PATH 之后:
生成的 simple_exe无法启动:
不过,对于操作系统来说,它是完美的 mach-o,因此签署此文件成功。
2. 通过 --cross 或 --sdk 选项使用 (--simple) mkbundle:
编译的(好吧,更确切地说是构造的)可执行文件成功运行:
生成的可执行文件由 Xamarin 签名
尝试了部署过程的 2 个选项:
A- 保留可执行文件原样;由 Xamarin 的应用程序证书签名
- 使用我的应用程序证书对这个可执行文件旁边的其他资产进行代码签名。
- 签名整个 App 包成功
$codesign --strict --sign "$CERT" $BASE/Simple.app
- 制作安装程序 .pkg 并使用安装程序证书对其进行签名成功。
现在,来自苹果的公证结果:“无效”
问题:代码空
路径“Simple.pkg/pkgbuild_Simple.pkg Contents/Payload/Applications/Simple.app/Contents/MacOS/simple_exe”
消息“二进制文件的签名无效。”
架构“x86_64”代码空
B-强制使用我的应用程序证书退出捆绑的可执行文件。
它给出 ( __LINKEDIT segment does not cover the end of the file (can't be processed) in: /Users/assem/bundles/SimpleApp/payload/Applications/Simple.app/Contents/MacOS/simple_exe
)
我已经能够“修补”它并增加 __LINKEDIT 段内的文件大小(以及对齐的 VM 大小),以及 SYMTAB 加载命令下的字符串表大小,以掩盖 mkbundl ed Mono 可执行文件上的注入汇编。
修补后,我可以使用我的证书重新签署生成的可执行文件。但是,如果当我运行它时,它会输出单声道命令行选项帮助消息(好像生成的二进制文件本身就是单声道,并且对捆绑在里面的程序集的链接/引用已损坏)。
ETC..
注意:原始 Xamarin 的签名位于 mkbundl ed O-Mach 可执行文件的中间,然后是 simple.exe 以及相关程序集。用我的证书修补和重新签名后。代码签名附加到捆绑文件的末尾,超出嵌入式程序集。
长话短说: mkbundle 要么编译一个(可签名的)本机 mach-o 二进制文件,但当它立即运行时会因分段错误而崩溃。或者,构建一个运行但未能部署在可签名 mac 包和公证安装程序 pkg 中的二进制文件。
堆:
- MacOS Catalina(也在 Mojave 上尝试了上述所有方法)
- Mono 6.8.0(也在 6.6.0、6.4.0 和 6.0.0 上尝试过)
- XCode 版本 11.3.1(也在较旧的 10.x 上尝试过)
c# - 安装单声道时 mkbundled 应用程序错误
在未安装 mono 的客户端机器上启动我们的应用程序是可行的。但是如果安装了单声道,应用程序无法在同一台机器上启动,并出现以下错误
未处理的异常:System.TypeInitializationException:“GLib.Marshaller”的类型初始化程序引发了异常。---> System.TypeInitializationException:“Sys”的类型初始化程序引发了异常。---> System.EntryPointNotFoundException:SystemNative_LChflagsCanSetHiddenFlag 程序集:类型:成员:(空)
用于创建应用程序的 mkbundle 命令
mkbundle -v -o appname --simple --keeptemp appname.exe --config ./config --machine-config /etc/mono/4.5/machine.config
config 从 /etc/mono 复制并修改以删除特定于位置的信息。
似乎发生的情况是应用程序加载了已安装的单声道实例,该实例与应用程序打包的版本不同,并且找不到符号。
有没有办法阻止 mkbundled 应用程序加载已安装的单声道,而是始终依赖捆绑版本?
c# - 如何制作一个针对 macOS 的可执行文件,这是用 c# 编写的简单控制台应用程序?
我想制作一个针对 macOS 的可执行文件,该文件无需单声道框架或其他运行时即可运行。我要创建的可执行文件是使用 Visual Studio for Mac 用 C# 编写的。我设法用 mkbundle 构建它,它在我的 macOS 系统上运行,但是当它在没有单声道运行时的另一台 Mac 上运行时,它以这个错误结束:
未处理的异常......但是我制作的控制台应用程序在我的 Mac 上运行没有问题......
谁能帮我?
mkbundle - 未找到 Visual Studio 2019 mkbundle,但我已经安装了 mono 和 GTK
未找到 Visual Studio 2019 mkbundle,但我已经安装了 mono 和 GTK Img
mkbundle:名称“mkbundle”未被识别为 cmdlet、函数、脚本或可执行程序的名称。检查名称的拼写,以及路径的存在和正确性,然后从 p。经验。行:1 个字符:1 + mkbundle ConsoleApp1.dll --simple -o ConsoleApp1.exe + ~~~~~~~~ + CategoryInfo: ObjectNotFound: (mkbundle: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException
ubuntu - mkbundle f 中的网络标准问题。单声道6.6.0-ubuntu-18
与 Windows 2022 17.1。
我有一个在 Android、iOS、macOS 和 UWP 上运行的 xamarin 应用程序。
现在我在这个描述之后添加了一个 GTK 项目
我想创建一个独立的捆绑包。为此,我运行
在窗户或
在wslg。
结果是:
为了解决我添加的问题
到 .gtk.csproj 文件。
现在mkbundle TimeDateCalculator.gtk.exe --simple -o timedatecalculator --cross mono-6.6.0-ubuntu-18
给Generated timedatecalculator
!
但是当我在 wslg (ubuntu 21.10) 中运行捆绑的应用程序时,结果如下:
我该如何解决这个问题?我试图将 gtk 项目目标框架从更改为.NET Framework 4.8
,.NET Framework 4.7
但后来我得到了这个