How to work with startup in windows application(.net) - c#

i created a small tool in windows application using (.net language C#).
i created setup for my tool and also when we click on minimize button it will be in system tray. My requirement is i want to place my tool in start up (start>All Programs>Start up)
when i start my system automatically my tool is open this is my requirement please help me thank you.

go to solution explorer and select the setup folder what u created select any file (project setup) and u can see the two splited windows one is Files system on Target Machine right click on empty space
u can get 'add special folder >> user's startup Folder' and u can get a folder then right click and add project output thats all.

Just put the EXE you want to run to the correct startup folder. Username is the logged on user. Run cmd, then type echo %username% to find your username.
Windows Vista
c:\Users\[username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Windows XP/2000
c:\Documents and Settings\[username]\Start Menu\Programs\Startup
Windows NT 4
c:\Winnt\Profiles\[username]\Start Menu\Programs\Startup
Windows 95/98/ME
c:\WINDOWS\Start Menu\Programs\Startup

The cleaner way is to copy the exe to the following location
Environment.GetFolderPath(System.Environment.SpecialFolder.Startup)
The only reason I recommend using this Method instead of hardcoding the value , is because the paths can change and trying to pre-empt ever every users move is a waste of time.Should just mention that the method above still returns the same folders as the first answer

Related

App.Config on Winforms is getting reinstalled

I have a windows application installed and working perfectly fine.
Something weird came up, the test scenario is if I rename the config file from the original name which is:
Model Label PC Client.exe.config
...to:
xxxModel Label PC Client.exe.config
...and click the .EXE file on the application folder / path where i installed it, it works as expected.
But when I clicked the shortcut icon of this application on the desktop, it shows a pop up that installs a new copy of the correct config file name.
please refer to the screenshot , any idea how to prevent this from happening? or is this really the behavior?
OP:
"any idea how to prevent this from happening?"
For installed apps, it is by design. Essentially you have removed an installed file and so the installer tech will kick in to recover it as if nothing happened.
Now technically you could get around that auto-recovery by not using MSI tech to install your app trusting instead on good-ol' XCOPY but then again, renaming/moving/deleting the file may break the app because this time there is no auto-recovery!
Additionally .NET apps expect to find a .config file matching the same name as the executable so you shouldn't go renaming/deleting/moving it in most scenarios.

Windows installer forbid certain install locations

Have an msi file that is run by the user manually. They need to be able to choose the install directory in most cases however we need to forbid certain install locations. E.g. Installing it to the root directory C:\ will cause all kinds of problems, so we need to either overwrite that decision (i.e. overwrite C:\ with C:\Program Files (x86)\xxx) or pop up with an error. Is there some way I can enforce this?
The msi in question has custom actions already however there doesn't seem to be a way to edit the install location from there.
Alternatively, the msi in this case is wrapped up in a WiX bundle so if we can forbid certain directories from there that would also be good. Cannot find a way to do this either though (only know how to edit the default with <Variable Name="InstallFolder" ...>)
Only other solution I can think of would be rather horrible: make a separate application that selects a directory that then runs the installer with acceptable directory.
Can this be done either through an msi or a WiX Bundle?
I am using the "Visual Studio 2013 Installer Projects" extension to build the msi.
As a contrary view:
In general this is a bad idea. In most cases the correct answer will be to install the application code to the appropriate Program Files folder (64-bit or x86) and the data files to data locations and so on, and the user should get no choice. It is not clear to me that a choice is a good idea when (for example) the Windows Certification rules say that your code must go to the Program Files location, so just do it right. Users simply care that the installed application works correctly, and if it fails when installed to some locations then the answer is to either 1) Fix the application so that it works or 2) use Program Files and give the user no choice.
Also, if you are using Visual Studio Installer projects then you can't write custom actions to do this because they all run too late to change the install location. You seem to have discovered this already. But you CAN hide the browse folder dialog and install to the default correct location.
The other issue is that it's not clear how you would define an "allowed" location. If it's not C:\, then can it be D:\SomeOtherLocation? Can it be an attached USB drive? Can it be a network share such as \\Servername\share? A mapped drive to a network share? There are likely to be any number of chosen locations that will fail the install or the app when it runs, and I don't think there can be a useful list of what's allowed. On top of that, let's say you have a 32-bit install and the user chooses the native Program Files folder on a 64-bit system, then it won't even go there - it will be redirected to the Program Files(x86) location. Finally, it's not clear what you do in silent install mode assuming the user specifies a location on the command line, it fails your test, then the install silently fails (because silent means silent, and the install might be unattended).
In other words, just install to Program Files and have done with it.
Custom Action: This will be short. Will check back later. I can't say I have bothered implementing this recently, but a custom action can certainly inspect the installation location and abort the setup or halt it - if the path selected is found to not be satisfactory. It should also be noted that MSI actively resists installing directly to the root of C:\ and stuff like that due to the way the Directory table is implemented.
GUI: I guess one way would be to run a custom action when the user clicks the Next button in the setup's destination path customization dialog which then does "whatever you want" in terms of checking the path, and then reports any errors. This involves a DoAction event hooked up to the OK or Next button on the path customization dialog.
Silent Mode:You can also hook up the same custom action to run in silent mode (or another custom action calling the same path check function) - to account for the fact that an undesirable path could also be specified for a silent installation. In that case the custom action should abort the setup after writing into the log file, instead of reporting the path problem to the user - which is what you would do from the dialog event mentioned above - obviously.
Github: I do not have WiX code for you to implement this available on this computer. I would hit github.com and search for other projects that use WiX - you will probably find something quickly - no money for nothing and WiX for free.
Based on the users being able to manually install it (and hence using the UI sequence), it might be easier to:
In the InstallUISequence, sequence the LaunchCondition action to just before the ExecuteAction action.
Then in the LaunchCondition table, add a condition like so:
Condition:
TARGETDIR~<<"C:\Program Files\"
Description:
You must install to the Program Files folder
What we're saying in the condition is:
If the TARGETDIR starts with "C:\Program Files\" (therefore the user can install anywhere under this folder) continue with the install. Otherwise throw an error.
Rather then preventing certain locations, I'd probably just enforce the Program Files folder as a best practise.

InstallShield: cannot extract icon with index 0 (for dummies)

Yes I did my homework first. And I'm still stuck. First let me express my irritation at Microsoft for deprecating the Installer project type. Shame on them.
Back to my issue, Here is the error:
Error 3 -3204: Cannot extract icon with index 0 from file <some_path>\obj\Debug\MyProject.Gui.exe.
Attempt #1: InstallShield: cannot extract icon with index 0 vb.net
-- The answer says to include an object of type icon in my exe and rebuild. To do this, I tried the following:
right clicked on my windows forms project, add new item, icon, save all
open the icon file in step 1, draw some text in it, save all
right click the project and select rebuild (no errors, looks good)
left click on 'Specify Application Data'->'Files', select the *.ico in the project (Note: I can see it clearly listed, and it appears in the dialog as index0)
left click on 'General Information'-> 'Display Icon' -> browse for the *.ico (located in project folder for MyProject.Gui.exe)
save all and rebuild all
...I still get the same error message.
How does one "Recompile your EXE to include an icon and the message will go away"?
I had the same issue. Your problem is because you need to embed the icon into your executable. The way you do this is in Project Properties window in Visual Studio (Alt-Enter or right click ->properties for project root in solution explorer).
In the project properties under Application, there's a group box called Resources. Add your icon as shown below and install shield will build fine.
Hope that helps.
I was getting this problem, I try a lot of solutions on the web, but the only way that works for me:
Expand the deploy solution (+) on the right panel (Solution Explorer)
Expand the menu "Configure the target system"
Double click on Shortcuts folder
Here you will find 2 output you set up in the project wizard.
Select one of them, and find the property Icon, click to (...) to browse the propertly icon.
Do the same with the second one output built solution.
Rebuild your project!
Regards,
You need to copy the icon file to the debug folder of your windows application to successfully compile.
Go to Shortcuts/Folders under configure the Target System.
Select your application from the tree.
Select the icon and change the index to 2 (or something other than 0)
Build it.
If the problem is that you associated the icon with the installer and you embedded it into your application but you are still getting this error, try adding a folder exception to your antivirus software. The exception should be the folder where your source is located and the executable is output.
The symptom is that you randomly get this error during a build. It is caused by your antivirus software preventing the installshield icon extractor from accessing your application executable.
This happened with me also. My application runs in the background so I didn't create an Icon for it. When this error occurred I assigned an icon and everything built okay.

Install shortcut from VS.NET MSI installer project for ALL USERS

I've searched and searched on here. I've tried the following methods with no luck:
Set the project installer properites to - InstallforAllUsers (can't remember the exact name) but that does add the shortcut to all the user's menus, but only the user that installed the application is able to run it. The other users get a SysWOW64 error about not being able to install it or something.
Set the [DesktopFolder] or [AllUserStartMenu] again, I may not have these property names right, but I followed them from a few users that have posted on here. Giving these properties the value of ALLUSERS. The installer fails during install and says "Unable to locate network location 1" or something like that.
Used ORCA to edit the MSI file and add a property to install for all users, and failed inside ORCA with the error of unable to add property.
It's maddening. I'm using Visual Studio 2010. I think I'm just pushing the limits of the instller.. imagine that. My install is a desktop application (winforms) that has a custom installer action and class that writes some values to a setting file on choices the user makes during the install (custom UI installer screen).
Any ideas?
MSDN Site that explains how to do this
MSI Install All Users
The InstallAllUsers property for a deployment project determines
whether an application is installed for all users of a computer or only
for the user performing the installation. The InstallAllUsers property
can be set in the Properties window when a deployment project is
selected in the Solution Explorer.
Settings
False - The application will only be installed for the current user
and will not be visible to other users of the computer (the default).
True - The application will be installed for all users.
InstallAllUsersVisible Property
The InstallAllUsersVisible property for the Installation Folder user
interface dialog box determines whether the Install MyApplication for
yourself, or for anyone who uses this computer label and corresponding
Everyone and Just me option buttons appear during installation. The
InstallAllUsersVisible can be set in the Properties window when the
Installation Folder node is selected in the User Interface editor.
Settings
True - The Install MyApplication for yourself, or for anyone who uses
this computer label and corresponding Everyone and Just me option
buttons will be shown during installation, and the user's choice
determines the installation method.
False - The Install MyApplication for yourself, or for anyone who
uses this computer label and corresponding Everyone and Just me option
buttons will not be visible during installation."
===========================================================
So here's Step-by-step what you do to install for Everyone as default
without the radio button choices appearing for your users who are
installing your product.:
1. Click on your setup project in your Solution Explorer.
2. Look in the Properties window and set the property InstallAllUsers
to be True
3. Click on the icon in the Solution Explorer toolbar that has the
pop-up tooltip "User Interface Editor"
4. Click on the "Installation Folder" item in the panel that appears.
5. Look in the Properties window and set the InstallAllUsersVisible to
be False.
6. Rebuild your solution.
Some other additional notes to try from a quick search I have just done for you..
I was searching the web for an answer to this question, and I found the answer hidden away on Microsoft's site.
You are going to need Orca.exe from Microsoft. It is an MSI database editor. (http://msdn.microsoft.com/library/de...p/orca_exe.asp) The only way I see to get this file is by installing the Windows Installer SDK (http://www.microsoft.com/msdownload/...msdk/sdkupdate).
Once you are done building your .MSI file, you will need to open it with Orca.exe. Once open, go to the "Property" table. From the menu, Click "Tables" and then "Add Row". For the "Property" string, enter "ALLUSERS", for the value, enter "1" or "2". Entering a "1" will cause the installer to try to add the shortcut to "All Users" and fail if the current user does not have authority, a "2" will cause the installer to try "All Users" first, then fail over to their personal folder. For details - http://msdn.microsoft.com/library/de...stallation.asp
I tested this on "User's Desktop" and "User's Start Menu" and it worked for both. A word of warning: If you re-build your MSI file, it will delete the "ALLUSERS" property entry, so you must use Orca.exe and re-add the setting on each re-build.
I know this is an ancient question, but I've done this before and when I recently had to do it again I had forgotten how. Since my gut instinct was to look on SO before digging into old installer projects, I figured I'd better get the answer posted.
Here is how I accomplish this:
Add a registry search to your launch conditions:
(Name): Search for All Users Programs menu
Property: ALLUSERSMENU
RegKey: SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
Root: vsdrrHKLM
Value: Common Programs
Create a new target folder in the file system editor and leverage your new property:
(Name): All Users Programs Menu
AlwaysCreate: True
DefaultLocation: [ALLUSERSMENU]\YourMenuHere
Property: MENULOCATION
Transitive: False
Place your shortcuts in that new folder.
That's it.
For reference here are the folder paths you can access in the registry for Windows XP:
and for Windows 7:
See ALLUSERS property on MSDN. The link in the first comment is broken.
http://msdn.microsoft.com/en-us/library/aa367559%28v=vs.85%29.aspx

Unable to connect to ASP.Net Development Server issue

I am debugging codeplex simple project. I am using
VSTS 2008
C#
Windows Vista x86 Enterprise.
I have not modified any code of this codeplex project, and just press F5 to run VideoPlayerWeb project.
The current issue I met with is error message --
Unable to connect to ASP.Net Development Server.
Here is my screen snapshots when clicking F5. Any ideas what is wrong?
I had this problem with VS 2010, and it was as simple as terminating the "WebDev.WebServer40.EXE" process. Although the icon was no longer showing in the system tray, the process was still running.
Could be a number of things...try these (check the last one first)...
Disable IPv6
Make sure there isnt an edit in the
hosts file for localhost
Check firewall/virus settings to allow connections to/from
devenv.exe
If you can preview in the browser
make sure the URL in the browser uses
the same port number as the port
number shown in the ASP.NET dev
server taskbar icon.
Try setting a fixed, predefined port
in project properties
I got these from a couple of forums elsewhere, hopefully they can help. Good luck. Let us know what works and some more about your environment (firewall, anti virus etc) can help as well.
Under project settings, try specifying a different port like 64773 for example. I have encountered this issue many times and it has always worked for me.
It cause the already that project port server is running in the current thread. You need to end process using task manager.
Follow below step:
Pres Ctrl+Alt+Delete (Task Manager)
find the asp.net server like
WebDev.WebServer40.exe for VS2010
and press end process.
Now u continue with vs2010 run
button
I went to the project file and changed the development server port to 1504. Well 1504 worked on another project for me, so I went with that. Hope this helps.
I have tried all of the above solutions and others from other websites too but with no luck.
What worked for me, was to rename or delete the applicationhost file:
C:\Users\User\Documents\IISExpress\config\applicationhost < rename or delete.
That is very odd! I hate to suggest something as simple as restarting Visual Studio...but that is what sounds like the best first place to start. Also, check your project settings. As you said that you just downloaded this and tried to run it...perhaps the solution/project is not set up to use the Casini server that is shipped with Visual Studio?
Here are the steps
'Website' Menu in your visual studio ide.
select 'Start Options'
enable 'Use Custom Server' radio button.
Enter any URL you desire similar to 'http://localhost:8010/MyApp'
Note1: you can use any port number not only '8010' but not designated port numbers like 8080(tcpip),25(smtp),21(ftp) etc.,
Note2: you can use any name not only 'MyApp'
This solution works for sure unless your WebDev.Webserver.exe is physically corrupted.
Error
1) Unable to connect Asp.net development server ?
Answer: No way find for that error
Try 1)
Step 1: Select the “Tools->External Tools” menu option in VS or Visual Web Developer. This will allow you to configure and add new menu items to your Tools menu.
Step 2: Click the “Add” button to add a new external tool menu item. Name it “WebServer on Port 8010” (or anything else you want).
Step 3: For the “Command” textbox setting enter this value: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebD ev.WebServer.EXE (note: this points to the
web-server that VS usually automatically runs).
Step 4: For the “Arguments” textbox setting enter this value: /port:8010 /path:$(ProjectDir) (or any port you like)
Step 5: Select the “Use Output Window” checkbox (this will prevent the command-shell window from popping up.
Once you hit apply and ok you will now have a new menu item in your “Tools” menu called “WebServer on Port 8010”. You can now select any web project in your solution
and then choose this menu option to launch a web-server that has a root site on port 8010 (or whatever other port you want) for the project.
You can then connect to this site in a browser by simply saying http://localhost:8010/. All root based references will work fine.
Step 6: The last step is to configure your web project to automatically reference this web-server when you run or debug a site instead of launching the built-in
web-server itself. To-do this, select your web-project in the solution explorer, right click and select “property pages”. Select the “start options” setting on the left, and
under server change the radio button value from the default (which is use built-in webserver) to instead be “Use custom server”. Then set the Base URL value to be:
http://localhost:8010/
Obviously I don't know if this is the problem you had but definitely it is something similar, essentially the problem should be that the same port used by your
Development Server is not available because it is already used by another web server.
Try 2)
Here are the steps
1. 'Website' Menu in your visual studio ide.
2. select 'Start Options'
3. enable 'Use Custom Server' radio button.
4. Enter any URL you desire similar to 'http://localhost:8010/MyApp'
Note1: you can use any port number not only '8010' but not designated port numbers like 8080(tcpip),25(smtp),21(ftp) etc.,
Note2: you can use any name not only 'MyApp'
This solution works for sure unless your WebDev.Webserver.exe is physically corrupted.
Both of not worked after that Windows repair option remain
My solution was to turn off Internet Connection Sharing on my wireless adapter, after which it immediately worked. I made no other change. I suspect ICS's DHCP server was interfering.
Try commenting out the following line, if it exists, in your hosts file (%windir%\System32\drivers\etc\hosts):
::1 localhost
This worked for me using Visual Studio 2008 SP1 on Vista Ultimate x64 SP2.
I got this problem a couple of times and done different things to fix it. When I got it this time all I did to stop getting "unable to connect to asp..." error, was rename the web app folder directory from xpCal to xpCal2. I also tried moving the web app directory to a different directory from C:users\<me>\desktop\ to C:\users\<me>\desktop\new folder and it also worked.
I don't know why it worked, does VS 2010 keep information about web apps seperate from web apps folder.
In my case, when I had the ASP.NET Development Server crash, one thing that worked was to change the port for the project.
I suspect what happened was when the web server crashed it did not release a lock on the port. Even though it was not running in Task Manager, something was blocking a new instance of the web server from starting again on the original port. Changing the port was a decent enough work around. I could have rebooted, but who has time for that, right?
Details: Windows 7 x64, VS2010, .NET Framework 4.0, ASP.NET web site using the built in web server to VS2010.
BTW, I would be a little cautious with replacing the WebDev.WebServerServer.EXE as suggested in other posts. If that file has been corrupted then you have bigger problems with your OS.
hi
Just change the asp.netweb development server port from automatic to a specific port
e.g 8010
That's what worked for me
1) not reflecting HttpContext in class file ?
Answer:-Most of the time when using this syntax in class file is not working
we have to add reference then it work in class file
example using system.web write this syntax in class file
System.Web.HttpContext(HttpContext is not reflecting )
after that i add refrence system web than it reflect
None of the above solutions worked for me, but I did find one that worked: opening up the Administrative Tools/Services window and stopping the "WebClient" service. It's something of a pain to have to disable it when trying to work with my code, but it's easier than the logging off and back on I used to have to do.
--Problem Definition
------ whenever we debug our project (either by pressing ctrl+f5 or only f5) the first .exe which is called by VS is called WebDev.WebServer.EXE which got corrupted may be n number of reasons
--Solution
------ We need to replace this file
------Step 1 ---
go location C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0
You will find this file
-------Step 2 ---
download WebDev.WebServer.rar file from
http://www.2shared.com/file/11532086/a7f9858a/WebDevWebServer.html
-------Step 3 ---
NOTE : You will need password for extraction this downloaded .rar file
Password : optimusprime
------ Step 4 ---
Copy the downloaded WebDev.WebServer.EXE file and replace in this below path
"C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0
"
--------step 5------
run the program
Go to Run >> type >> cmd >> type
taskkill /IM webdev.webserver20.exe
and then try to re run the program
In my case I was using Windows 8 and Windows Firewall was blocking WebDev.WebServer.EXE
So I went to the settings of Windows Firewall > Allow an app through Windows Firewall > Add new
and browse to C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\11.0
Then select WebDev.WebServer to allow.
For some poor souls out there starting using TypeMock on ASP.NET unit tests like me, you need to disable it in Visual Studio to avoid this error: In Tools->Add-in Manager, untick the boxes for TypeMock Isolator. I guess you need to switch this back on for your unit tests.

Categories

Resources