目前分類:程設 (2)

瀏覽方式: 標題列表 簡短摘要
之前提到部署VSTO Solution時要設定安全性原則,而設定安全性原則,需要透過「Microsoft .NET Framework 2.0 Configuration」這個工具。

根據VSTO Solution的需求,客戶端主機(非開發主機)要裝有下列的軟體:前幾天辛苦地裝完,要去設定安全性原則時,才發現怎麼找都找不到「Microsoft .NET Framework 2.0 Configuration」。後來找到這篇Details about setup for the .NET Framework 2.0 configuration tool,寫說Configuration Tool已從.NET Framework 2.0 Redistributable中被移除,放到了.NET Framework 2.0 SDK裡面。Orz 害我找超久的……

該篇文章裡有提供一種解決方式,不過感覺挺複雜的。此外也可以安裝非常肥大的.NET Framework 2.0 SDK,安裝完就會出現Configuration Tool。最後還有一個比較正統的做法,就是利用.NET Framework 2.0 Redistributable裡的command-line tool Code Access Security Policy Tool (Caspol.exe)來設定,這個和原本Configuration Tool功能幾乎一模一樣,只是它是文字介面,需要下指令來使用。後面就非常簡略地介紹一下Caspol.exe吧。

Caspol.exe一般會放在「C:\Windows\Microsoft.NET\Framework\v2.0.50727\」底下,這篇Configuring Security Policy Using the Code Access Security Policy Tool (Caspol.exe)介紹了許多Caspol.exe的使用方式。不過在設定組件安全性原則時,主要只會用到這篇Configuring Code Groups Using Caspol.exe裡提到的功能。

CasPol.exe -user -listgroups
檢視「使用者」底下的Code Group。

CasPol.exe -user -addgroup 1 -url "C:\test.dll" FullTrust
新增Code Group到「使用者」裡標號為1的目錄底下,並將url設成"C:\test.dll",權限為FullTrust。

CasPol.exe -user -chggroup 1.1. -url "C:\test\test.dll" FullTrust
將標號為1.1.的Code Group的url改成"C:\test\test.dll",權限設成FullTrust。

CasPol.exe -user -remgroup 1.1.
移除標號為1.1.的Code Group。

若要寫成Batch檔,要記得在一開始加上下列的指令:
CasPol.exe -pp off
將prompt關掉。

為了搞定這東西,又花了好多時間……Orz

thePaul 發表在 痞客邦 留言(0) 人氣()

因為打工的需要,寫了一個簡單VSTO Excel Solution,可是發行後卻無法正常地使用。

把發行後的Excel檔點開,會出現如下的訊息:
Office文件自訂
目前的.NET安全性原則不允許執行自訂。請勿變更您電腦中的安全性原則。.NET安全性原則是由您的系統管理員或撰寫自訂的程式開發人員所控制。您仍然可以編輯及儲存文件。請聯絡您的系統管理員或此文件的作者,以取得進一步協助。



英文版則會出現:
Office document customization is not available
The customization assembly could not be found or could not be loaded. You can still edit and save the document. Contact Your administrator or the author of this document for futher assistance.


接著Excel原本的VSTO功能都無法使用,變成了普通的Excel檔。

總算在昨天找出原因了,要使用VSTO組件,就要設定該組件(.dll)的安全性原則。
先照著「控制台」→「系統管理工具」→「Microsoft .NET Framework 2.0 組態(Configuration)」點開,會出現如下的視窗:
(若找不到該Configuration Tool,請參閱這篇「找不到.NET Framework 2.0 Configuration」)

再照著「.NET Framework 2.0 Configuration」→「我的電腦」→「執行階段安全性原則」→「使用者」→「程式碼群組」,最後在「All_Code」上按「新增...」會跳出如下的視窗:

填完想要的名稱和描述後,下一個畫面如下:

條件類型選擇「URL」,並在下方的URL欄位裡填入組件(.dll)的完整位置,再按下一步。

簡單起見,就選擇「使用現有的使用權限集合」並設定成「FullTrust」,按下一步就會出現完成的畫面啦。


設定完成後,再開一次剛才的Excel檔,先前的警告訊息就不會出現了,而且裡面的功能也可以正常使用了!嗚嗚~打工的東西總算能交差了…

這些步驟可能有辦法自動化設定完成,不過我懶,而且目前也不太需要,就繼續沒有研究了。記下來是怕我將來會忘記怎麼設定,就這樣。

2008/05/18更新:
今天發現一個很重要的問題,就是發行之後的Excel檔是根據絕對路徑去參考組件(.dll)的,也就是說移動了組件(.dll)的位置,就算安全性原則設計正確,Excel檔也無法正常運作。不過Excel檔本身就可以任意地更改位置。之前誤以為Excel檔是以相對路徑參考組件(.dll)的,浪費超多時間才發現這個問題……Orz

thePaul 發表在 痞客邦 留言(0) 人氣()