使用.NET / C#应用程序自动更新的免费解决方案?(Free solution for automatic updates with a .NET/C# app?)
从搜索我可以看到这已经被一次又一次地问了,但还不够充分,所以这里。 我是一个没有预算的爱好开发者。 我一直在开发的程序一直需要定期的错误修复,我和用户已经厌倦了手动更新。
我,因为我目前通过FTP更新文本文件的方法和网站上的我的下载链接,然后希望用户看到“有更新消息”,最后让他们麻烦手动下载更新,坦白说,是糟糕的。
用户,因为好,“你会不会实现自动更新?” “会有自动更新功能吗?” 如果我碰巧更新过程,那么干草叉开始到达。
过去我已经研究了:
- WinSparkle - 没有应用内更新,DLL是500 KB。 我目前的解决方案是可执行文件中的几KB,并且没有应用内更新。
- .NET应用程序更新组件 - 不幸的是,我无法理解文档。
- Eduardo Olivera的AutoUpdate - 除了处理未使用的文件之外,它似乎并不支持任何其他操作。
- wyUpdate - wyBuild不是免费的,而在wyUpdate规范可用的时候,通过它太复杂和耗时了。
- AppLife更新 - 同上最后一句。
- ClickOnce - 在启动时实现启动的解决方法是巨大的,可怕的,并不值得这样一个简单的功能。 出版是一种痛苦; 对于没有FrontPage Extensions的服务器,需要手动FTP和替换所有文件 。
这是非常令人失望的Windows的情况是这样的,当你有真正漂亮和简单的实现Mac OS X像Sparkle 。
From searching I can see this has been asked time and time again, but not adequately enough, so here goes. I'm a hobbyist developer with no budget. A program I've been developing has been in need of regular bugfixes, and me and users are getting tired of having to manually update.
Me, because my current solution of updating a text file through FTP and my download links on the website, and then hoping users will see the "there's an update message", and finally getting them to then be bothered to manually download the update, well quite frankly, is abysmal.
Users, because, well, "Are you ever going to implement auto-update?" "Will there ever be an auto-update feature?" And if I happen to screw up the update process, pitchforks start arriving.
Over the past I have looked into:
- WinSparkle - No in-app updates, and the DLL is 500 KB. My current solution is a few KBs in the executable and has no in-app updates.
- .NET Application Update Component - Unfortunately I can't comprehend the documentation.
- Eduardo Olivera's AutoUpdate - This doesn't appear to support anything other than working with files that aren't in use.
- wyUpdate - wyBuild isn't free, and while the wyUpdate specification is available, it's simply too complex and time-consuming to go through.
- AppLife Update - Ditto the last sentence.
- ClickOnce - Workarounds for implementing launching on startup are massive, horrendous and not worth it for such a simple feature. Publishing is a pain; manual FTP and replace of all files is required for servers without FrontPage Extensions.
It's quite disappointing that the situation on Windows is like this when you've got really nice and simple implementations for Mac OS X like Sparkle.
原文:https://stackoverflow.com/questions/4524147
最满意答案
我现在找到了合适的解决方案。 也许我能做得更好,但到目前为止这对我有帮助。
我找到了以下博客: http : //tfathy.blogspot.de/2009/03/reading-from-file.html
该代码100%通过复制和粘贴工作,并帮助我从现在开始完成任务。
也许它也可以帮助其他人。
这是解决方案代码:
Reading From File March 19, 2009 -------------------------------------------------- Declare vfilename varchar2(500); in_file Client_Text_IO.File_Type; linebuf VARCHAR2(1800); BEGIN vfilename := client_get_file_name('c:/temp/', File_Filter=>'Comma Dialimeted Files (*.csv)|*.csv|'); in_file := client_Text_IO.Fopen(vfilename, 'r'); GO_BLOCK('Emp'); FIRST_RECORD; LOOP Client_Text_IO.Get_Line(in_file, linebuf); p_output_line(linebuf); Client_Text_IO.New_Line; Next_record; END LOOP; FIRST_RECORD; EXCEPTION WHEN no_data_found THEN Client_Text_IO.Put_Line('Closing the file...'); Client_Text_IO.Fclose(in_file); END; ------------------------------------------------------- PROCEDURE p_output_line(p_line varchar2) IS vLINE VARCHAR2(4000); vVALUE VARCHAR2(1000); vCOMMA_COUNT NUMBER; vREPORT_DATE DATE; BEGIN vLINE := p_line; vCOMMA_COUNT := LENGTH(vLINE)- LENGTH(REPLACE(vLINE,',','')); -- COUNT THE NUMBER OF COMMAS FOR I IN 1.. vCOMMA_COUNT+1 LOOP vVALUE := SUBSTR(vLINE,1,INSTR(vLINE,',')-1); -- IF vLINE = 123,ABC,9877 THEN VVALUE WILL BE 123 IF vVALUE IS NULL THEN vVALUE := vLINE; END IF; vLINE := SUBSTR(vLINE,INSTR(vLINE,',')+1) ; -- CHANGE 123,ABC,9877 TO BE ABC,9877 IF I = 1 THEN :DATA.BMK_NAME := vVALUE; ELSIF I = 2 THEN vREPORT_DATE := last_day(to_date(vVALUE,'dd-mm-yyyy')); :DATA.REPORT_DATE := vREPORT_DATE; ELSIF I = 3 THEN :DATA.BMK_RETURN := to_number(vVALUE); END IF; END LOOP; EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE('Please Check the data type is appropriate on you excel file'); MESSAGE('Please Check the data type is appropriate on you excel file'); END; ----------------------------------------------------------------------- -- notes 1- you must install webutil version 106 or later 2- make sure that you attached and compiled the webutill.pll scucessfuly
I've found a suitable solution for me now. Maybe I could do it better but this helps me so far.
I've found the following Blog: http://tfathy.blogspot.de/2009/03/reading-from-file.html
The Code works 100% by copy&paste and helps me from now on to complete the task.
Maybe it might help anyone else too.
Here is the solutioncode:
Reading From File March 19, 2009 -------------------------------------------------- Declare vfilename varchar2(500); in_file Client_Text_IO.File_Type; linebuf VARCHAR2(1800); BEGIN vfilename := client_get_file_name('c:/temp/', File_Filter=>'Comma Dialimeted Files (*.csv)|*.csv|'); in_file := client_Text_IO.Fopen(vfilename, 'r'); GO_BLOCK('Emp'); FIRST_RECORD; LOOP Client_Text_IO.Get_Line(in_file, linebuf); p_output_line(linebuf); Client_Text_IO.New_Line; Next_record; END LOOP; FIRST_RECORD; EXCEPTION WHEN no_data_found THEN Client_Text_IO.Put_Line('Closing the file...'); Client_Text_IO.Fclose(in_file); END; ------------------------------------------------------- PROCEDURE p_output_line(p_line varchar2) IS vLINE VARCHAR2(4000); vVALUE VARCHAR2(1000); vCOMMA_COUNT NUMBER; vREPORT_DATE DATE; BEGIN vLINE := p_line; vCOMMA_COUNT := LENGTH(vLINE)- LENGTH(REPLACE(vLINE,',','')); -- COUNT THE NUMBER OF COMMAS FOR I IN 1.. vCOMMA_COUNT+1 LOOP vVALUE := SUBSTR(vLINE,1,INSTR(vLINE,',')-1); -- IF vLINE = 123,ABC,9877 THEN VVALUE WILL BE 123 IF vVALUE IS NULL THEN vVALUE := vLINE; END IF; vLINE := SUBSTR(vLINE,INSTR(vLINE,',')+1) ; -- CHANGE 123,ABC,9877 TO BE ABC,9877 IF I = 1 THEN :DATA.BMK_NAME := vVALUE; ELSIF I = 2 THEN vREPORT_DATE := last_day(to_date(vVALUE,'dd-mm-yyyy')); :DATA.REPORT_DATE := vREPORT_DATE; ELSIF I = 3 THEN :DATA.BMK_RETURN := to_number(vVALUE); END IF; END LOOP; EXCEPTION WHEN NO_DATA_FOUND THEN MESSAGE('Please Check the data type is appropriate on you excel file'); MESSAGE('Please Check the data type is appropriate on you excel file'); END; ----------------------------------------------------------------------- -- notes 1- you must install webutil version 106 or later 2- make sure that you attached and compiled the webutill.pll scucessfuly
相关问答
更多-
我现在找到了合适的解决方案。 也许我能做得更好,但到目前为止这对我有帮助。 我找到了以下博客: http : //tfathy.blogspot.de/2009/03/reading-from-file.html 该代码100%通过复制和粘贴工作,并帮助我从现在开始完成任务。 也许它也可以帮助其他人。 这是解决方案代码: Reading From File March 19, 2009 -------------------------------------------------- Declare ...
-
将CSV文件导入到Oracle DB(Import CSV file to oracle DB)[2022-06-17]
对于类似的任务,我通常使用Groovy脚本,因为在JVM上编写和运行非常简单快捷。 ...一个例子: import groovy.sql.Sql def file1 = new File(/C:\Documents and Settings\USER\Desktop\Book1.csv/) def reader = new FileReader(file1) def sql = Sql.newInstance("jdbc:oracle:thin:@XXXXXX:XXXX:XXX", "SCHEMA", ... -
如果您查看MSDN上此命名空间的页面: http://msdn.microsoft.com/en-us/library/system.data.oracleclient.aspx 你会看到一个小广告/评论: DataDirect Oracle ADO.NET提供程序提供与Oracle 8i至11gR1的免费Oracle客户端库( 无Oracle客户端或即时客户端)的卓越连接,具有卓越的性能,可扩展性和功能,所有这些都具有100%的托管代码。 可在此处获取: http : //www.datadirect.c ...
-
我知道技术是不同的,哪一个应该更快,具有更好的用户界面响应? 如果考虑到性能并在应用程序中使用Javascript,ADF可以提供出色的用户界面响应。 由于接口较重,ADF是否比FORMS慢? 不,两者在相同的情况下表现相同,ADF可以在应用性能程序时得到增强,ADF也为用户提供了出色的用户体验。 可以更改什么来提高ADF应用程序(服务器?)的性能 请考虑阅读本文档 是否有任何应用程序可以对应用程序执行基准测试? 将JMeter与ADF一起使用,查看演示的链接 ,以及另一篇文章 。 I know that ...
-
使用Oracle外部表访问CSV文件的创建日期(Accessing Created date of a CSV file using an Oracle External table)[2023-12-08]
什么版本的Oracle? 如果您使用的是11.2或更高版本,则可以使用外部表的预处理器功能在加载之前在文件上运行shell脚本/批处理文件。 我的偏见是为了简单 - 让预处理脚本获取日期,将其存储到一个单独的文件中,并有一个单独的外部表来加载和公开该数据。 这可能比将日期添加到每一行更容易。 What version of Oracle? If you are using 11.2 or later, you can use the preprocessor feature of external tabl ... -
我没有使用迁移工具的任何经验,但我参与了一个大型的表单到Apex迁移项目。 自从我们大约2年前开始以来,我们无法使用迁移工具,而且我们已经构建了自己的迁移工具。 但转换实际上很难实现自动化,除了基本上是屏幕布局和项目的简单位。 所以我们有一个方法来生成第一个切割的Apex页面,其中包含正确的项目(或多或少)正确的布局,但是我们仍然有一个很大的工作要检查PL / SQL片段的Forms触发器和库并找出如何处理它们(一些是冗余的特定于表单的代码,一些是我们需要在Javascript中重写的客户端验证,一些是根本 ...
-
如已提议的那样使用sqlloader或外部表。 如果您确实需要快速加载:在加载索引/约束后删除并重新创建,请使用no-logging选项更改表。 Use sqlloader or external table as already proposed. In case you really need fast load: drop and recreate after load indexes/constraints, alter table with no-logging option.
-
使用impdp导入: impdp scott/tiger@db10g tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=impdpEMP_DEPT.log 然后转到csv: set heading off spool myfile.csv select col1|','||col2 from my_tables; set colsep ',' select * from my_table; spool off; 请按照以下链 ...
-
我通过@Marc B的有用评论来解决这个问题 我写了类似的东西 LOAD DATA LOCAL INFILE '/path/data.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' IGNORE 1 LINES (columns with @) SET column = IF(length(@column)= 0,null,@column), date = str_to_date(@date, '%d/%m/%Y'); I figure ...
-
您是否考虑过查看CAD软件导出以查看文件创建端是否有解决方案? 或者这个文件来自第三方? OK. So, after the hard work of whole day, I've found the following solution to my problem: import java.io.*; import javax.swing.*; public class ReadFileInvert2{ public static void main(String args[]){ try{ ...