|
Hi,
I want to know what's the best way to let the c# application update itself so when user starts the application it will notify and update without having to re-install the application?
Technology News @ www.JassimRahma.com
|
|
|
|
|
have a google for click once
Lobster Thermidor aux crevettes with a Mornay sauce, served in a Provençale manner with shallots and aubergines, garnished with truffle pate, brandy and a fried egg on top and Spam - Monty Python Spam Sketch
|
|
|
|
|
You can use ClickOnce for this.
If you install your application under the Program Files folder, the users will NOT be able to update their applications. The Program Files folder is readonly for normal users on Windows Vista and above. So, this means you'll have to install your application somewhere where users have permissions to write to the folder.
Frankly, in corporate environments, a self-updating application is generally forwned upon because the new version of the application cannot be tested before going to production.
|
|
|
|
|
Hah, testing before production? The primary reason so many apps are going to the web is so they can be updated faster, bypassing IM testing : )
Dave Kreskowiak wrote: Frankly, in corporate environments, a self-updating application is generally forwned upon because the new version of the application cannot be tested before going to production.
|
|
|
|
|
The application needs the DLLs refreshed and therefore, it needs to restarted. However, you can try ClickOnce. You can also have a separate application that gets run before your app, checks for updates, installs them, and then runs the main application.
I haven't done Win App development for over 3 years, so my knowledge isn't up-to-date. Still, these are two ways you can do it. Google Chrome, I believe, uses ClickOnce.
|
|
|
|
|
Actually i'm using color extender to pick the color in asp.net...but while i'm picking the color it generate the hex decimal values....but i need only rgb values...Pls guide me sir....
|
|
|
|
|
Would this help?
Hex-to-RGB Conversion[^]
Color.FromArgb method[^]
Lobster Thermidor aux crevettes with a Mornay sauce, served in a Provençale manner with shallots and aubergines, garnished with truffle pate, brandy and a fried egg on top and Spam - Monty Python Spam Sketch
|
|
|
|
|
thank u alot...it works correctly...
|
|
|
|
|
your Welcome
Lobster Thermidor aux crevettes with a Mornay sauce, served in a Provençale manner with shallots and aubergines, garnished with truffle pate, brandy and a fried egg on top and Spam - Monty Python Spam Sketch
|
|
|
|
|
Simon_Whale wrote: your Welcome
^ You're.
As in, "You're confusing your (belonging to you) with you're (you are)".
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
ah the spelling police
Lobster Thermidor aux crevettes with a Mornay sauce, served in a Provençale manner with shallots and aubergines, garnished with truffle pate, brandy and a fried egg on top and Spam - Monty Python Spam Sketch
|
|
|
|
|
No, the grammar police!
("Your" is spelled correctly; it's just the wrong word in that context.)
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Well I should give you years of fun then as written English is a subject that I have always struggled with since my childhood. It takes a lot of concentration to make sure something that I write is spelt correctly and the grammar is good.
Lobster Thermidor aux crevettes with a Mornay sauce, served in a Provençale manner with shallots and aubergines, garnished with truffle pate, brandy and a fried egg on top and Spam - Monty Python Spam Sketch
|
|
|
|
|
You've no idea how much I struggled not to correct you on that; my fingers almost did it on their own.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
If you are interested in audio development, I made a simple SDK to tag audio libraries patches. There is ton of things people are waiting for on this topic:
- analyze a WAV file and extract tagging informations (Percussive, Smooth ...)
- extract informations from REX files and convert them in tags
Plug-ins can be .NET assemblies or native DLL
as Universal Patch Finder is free,
the idea is to let all of this entirely free.
|
|
|
|
|
Write and article!
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Excellent. I look forward to seeing some articles/blogs on this. Sounds fascinating.
|
|
|
|
|
Okay, cool. Write an article about it rather than just posting a quick forum post. There is more value with an article as it can introduce your library to people and they can learn how to use it.
"Any sort of work in VB6 is bound to provide several WTF moments." - Christian Graus
|
|
|
|
|
Well, I thing there is some kind of misunderstanding here. My sdk provide only a way to call a plug-in. It does not provide any algorithm to do audio classification. So writing an article for a single .H seems not a good idea for me.
anyway, there is a manual in PDF here, you can take a look from page 24: http://hypercube-softwares.dyndns.org/wp-content/uploads/2013/01/UserGuideV1.3.pdf[^]
maybe I can make a REX parser and make an article if you want an article.
|
|
|
|
|
droopy6 wrote: So writing an article for a single .H seems not a good idea for me.
Well, even Pete O'Hanlon mentioned that an article or a technical blog about the basic usage would be cool. There are people out there that would find it useful. The pdf looks really good. You could always write a nice little bit summarizing the coding that is mentioned later on in the user guide.
droopy6 wrote: maybe I can make a REX parser
That would be very interesting as well.
"I've seen more information on a frickin' sticky note!" - Dave Kreskowiak
|
|
|
|
|
ok, I will write an article with a REX parser as an example.
|
|
|
|
|
|
As I did not see the article I cannot comment on why CP would have removed it you should probably argue the toss with them, I'm not going to be able to help.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
View visit link is given on Registration form, when user will click that link, it is showing following MessageBox 3 times:
Index was out of range.Must be non-negative and less than the size of the collection.
Parameter name:Index
After clicking ‘OK’ button on this MessageBox 3 times it will show The data in DataGridView as follows:
Also it is showing that MessageBox again.
Following is the blank OPD visit Form through which user can fill particular OPD visit details:
When user will click on any row of DataGridView(which is showing OPD visits) from ‘View visit’ form,
it has to show particular OPD visit details on ‘OPD visit’ form given above.
But now problem is that many times I have to click on any row of DataGridView showing OPD /IPD visits.
And when I click on any row of DataGridView showing IPD visits then it shows the error:
Object reference not set to instance of an object.
After clicking on ‘Ok’ it shows result.
SqlConnection con = new SqlConnection("Data Source=AKSHAY-PC;Initial Catalog=Paranjpe_Hospital;User ID=sa;Password=akshay;Pooling=False");
try
{
con.Open();
// string sqlqry = "select distinct PRN,OPD_Visit_No,OPD_visit_Date from OPD_visit where PRN= '" + PRN + "'"; original query
SqlCommand cmd = new SqlCommand("View_OPD_visits", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@PRN", PRN); //Convert.ToInt32(PRN));
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
//DataTable dt = new DataTable();
//DataTable dt = new DataTable();
//dt.Columns.Add("PRN");
//dt.Columns.Add("OPD_Visit_No");
//dt.Columns.Add("OPD_visit_Date");
//dt.Columns.Add("OPD_subcase");
//dt.Columns.Add("Diagnosis");
//dt.Columns.Add("obs_LMP");
//dt.Columns.Add("obs_EDD");
//dt.Columns.Add("Remark");
//dt.Columns.Add("Abnormal_findings");
//select PRN,OPD_Visit_No as Visit_No,OPD_visit_Date as Visit_Date,OPD_subcase as subcase,Diagnosis,obs_LMP as LMP,obs_EDD as EDD,Remark,Abnormal_findings from OPD_visit
da.Fill(ds); //, "OPD_visit");
//da.Fill(ds);
//BindingSource bSource = new BindingSource();
if (ds.Tables[0].Rows.Count > 0)
{
dataGridView_view_OPD_visits.Refresh();
dataGridView_view_OPD_visits.DataSource = ds.Tables[0];//ds.Tables[0];
//dataGridView_view_OPD_visits.DataBindings.Add(dt);
//dataGridView_view_OPD_visits.DataBind();
//dataGridView_view_OPD_visits.DataBindings.ToString();
//dataGridView_view_OPD_visits.BindingContext[ds.Tables[0], "OPD_visit"];//,"OPD_visit"];
}
/*
Datagridview.DataSource = < THE DATA SOURCE>
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Age");
dt.Columns.Add("Salary");
for (int i = 1; i <= 10; i++)
dt.Rows.Add(
string.Concat("Name", i)
, i + 10
, i * 2000
);
dgView.DataSource = dt;
*/
//bSource.DataSource = ds;
//dataGridView_view_OPD_visits.AutoGenerateColumns = true;
//dataGridView_view_OPD_visits.Refresh();
//dataGridView_view_OPD_visits.DataSource = bSource;//ds.Tables["OPD_visit"]; //"OPD_visit"]; //.Tables["OPD_visit"]; //.Tables[0];
//dataGridView_view_OPD_visits.DataBindings.Add(ds);
/*
DataGridView dgView = new DataGridView();
//BindingSource to sync DataTable and DataGridView
BindingSource bSource = new BindingSource();
//set the BindingSource DataSource
bSource.DataSource = dTable;
//set the DataGridView DataSource
dgView.DataSource = bSource;
*/
//dataGridView_view_OPD_visits.AutoGenerateColumns = true;
//dataGridView_view_OPD_visits.DataSource = ds.Tables[0];
//dataGridView_view_OPD_visits.DataBindings=dt; //.Tables[0];
//dataGridView_view_OPD_visits.DataMember = "OPD_visit";
/*
use like this :-
gridview1.DataSource = ds.Tables[0]; <-- Use index or your table name which you want to bind
gridview1.DataBind();
*/
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
finally
{
con.Close();
}
SqlConnection con1 = new SqlConnection("Data Source=AKSHAY-PC;Initial Catalog=Paranjpe_Hospital;User ID=sa;Password=akshay;Pooling=False");
try
{
con1.Open();
// string sqlqry = "select distinct PRN,OPD_Visit_No,OPD_visit_Date from OPD_visit where PRN= '" + PRN + "'"; original query
SqlCommand cmd = new SqlCommand("View_IPD_visits", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@PRN", Convert.ToInt32(PRN));
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);//, "IPD_visit");
//if (dataGridView_View_IPD_visits.RowCount == 0)
//{
// break;
//}
//BindingSource bSource = new BindingSource();
//bSource.DataSource = ds;
dataGridView_View_IPD_visits.Refresh();
// dataGridView_View_IPD_visits.DataSource = ds.Tables[0];
//dataGridView_View_IPD_visits.AutoGenerateColumns = true;
dataGridView_View_IPD_visits.DataSource = ds.Tables[0]; //bSource;//ds.Tables[0];//"IPD_visit"];//.Tables["IPD_visit"];
//dataGridView_View_IPD_visits.DataMember = "IPD_visit";
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
finally
{
con1.Close();
}
private void dataGridView_view_OPD_visits_RowEnter(object sender, DataGridViewCellEventArgs e)
{
try
{
int prn_view_visits = 0;
int OPD_visit_no_view_visits = 0;
prn_view_visits = Convert.ToInt32(dataGridView_view_OPD_visits.SelectedRows[0].Cells[0].Value);
OPD_visit_no_view_visits = Convert.ToInt32(dataGridView_view_OPD_visits.SelectedRows[0].Cells[1].Value);
OPD_visit ov = new OPD_visit(prn_view_visits, OPD_visit_no_view_visits);
ov.txtBx_PRN.Text = prn_view_visits.ToString();
ov.txtBx_OPD_visit_no.Text = OPD_visit_no_view_visits.ToString();
ov.txtBx_patient_name.Text = P_name;
ov.Show();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
finally
{
//con.Close();
}
//SqlConnection con = new SqlConnection("Data Source=AKSHAY-PC;Initial Catalog=Paranjpe_Hospital;User ID=sa;Password=akshay;Pooling=False");
//try
//{
// con.Open();
// // string sqlqry = "select distinct PRN,OPD_Visit_No,OPD_visit_Date from OPD_visit where PRN= '" + PRN + "'"; original query
// SqlCommand cmd = new SqlCommand("Patient_Select_by_PRN", con);
// cmd.CommandType = CommandType.StoredProcedure;
// cmd.Parameters.AddWithValue("@PRN",prn_view_visits);
// SqlDataAdapter da = new SqlDataAdapter(cmd);
// DataSet ds = new DataSet();
// ds.Clear();
// da.Fill(ds);
// if (ds.Tables[0].Rows.Count > 0)
// {
// ov.txtBx_patient_name.Text = ds.Tables[0].Rows[0][1].ToString();
// }
// else
// {
// MessageBox.Show("Patient is not registered!");
// }
//}
}
private void dataGridView_View_IPD_visits_RowEnter(object sender, DataGridViewCellEventArgs e)
{
try
{
int prn_view_visits = 0;
int IPD_visit_no_view_visits = 0;
prn_view_visits = Convert.ToInt32(dataGridView_view_OPD_visits.SelectedRows[0].Cells[0].Value);
IPD_visit_no_view_visits = Convert.ToInt32(dataGridView_view_OPD_visits.SelectedRows[0].Cells[1].Value);
IPD_visit iv = new IPD_visit(prn_view_visits, IPD_visit_no_view_visits);
iv.txtBx_PRN.Text = prn_view_visits.ToString();
iv.txtBx_IPd_visit_no.Text = IPD_visit_no_view_visits.ToString();
iv.textBox_IPD_patient_name.Text = P_name;
iv.Show();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
finally
{
//con.Close();
}
}
Please tell me solution of the problem.
|
|
|
|