c# winform 打包部署 自訂介面 或設定開機啟動

來源:互聯網
上載者:User

http://blog.csdn.net/zexin1000/article/details/7565393

方法一:

建立安裝部署這部分就不用說了,添加安裝部署項目後,滑鼠右鍵安裝項目->視圖->註冊表, 要使軟體在開機就運行,可以在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run中添加索引值儲存軟體目錄。在這裡我們依次添加以上的項,然後在Run中添加索引值,鍵名可以自己起,value要填軟體的實體路徑。實體路徑是客戶在部署確定的,我們如何擷取呢?這裡我們可以使用[TARGETDIR]擷取客戶選擇的路徑,在加上軟體的開機檔案名稱。比如軟體開機檔案的名稱是Client.exe,那麼Value的值就為:[TARGETDIR]Client.exe.產生安裝項目。找到bin目錄下的setup.exe檔案運行,安裝結束後我們可以在註冊表中找到相應的索引值。重啟電腦系統就會自動運行我們設定的軟體。

引自:http://www.cnblogs.com/whj518/archive/2009/10/28/1591026.html

方法二:

CSDN中使用VS製作安裝程式的介紹很多,我這裡主要是在開發winform是製作安裝程式後,如何修改.config設定檔,並修改註冊表HKEY_LOCAL_MACHINE、SOFTWARE\Microsoft\Windows\CurrentVersion\Run下的資訊,讓自己的程式開機自動運行。

解決以上兩個問題關鍵要作到以下幾點:

1、建立安裝項目後要在自己的解決方案是添加一個新的類庫項目(ClassLibrary1),並在新類庫中添加一下安裝程式類(Installer1),在Installer1類中添加如下代碼:

    string LogicDir;//用於讀取安裝目標的實體路徑
        protected override void OnAfterInstall(IDictionary savedState)
        {
              
            base.OnAfterInstall(savedState);
        }
        public override void Install(IDictionary stateSaver)
        {
            //string ll=Context.Parameters[]
            LogicDir = Context.Parameters["LogicDir"];//Context.Parameters["LogicDir"]; 
            base.Install(stateSaver);
        }
        protected override void OnBeforeInstall(IDictionary savedState)
        {
            base.OnBeforeInstall(savedState);
        }
        public override void Uninstall(IDictionary savedState)
        {
            base.Uninstall(savedState);
        }
        public override void Rollback(IDictionary savedState)
        {
            base.Rollback(savedState);
        }

2、在庫類項目ClassLibrary1是添加一個window表單form1,用於完成自訂的安裝配置。

     表單介面自己設計;

  如添加三個TextBox

     txtServerName伺服器名稱

  txtSQLUserName  SQL使用者名稱稱

     txtSQLUserPassword SQL使用者口令

     添加一個Button

 

  給Form1添加欄位 string filePath;

   重載Form1的建構函式

     public Form1(string filepath)

        {
            filePath = filepath;
            InitializeComponent();
        }

Button1的單擊事件代碼如下:

 private void btSave_Click(object sender, EventArgs e)
        {
            
               Configuration config = ConfigurationManager.OpenExeConfiguration(filePath + @"\MySchool.exe");
           //配置MySchool.exe.config檔案。

            if (config.ConnectionStrings.ConnectionStrings["MySchoolConnectionString"] != null)
            {
                config.ConnectionStrings.ConnectionStrings.Remove("MySchoolConnectionString");
                //="Data Source=.;Initial Catalog=MySchool;User ID=sa;Password=123456"
                string connString = "Data Source=" + this.txtServerName.Text.Trim();
                connString += ";Initial Catalog=MySchool;User ID=" + this.txtSQLUserName.Text.Trim();
                connString += ";Password=" + this.txtSQLUserPassword.Text.Trim();
                ConnectionStringSettings conn = new ConnectionStringSettings("MySchoolConnectionString"
                    , connString, "System.Data.SqlClient");
                config.ConnectionStrings.ConnectionStrings.Add(conn);
                config.Save();
               //此處開開始添加開機自動啟動並執行索引值,注意要using Microsoft.Win32;
                RegistryKey hklm = Registry.LocalMachine;
                RegistryKey shoftwer = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",true);
               // RegistryKey ksxt = shoftwer.CreateSubKey("ksxt");
                shoftwer.SetValue("ksxt", filePath + @"\MySchool.exe");
                Application.Exit();
            }
        }

3.修改安裝程式類Installer1中的OnAfterInstall方法如下:

        Form1 fm1 = new Form1(LogicDir);//執行個體化一個表單,
            fm1.ShowDialog();//讓新表單顯示
            base.OnAfterInstall(savedState);

4.修改安裝程式類Installer1中的Install方法如下

            LogicDir = Context.Parameters["LogicDir"];//讀取安裝目標路徑
            base.Install(stateSaver);

5.在安裝項目中“自訂動作”

  右擊“安裝”添加自訂動作,自訂動作來源於安裝項目的“應用程式檔案夾”中的“主輸出來自ClassLibrary1(活動)”項。

6.修改“主輸出來自ClassLibrary1(活動)”的CustomActionData屬性為 /LogicDir="[TARGETDIR]\"

  把Windows Installer 屬性的安裝目標屬性[TARGETDIR]賦值給LogicDir,這樣在Install方法中才能讀取到安裝路徑。

照以上步驟產生解決方案後,即可發布自己的程式。

用以上思路也可以實現卸載輸入合法口令卸載的功能。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.