顯示具有 程式開發 標籤的文章。 顯示所有文章
顯示具有 程式開發 標籤的文章。 顯示所有文章

2013年2月17日 星期日

安裝 Outlook Addins 到所有使用者

由於專案的需求,需要把 Addins 改成安裝到所有使用者


所以又對一些項目做了調整


基本上在專案屬性設定那邊


把 InstallAllUsers 改為 True



程式所需要的登錄碼要放在


HKEY_LOCAL_MACHINE


而不是 HKEY_CURRENT_USER(不過也可以在程式內判斷,若沒有就新增到 HKCU 內)


建錯的話,安裝完可是看不到 Addins



不過 Outlook 2007 的部分會有一些狀況


無法載入Addins-LoadBehavior 會被強迫改成 0(應該是 3)


所以針對 Outlook 2007 的部分需要特別設定一個機碼



HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Common\General\

新增一個 DWORD Value


名稱是 EnableLocalMachineVSTO,值是 1



這樣就 Ok 囉


*不過 Outlook 2007 版本需要到 SP3


雖然簡短扼要,不過可是搞了一會兒


.


參考資料


Deploying your VSTO add-ins to All Users (Saurabh Bhatia)


A 2007 Office system application does not load an add-in that is developed by using VSTO


Known issues when you develop custom solutions for Office Outlook 2007


Deploying your VSTO Add-In to All Users (Part I) (Part II) (Part III)


Outlook 2007 Add-In, LoadBehavior changing to 0


Deploying a Visio 2007 or 2010 VSTO add-in with Visual Studio 2010


2013年1月24日 星期四

簡單紀錄 Code Signing for MAC Package file

最近因為專案的需求接觸到這一塊


簡單紀錄一下


首先針對一些 AppleScript 或是 Automator 所編寫出來的檔案



如果直接 Download 後點擊執行的話,應該是不會有問題


但是像在 Automator 的 WorkFlow 裡面從某一位置下載後放到另外一個位置


如果是由其它 App 偵測載入顯示的話,可能會發生找不到的情況


原因可能是安全性的關係


例如 Outlook 的 Plug-in 只要把 AppleScript 放到定位就可以出現了



不過若是由 WorkFlow 下載放進去則不會顯示(執行沒問題)


ps. 如果是自己先 Copy 到別的目錄 & 再 Paste 蓋回去就可以了


.


所以比較保險的方法是用安裝的


一開始從 XCode 裡面找不太到怎麼 New 一個安裝 Project


(還是不該用 MS 的經驗來套它 ^^)


後來找到了官方提供的 Package Maker 工具


需要自己下載安裝(老實說-這不查誰知道,怎麼不一起裝一裝就好了)


安裝下載位置


https://developer.apple.com/downloads/


找到


Auxiliary Tools for Xcode Developer



裡面感覺包含了一些開發會用到的工具


解開後把這些工具放到一個目錄內


可以看到這次要用到的 Package Maker



新建一個專案



設定 Title 名稱


選取要不要由 User Home 目錄開始安裝


另外透過快速鍵 Command + i 可以設定安裝最小 OS 版本需求


.


而左邊 Contents 區域則是直接把檔案拉進去就可以再進階設定了


點選文件


可以指定目標位置(點選齒輪可以選擇絕對或是相對位置)



後面還有權限以及安裝前後所需要另外執行的 Script


都沒問題之後,點選 Build and Run 就開始封裝囉


基本上產出會是 .pkg / .mpkg 檔案(看怎麼設定)


.


Code Signing 的部分則是用 Command Line 的模式說明


首先應該會有兩個檔案-憑證與安裝檔



(憑證的部份應該是在 Keychain 裡面)


.


Code Signing 前需要先解除 keychain 鎖定


security unlock-keychain -p mySecretPassword…


再執行 Signing


語法:PackageMaker --sign 檔案路徑 --certificate "憑證名稱"


ex.


$ /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker --sign ~/Desktop/Install.pkg --certificate "Jonny Li"


憑證名稱就是在 Keychain 裡面的完整名稱



.


執行指令之後,會跳出一個 Confirm 視窗,點選 Allow



如果沒問題的話


就這樣結束了


.


驗證的方法則是


sudo spctl --assess --verbose=4 --type install Install.pkg


正確的話,會顯示類似


Install.pkg: accepted


source=Apple Installer


否則,如使用測試憑證、憑證過期或不正確之類的,可能會顯示


Install.pkg: rejected


.


ps. 這邊之前有 Sign 失敗過的原因是,請勿使用 Telnet / SSH 登入作業,如為遠端電腦,請使用VNC


2010年6月20日 星期日

重建 IIS 內消失的 ASP .Net 版本

有時候安裝完 .Net Framework 1.1 & 2.0 之後,在 IIS 內指定執行 RunTime 的部份有時候 1.1 會不見。



變得只有 2.0 這個版本。


修復的方式就在其安裝目錄下,執行重新註冊的指令即可:


C:\Windows\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i


2010年5月28日 星期五

用 JavaScript 開新視窗的方式

僅列出我常用的方法而已


在開新視窗上,常用兩種方式:


1. window.open ( 開新視窗與原視窗平行處理或顯示額外資訊 )



window.open('[URL]', '[WindowName]', 'status=no,toolbar=no,scrollbars=yes,resizable=yes,width=600,Height=500');


2. window.showModalDialog ( 強迫新視窗處理完成後再回原視窗 )



lRets=window.showModalDialog('[URL]', '[WindowName]', 'dialogWidth:600px;dialogHeight:400px;center:yes;status:no;scrollbars:no');
if(typeof(lRets)=='string')
{
// code ...
}


若是原視窗要接續新視窗回 Call 的 Function,有一個通吃的方式



if (window.dialogArguments != null) {
window.dialogArguments.[FunctionName](varData);
} else if (top.window.opener != null) {
top.window.opener.[FunctionName](varData);
top.window.close();
}

2010年4月13日 星期二

ORA-01460 unimplemented or unreasonable conversion requested

為了這個問題,搞了一天了,特此紀錄一下,也當作自己的 KM 吧!




WEB:Windows Server 2003 SP 2
DB:Oracle 10g
Data Provider:Oracle Client 10.02.00.03
Language:Asp .Net with C#
直接使用SqlDataSource的UpdateCommand功能透過StoreProcedure更新資料

網路上找到的資料大部分都是因為CLOB欄位型態而引起,可參考這篇:
LazyAssCoder, Dec 05, 2007
VB.NET: Error: System.Data.OracleClient.OracleException: ORA-01460: unimplemented or unreasonable conversion requested

但是我們又沒有用過這個型態,所以繼續查,Oracle Support中則是有其他資訊
描述中提到
This is a server side OCI issue caused when using a rebind of the same cursor.
詳細資訊可搜尋 Oracle Support

可是因為環境又不能隨便上Patch
所以決定土法煉鋼,一步一步測試。
利用OnUpdating顯示Parameters確認資料都有之後,
先建立一個空的StoreProcedure,僅接參數但不作任何事。
結果...一樣。


後來用一個測試的Table,讓UpdateCommand去Update它,
然後在OnUpdating裡面用DbCommand重新寫一段程式去呼叫StoreProcedure,
隨便亂試之後,出現了另外一個錯誤訊息:
ORA-01461: can bind a LONG value only for insert into a LONG column.
把其中一個變數的長度顯示出來,發現有 3199 個字元
可是 Oracle 的 VarChar2 可以到 4000 呀!
突然想到之前 9i 轉 10g 有遇到類似欄位型態要轉換的問題
所以調整了一下,在OnUpdating將Parameters的DbType改為AnsiString就好了!
.aspx 部份


<asp:SqlDataSource ID="SqlDataSource1" runat="server" .....
UpdateCommand="[StoreProcedureName]" UpdateCommandType="storedProcedure"
OnUpdating="ConvertUpdateDBTypeValue">
<UpdateParameters>
<asp:Parameters.....
..........


.aspx.cs 部份


protected void ConvertUpdateDBTypeValue(Object source, SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters["[ParameterName]"].DbType = DbType.AnsiString;
}