Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将配置直接添加到C#程序集中_C#_.net_Zip - Fatal编程技术网

将配置直接添加到C#程序集中

将配置直接添加到C#程序集中,c#,.net,zip,C#,.net,Zip,我需要开发一些应用程序,它将作为一个可执行文件分发给用户。用户应该点击一些按钮,如“下载”,并获得exe文件,然后他执行它,并上传结果回我的网站。应用程序不应该包含任何安装程序或类似的东西,只需运行一次并获得结果 我的应用程序有一个像“myapp.exe”这样的主可执行文件和几个数据文件,这取决于当前用户。现在我必须生成SFX zip存档,其中包含myapp.exe、数据文件和当前用户配置。当用户单击“下载”时,我将用户数据添加到存档中并提供给用户 问题是SFX归档文件非常枯燥,很难维护。我不能

我需要开发一些应用程序,它将作为一个可执行文件分发给用户。用户应该点击一些按钮,如“下载”,并获得exe文件,然后他执行它,并上传结果回我的网站。应用程序不应该包含任何安装程序或类似的东西,只需运行一次并获得结果

我的应用程序有一个像“myapp.exe”这样的主可执行文件和几个数据文件,这取决于当前用户。现在我必须生成SFX zip存档,其中包含myapp.exe、数据文件和当前用户配置。当用户单击“下载”时,我将用户数据添加到存档中并提供给用户

问题是SFX归档文件非常枯燥,很难维护。我不能改变它的接口,我只能使用一个或两个zip库来创建SFX arxhives


是否有任何方法可以使用另一个容器或将用户数据“动态”打包到我的实用程序的资源中?

我一直在为一个应用程序这样做,在这个应用程序中,我需要在不要求任何凭据的情况下识别它是哪个用户。基本上,某种令牌在下载之前捆绑在应用程序中,然后发送到服务器

根据我的发现,有两种方法:

  • 使用:构建XML,调用candle+light,发送到客户端
  • 制作单个MSI,并在将其发送到客户端之前
我们选择MSI数据库编辑是因为它的实现简单,但我最近在生产中看到了WiX,结果非常好。

您可以使用它以编程方式更改程序集,包括它们的资源。在您的情况下,您可以使用它修改程序集预下载,以添加/修改包含特定用户数据的嵌入式资源

byte[] userData = ...;
EmbeddedResource resource = new EmbeddedResource("UserData", ManifestResourceAttributes.Public, userData);
assembly.MainModule.Resources.Add(resource);

然后,您可以使用和读取添加/修改的资源(运行时,下载后)。

而不知道用户配置可能包含什么,或者数据文件是否不同。但是为什么不让可执行文件在第一次运行时生成这些文件呢?也许在数据库中维护用户数据,应用程序可以检索用户特征并生成文件。这既灵活又简单。应用程序应该完全离线,用户数据只在服务器端知道。服务器应该提供应用程序使用的所有数据。然后应用程序应该处理这些数据和用户桌面,并提供结果。然后用户手动将其上传回站点。与此相关的还有其他一些限制,但进行此类应用是解决主要问题的唯一途径。