none
ClickOnce發生的問題 RRS feed

  • 問題

  • 大家好! 我使用ClickOnce讓cline可以直接安裝並使用軟體!
    可是安裝的時候會遇到(無法安裝或執行此應用程式.您須要先於全域組件快取(GAC)中安裝組件 DevExpress.Data.v8.1.dll
    版本8.1.2.0 才能使用此程式.)

    我後來把DevExpress.Data.v8.1.dll複製到C:\WINDOWS\assembly就可以執行安裝了!

    但是這又其他解決方法嗎? 還是說任何使用者都須要先手動複製DevExpress.Data.v8.1.dll到
    C:\WINDOWS\assembly內才能順利執行安裝?

    我原本是寫批次檔把DevExpress.Data.v8.1.dll複製到C:\WINDOWS\assembly可是卻發現沒有用!

    因為我.dll檔案不只一個,所以希望可以給使用者更簡單與便利的安裝方式!

    我的構想是把需要的.dll放到同一資料夾然後給使用者下載,執行我寫的批次檔就自動複製到C:\WINDOWS\assembly內!
    還是有其他的方式?

    希望網路上的先進可以幫我解惑!!

    還有就是我的程式內有一個資料夾是專門放圖片的可是我發現用ClickOnce安裝好的程式
    當我程式需要顯示圖片時就 會顯示路徑錯誤然後程式就當掉! 因為他找不到專門放圖片的資料夾!
    這我又該如何解決呢?
    2008年10月25日 下午 09:09

解答

  • (1)
    需要用到的 dll 在 Application Files 設定頁面,就要將 Publish Status 與 Download Group 設定為必要條件。
    當利用 ClickOnce 安裝後,該 dll 就會放到與程式發布相同的檔案夾內。

    (2)
    如果缺少目錄的話,你可以幾種方式處理。
    1. 利用程式判斷,例如在 Form_Load 事件檢查該目錄是否存在,沒有的話就自動建立。
    2. 先在專案內,建立該目錄並在目錄下先新增一文字檔案。
        到 publish 頁面,設定 Application Files 就會出現該檔案,將該檔案也設定為發佈的必要條件。
        當使用者安裝時,會一併將該檔案複製安裝,目錄自然就建立了。

    2008年10月26日 上午 04:01
  • 進入專案的屬性 -> Resources 頁面,加入你需要的圖片,例如:



    那麼在程式碼使用,參考如下:


    using System;


    using System.Windows.Forms;


    using WindowsFormsApplication1.Properties;


     


    namespace WindowsFormsApplication1


    {


        public partial class Form1 : Form


        {


            public Form1()


            {


                InitializeComponent();


            }


     


            private void Form1_Load(object sender, EventArgs e)


            {


                pictureBox1.Image = Resources.Delete;


            }


        }


    }



    2008年10月26日 上午 06:51
  • (1) 參考 HOW TO:使用 ClickOnce 部署 API 以程式設計方式檢查應用程式更新

    (2) 在你的 Setup 專案裡面,有分為三種目錄 Application Folder、User's Desktop、User's programs Menu

    其中 Application Folder 就是封裝所需檔案的地方,你可以檢查一下該目錄內是否只有所需要的 dll exe 等檔案,沒有不小心放進去的 cs vb 原始碼檔案。

    --
    瓶水相逢.Net - http://www.dotblogs.com.tw/chhuang  是我的部落格
    如果你有興趣分享你在學習程式設計的知識或是心得,
    也希望您可以加入點部落的行列...
    註冊您的部落格:http://www.dotblogs.com.tw/register.aspx
    2008年10月26日 上午 09:19

所有回覆

  • (1)
    需要用到的 dll 在 Application Files 設定頁面,就要將 Publish Status 與 Download Group 設定為必要條件。
    當利用 ClickOnce 安裝後,該 dll 就會放到與程式發布相同的檔案夾內。

    (2)
    如果缺少目錄的話,你可以幾種方式處理。
    1. 利用程式判斷,例如在 Form_Load 事件檢查該目錄是否存在,沒有的話就自動建立。
    2. 先在專案內,建立該目錄並在目錄下先新增一文字檔案。
        到 publish 頁面,設定 Application Files 就會出現該檔案,將該檔案也設定為發佈的必要條件。
        當使用者安裝時,會一併將該檔案複製安裝,目錄自然就建立了。

    2008年10月26日 上午 04:01
  • 第一項經由您的提點我已經解決這部分的問題!

    不過第二點我還是弄不太起來!
    我利用clickonce安裝後執行程式,因為有個程式是會自動幫我寄算bmi數值然後顯示相對應的圖片
    可是當我執行程式後會變成! http://cc.bioinfo.chu.edu.tw/~b09520013/error.JPG

    我程式內的寫法如下:
    public void show_image(float z)
            {
                if (z < 18.5)
                {
                    txtstate.Text = "過瘦";
                    string picPath = Application.StartupPath + "\\Image\\image\\18_5.jpg";
                    pictureBox1.Image = System.Drawing.Image.FromFile(picPath);
                }
                else if (z >= 27)
                {
                    txtstate.Text = "肥胖";
                    string picPath = Application.StartupPath + "\\Image\\image\\27_9.jpg";
                    pictureBox1.Image = System.Drawing.Image.FromFile(picPath);
                }
                else if ((z < 27) && (z >= 24))
                {
                    txtstate.Text = "過重";
                    string picPath = Application.StartupPath + "\\Image\\image\\26_9.jpg";
                    pictureBox1.Image = System.Drawing.Image.FromFile(picPath);
                }
                else if ((z < 24) && (z >= 18.5))
                {
                    txtstate.Text = "標準";
                    string picPath = Application.StartupPath + "\\Image\\image\\23_9.jpg";
                    pictureBox1.Image = System.Drawing.Image.FromFile(picPath);
                } 
            }

    因為我的程式很多界面都用到我自己設計的圖片!利用
    ClickOnce程式安裝後介面的底圖或ico等顯示都很正常
    唯獨依狀況動態顯示的圖片會出問題!  所以我想說是不是因為路徑
    錯誤的關係!

    ps:我所有的圖片都放在
    \\Image\底下的資料夾
    2008年10月26日 上午 06:03
  • 如果可以的話,將那四張圖片放進 Resources,比較容易管理而且程式碼也比較容易寫

    2008年10月26日 上午 06:08
  • 不好意思! 可以再請教個問題嗎?

     Application.StartupPath 他會抓到 /bin/debug/底下的路徑

    如果我把圖片放到 Resources 我該怎樣找到我指定的
    Resources資料夾呢?
    2008年10月26日 上午 06:13
  • 進入專案的屬性 -> Resources 頁面,加入你需要的圖片,例如:



    那麼在程式碼使用,參考如下:


    using System;


    using System.Windows.Forms;


    using WindowsFormsApplication1.Properties;


     


    namespace WindowsFormsApplication1


    {


        public partial class Form1 : Form


        {


            public Form1()


            {


                InitializeComponent();


            }


     


            private void Form1_Load(object sender, EventArgs e)


            {


                pictureBox1.Image = Resources.Delete;


            }


        }


    }



    2008年10月26日 上午 06:51
  • 天阿!! 我已經弄好了!  真的很感謝  chhuang 願意花時間幫我解決書上所學不到的問題!   受教了!!

    利用
    Resources 可以更簡單與方便喔!!

    原來
    瓶水相逢.Net - http://www.dotblogs.com.tw/chhuang 是您的網站?
    我之前找資料也從這網站找到我需要的資料!真的是受益良多阿! 這網站也有在我的最愛裡面!

    (1).那可以再請教如果我要發布單一安裝檔,在程式內點一個鈕就可以幫我看看是不是有新版的可以更新
    有哪些参考資料可以幫助我参考的呢?

    (2).另外我用部屬安裝應用程式把我的程式封裝成一個安裝檔,可是當使用者安裝完後在資料夾的路徑底
    下為什麼是我全部程式的原始檔,這樣每個人都看得到我的原始碼並且編輯了阿?  這我不太懂為什麼會這樣!
    這又該如何解決呢?

    最後也感謝您今天幫我解決我clickonce的難題了! 如果以上兩點我也能完成那我的專案就100%完成。^.^
    2008年10月26日 上午 07:20
  • (1) 參考 HOW TO:使用 ClickOnce 部署 API 以程式設計方式檢查應用程式更新

    (2) 在你的 Setup 專案裡面,有分為三種目錄 Application Folder、User's Desktop、User's programs Menu

    其中 Application Folder 就是封裝所需檔案的地方,你可以檢查一下該目錄內是否只有所需要的 dll exe 等檔案,沒有不小心放進去的 cs vb 原始碼檔案。

    --
    瓶水相逢.Net - http://www.dotblogs.com.tw/chhuang  是我的部落格
    如果你有興趣分享你在學習程式設計的知識或是心得,
    也希望您可以加入點部落的行列...
    註冊您的部落格:http://www.dotblogs.com.tw/register.aspx
    2008年10月26日 上午 09:19