2011-05-04 47 views
2

我上部署我的第一個Visual Studio工具用於Office(VSTO)工作加載使用VSTO 4卸載的MS Office應用程序級別VSTO外接

沒有安裝的添加 - 一些不同的選擇在註冊表項中。它可以是每個用戶在HKEY_CURRENT_USER或每臺機器HKEY_LOCAL_MACHINE下。我的許多用戶都在Citrix或終端服務下運行。我處於管理員將在服務器上運行我的安裝的情況,因爲用戶沒有正確的權限。另外,我的用戶只佔這些服務器上用戶的一小部分。

由於這些原因,我打算建立一個小工具,隨插件一起發貨。該實用程序將創建正確的Per User註冊表項來啓用加載項。管理員將加載項DLL和我的實用程序安裝到c:\ program files *。然後,實際需要加載項的用戶將被指示運行該實用程序一次,然後單擊「啓用」按鈕。

我現在堅持的問題是如何卸載加載項。我的卸載程序(由管理員再次運行)可以處理它創建的所有內容,但無法刪除每用戶註冊表項。

我希望這會是一個問題,Word會忽略下一次啓動時缺失的加載項。

這不起作用 - Word報告嘗試在下次運行時「安裝」定製的錯誤。

「安裝Office自定義」 安裝 時發生錯誤。正在下載文件 file://xxx/xxx.vsto沒有成功。

我在每個Registry Entries for Application-Level Add-Ins msdn article註冊表項末尾加上「| vstolocal」。

是否有反正阻止Word試圖加載加載項,如果該文件不存在?

卸載程序是否有一種方法可以清除卸載時每個用戶的註冊表項,而不是運行卸載程序的用戶?

我正在使用Office 2007在Windows 7計算機上進行測試。我正在使用針對.Net 4框架的VSTO 4。

回答

1

關於你的兩個問題

反正有從 停止詞嘗試,如果該文件 不存在加載外接?

不,我知道的,但是,我只是想動過DLL的我的REG條目指向我的插件的之一,我沒有得到消息,(如果我去到Word的選擇COM加載項區域,我可以看到插件沒有加載,這是正確的)。

是否有一個卸載程序 清理每用戶註冊表項上 卸載了比 一個運行卸載其他用戶的方法嗎?

不,我幾乎沒有辦法做到這一點。它需要權限給每個用戶的配置文件文件夾。

但是,您可以在Office註冊表樹下創建這些奇怪的密鑰,它們實際上充當辦公應用程序加載時執行的「命令」。

因此,在卸載時,您需要將額外的密鑰寫入Office註冊表項中,實質上是指「在辦公應用程序加載時從當前HKCU配置單元中除去這些密鑰」。

這裏有一個例子註冊腳本,我發現,顯示了奇怪的鑰匙,但我不能馬上發現,記錄他們正是任何鏈接:

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\AllUsersTemplates] 
"Count"=dword:00000001 
"Order"=dword:00000008 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\AllUsersTemplates\Create\Software\Microsoft\Office\12.0\Common\General] 
"SharedTemplates"=hex(2):-fill in your own Binary Value- 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\RemoveInstantSearchBar] 
"Count"=dword:00000001 
"Order"=dword:00000001 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\RemoveInstantSearchBar\Create\Software\Microsoft\Office\12.0\Outlook\Search] 
"DisableDownloadSearchPrompt"=dword:00000001 

<<<<<CreateFile>>>>>>> 
Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\FileCopy1] 
"Count"=dword:00000001 
"Order"=dword:00000008 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\FileCopy1\CreateFile\FileCopy1.potx] 
"TargetFile"="[AppDataFolder]\\Microsoft\\Templates\\FileCopy1.potx" 
"SourceFile"="C:\\Documents and Settings\\All Users\\Templates\\FileCopy1.potx" 

如果你仔細觀察,你會看到在\ Office \鍵下,創建一個「用戶設置{名稱} \創建\」鍵,然後其餘的鍵路徑從HKCU下的Software \ on下複製路徑。

您可以使用關鍵字CREATE或DELETE(刪除一個鍵)。

儘管如此,請注意COUNT和ORDER值。這些都很重要,需要設置正確。

但是,再次,我無法找到文件中的這個鏈接。

+0

你提到你沒有從單詞中得到消息。你添加VSTO插件還是直接COM?我看到的錯誤信息似乎確實來自VSTO運行時。 – 2011-05-05 18:40:47

0

您可以使用Active Setup來卸載您的每個用戶的VSTO加載項。

如果您不熟悉Active Setup,該功能將HKLM Installed Components子項與HKCU Installed Components子項進行比較,如果子項丟失(或者如果找到且子鍵Version值更大),則會執行StubPath值, HKLM Installed Components子項被複制到HKCU Installed Components。

聲明:主動安裝程序是一個未公開的但頻繁使用的Windows功能。使用風險自負。不要嘲笑Active Setup。