我想根據excel版本(32位或64位)安裝vsto插件。 我打算將32位和64位msis捆綁在一起,並通過確定excel版本來安裝一個。 我能找到這個鏈接,通過使用註冊表來檢測2010 office是32位還是64位。 Detect whether Office is 32bit or 64bit via the registry 但我想檢查excel 2007和2013是否他們是32位或64位。 是否有可能通過註冊表來檢測它們。使用註冊表檢測安裝的MS Office是32位還是64位
2
A
回答
3
首先來說一下展望在這個關鍵的安裝版本:
HKEY_CLASSES_ROOT \ Outlook.Application \ CURVER
值將Outlook.Application.15(2013年)。然後分析該值以得到整數和查找此項:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微軟\辦公室\ 15.0 \ Outlook中
如果它存在,檢查位數的值,以確定它是否是32位(x86)或64位(x64)。如果它不存在,則假定爲32位。
2
您可以使用產品代碼(GUID)來標識Office應用程序的位數。有關更多信息,請參閱How to detect whether installed MS Office 2010 is 32 or 64 bit。
1
無法從註冊表(直接調用)可靠地檢測到它。最好是在C#或VB.net中創建自定義安裝程序模塊,獲取應用程序的ProductCode。從產品代碼,你可以得到Bitness。
產品代碼也從註冊表中獲取,但讓Office應用程序處理它。
Private IsExcel32Bit As Boolean = False
Private IsExcel64Bit As Boolean = False
Private ReadOnly STR_prdCodeDelimeter As Char = CChar("-")
Private Sub GetExcelBitness(ByVal exApp As Microsoft.Office.Interop.Excel.Application)
Dim prdCode As String = exApp.ProductCode
If Not String.IsNullOrEmpty(prdCode) AndAlso CInt(prdCode.Split(STR_prdCodeDelimeter)(3)(0).ToString) = 0 Then
IsExcel32Bit = True
ElseIf Not String.IsNullOrEmpty(prdCode) AndAlso CInt(prdCode.Split(STR_prdCodeDelimeter)(3)(0).ToString) = 1 Then
IsExcel64Bit = True
End If
End Sub
順便說一句,兩個安裝程序分開將在未來幫助你。如果MS Office未正確安裝,有時產品代碼可能爲空或錯誤。
3
鑑於:Office32安裝到「Program Files(x86)」中,這對我很有用。
我基本上檢查winword.exe是否在關鍵之下的某處。如果他們不安裝單詞部分,那麼在這一點上很難。我使用它來爲辦公室可變地運行32位或64位msi安裝程序。
<Fragment>
<Property Id="IS_32BITOFFICE">
<DirectorySearch Path="[ProgramFilesFolder]\Microsoft Office"
Depth="4"
AssignToProperty="no"
Id="IS_32BIT_OFFICE_DIRSEARCH">
<FileSearch Name="winword.exe" />
</DirectorySearch>
</Property>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="WIN64_OFFICE32_MSI">
<File Id="WIN64_OFFICE32_MSI" src="WIN64_OFFICE32.txt"/>
<Condition>IS_32BITOFFICE</Condition>
</Component>
<Component Id="WIN64_OFFICE64_MSI">
<File Id="WIN64_OFFICE64_MSI" src="WIN64_OFFICE64.txt"/>
<Condition>NOT IS_32BITOFFICE</Condition>
</Component>
</ComponentGroup>
</Fragment>
相關問題
- 1. 如何檢查我的Perl安裝是32位還是64位?
- 2. 如何檢查安裝的wxPython是32位還是64位?
- 3. 如何檢查安裝的Anaconda是32位還是64位?
- 4. 使用32位安裝程序刪除64位註冊表項
- 5. 如何檢測Cocoa應用程序是32位還是64位?
- 6. 無論系統是32位還是64位,int都是32位還是64位?
- 7. 如何判斷我的cygwin安裝是32位還是64位?
- 8. 如何檢測,如果CPU是32位還是64位
- 9. Autoconf:檢測目標平臺是32位還是64位
- 10. 如何知道安裝的jvm是32位還是64位使用javascript
- 11. 檢查應用程序是建立在32位還是64位?
- 12. 無論系統是32位還是64位,uint均爲32位?
- 13. 檢查正在運行的進程是32位還是64位
- 14. 在64位註冊表部分註冊32位本地服務器是對還是錯?
- 15. 註冊32位和64位的DLL
- 16. 手動安裝32位Office時存在的64位MS Access ODBC驅動程序
- 17. 檢測C++應用程序是在32位還是在64位Windows上運行
- 18. 如何找出安裝的Erlang是32位還是64位版本?
- 19. 在Windows和Linux中如何查找安裝的mercurial是32位還是64位?
- 20. 如何確定在Windows上安裝的庫是32位還是64位?
- 21. 確定Java安裝是32位還是64位的Windows bat文件?
- 22. 檢查處理器是32位還是64位
- 23. 結構大小,檢查是64位還是32位
- 24. 有沒有辦法檢查進程是64位還是32位?
- 25. 如何檢查WebSphere是32位還是64位?
- 26. 檢查辦公室是否安裝在64位Win OS使用註冊表
- 27. 在64位系統上檢測32位程序的安裝
- 28. 我在x86-64 PC上運行32位Windows。我應該下載32位還是64位的Python安裝程序?
- 29. 我怎麼知道gcc的版本是64位還是32位?
- 30. 從32位WIX安裝程序中檢測64位系統
我想查找office 2013應用程序的位數。 – siva
這同樣適用於Office 2013。 –