2015年6月22日 星期一

C# 安裝windows服務 與 移除服務的方法

1.當寫完windows服務後會有以下畫面:
  該服務擁有一個WatchDogForDisasterResouce.exe 檔案 該檔案必須使用installutil.exe 進行安裝,要使用該元件就需要使用命令提示字元進行安裝( 一個方法 )

2. 這個installutil.exe 元件 預設在 C:\\Windows\\Microsoft.Net\\Framework\\v4.0.30319\\
資料夾底下

3. 接著我們開啟命令提示字元 
   C:\Windows\Microsof.Net\Framework\v4.0.30310\InstallUtil.exe 
表示使用的安裝元件位置 接著空一格 加入以下(服務的.exe位置):
  C:\Users\Administrator\Desktop\DisasterResource\WatchDogForDisasterResource\bin\Debug\WacthDogForDisasterResource.exe

按下鍵盤上的Enter就可以安裝完成!


4. 如果需要移除服務請輸入以下:   
   sc delete disasterresourceservicecatchapi
 
   ※也就是 sc delete (服務名稱)  

5. 步驟4的disasterresourceservicecatchapi其實也就是如下圖服務的福稱

2015年6月20日 星期六

C# WinForm 使用log4net 紀錄log的方法 - >最快速成使用

1. 先到log4net網站下載最新版的log4net
    http://logging.apache.org/log4net/download_log4net.cgi



















2. 接著請選擇 log4net-1.2.13-bin-newkey.zip 當前最新版本下載


3.接著將下載來的壓縮檔案進行解壓縮
















4.在資料夾中 log4net-1.2.13-bin-newkey//og4net-1.2.13//bin//net-cp//3.5//release 資料夾底下的log4net.dll 就是我們C# winform程式所需要參考的檔案

5. 請先建立一個visual 2008 以上版本的 C# winfrom專案 ,畫面應該會是如下

6.我們在建立的專案底下 建立"Resouce"資料夾,並且將剛剛的log4net.dll 語 log4net.xml 複製到"Resouce"資料夾中 (也就是我們建立的專案底下建立一個"Resource"資料夾並將檔案放入)

7.接著回到C#專案-> 方案總管視窗 -> 參考 ->滑鼠右鍵 ->加入參考(剛剛Resouce底下的log4net.dll )  成功應該會如下:

8. 然後我們在主程式的地方加入
    using log4net;
    using log4net.Appender;


9. 接著在專案中建立一個資料夾 "Lib" 目的是為了加入應用程式組態,如下面兩張圖的步驟



10.打開app.config 加入以下的log4net資訊

<?xml version="1.0"?>
<configuration>
    <configSections>
       <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0" />
    </configSections>

  <log4net>
     <root>
     <level value="ALL"/>
     <appender-ref ref="LogFileAppender"/>
     <appender-ref ref="UdpAppender"/>
    </root>

   <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
              <param name="File" value="MyLog.txt"/>
              <param name="AppendToFile" value="MyLog.txt"/>
              <layout type="log4net.Layout.PatternLayout">
                    <param name="ConversionPattern" value="%d %-5level 第%L行 &gt;%n - %m%n"/>
              </layout>
      </appender>

</log4net>

 <startup>
   <supportedRuntime version="v4.0" sku=".NETFramework, Version="v4.0" />
 </startup>
</configuration>


11. 接著在開起專案中的AssemblyInfo.cs 加入 以下組件資訊
[assembly: log4net.Config.DOMConfigurator(ConfigFileExtension = "config", Watch = true)]

如下圖


12. 接著就可以在主程是裡面使用log4net
   
          private static log4net.ILog Log = log4net.LogManager.GetLogger("");
       
    並且可以在需要Exception 的地方加入Log.Error(""); 或 Log.Info("");  產生的log檔案會在Debug資料夾底下。檔案名稱為MyLog.txt  (可在第10.步驟的時候將名稱改掉,位置也可以修改)

















2015年6月9日 星期二

C# windowsForm ClickOnce 的部署 - 是否能夠安裝到所有使用者底下?

If you need to install / upgrade for all users on a PC, Clickonce is not an option. Clickonce is meant for installing an application for a single user without administrative rights.
You will need to create a MSI installer to distribute an application to multiple users on the same machine. There are multiple ways to deploy and update applications on clients when the client does not have administrative rights. A few examples:
  • Advertise your MSI in Active Directory, installation and upgrade does not require administrative privileges.
  • Use System Center Update Publisher (SCUP) to publish your application to Windows Server Update Services (WSUS). With WSUS you can deploy Microsoft updates, and your application. Both WSUS and SCUP are freely available for download.
  • Use Group Policy to elevate installers (not a recommended solution!), to enable non-admins to install MSIs for all users
Hope this helps.

ClickOnce 是綁定單一使用者的方式進行更新檢查,因此不行,如果windows同一作業系統底下有多個使用者,那麼該程式對於所有使用者是獨立的。
寫一個Msi做控制是個不錯的選擇......

文章來源: http://stackoverflow.com/questions/276916/click-once-all-users