[英]Check if Adobe Acrobat Reader installed - pdf in WebBrowser control
[英]check Acrobat reader installed in pc and display installer
我的經理詢問了具有PDF文件的自動播放CD,並檢查了用戶PC上是否已在用戶PC上安裝了Adobe Acrobat,或者是否安裝了安裝了該消息的消息,從CD安裝了此程序,我有Windows應用程序來檢查PC中是否安裝了Adobe Reader或Acrobat是否做得很好,但我想如果未安裝該程序,則從CD播放acrobat Reader安裝程序,然后用戶安裝該程序。
public Form1()
{
RegistryKey adobe = Registry.LocalMachine.OpenSubKey("Software").OpenSubKey("Adobe");
if (adobe != null)
{
RegistryKey acroRead = adobe.OpenSubKey("Acrobat Reader");
if (acroRead != null)
{
string[] acroReadVersions = acroRead.GetSubKeyNames();
MessageBox.Show("The following version(s) of Acrobat Reader are installed: ");
foreach (string versionNumber in acroReadVersions)
{
MessageBox.Show(versionNumber);
}
}
}
else
{
MessageBox.Show("The following version(s) of Acrobat Reader arenot installed: ");
}
您需要調用安裝程序過程。 這樣的事情。
Process myProcess = new Process();
myProcess.StartInfo.FileName = "path to acrobat installer";
myProcess.Start();
更好的方法是為此在應用程序設置中添加自定義操作。
有幾種檢查方法。
1 /檢查已安裝的應用程序(Win Installer)
每個Windows安裝程序項目(MSI)都有一個升級代碼和一個產品代碼。 簡而言之,產品代碼定義了已安裝應用程序的版本及其依賴性。 升級代碼在不同版本上保持不變。 您可以在產品代碼中搜索acrobat閱讀器,並使用Windows Installer dll來檢查它是否已安裝。 在codeproject上有一些代碼(搜索MsiInterop),它將具有所有需要的dllimport。
2 /保持簡單。
為什么不只檢查是否有與帶有PDF擴展名的文件相關聯的應用程序?
如果有關聯的應用程序(可能是Acrobat Reader以外的其他東西,例如foxit),則認為一切正常。 否則,請啟動指向http://get.adobe.com/reader/的瀏覽器
這樣,您的應用程序對用戶選擇的PDF閱讀器不承擔任何責任。
在C#中訪問Windows安裝程序:
public enum InstallState
{
NotUsed = -7,
BadConfig = -6,
Incomplete = -5,
SourceAbsent = -4,
MoreData = -3,
InvalidArg = -2,
Unknown = -1,
Broken = 0,
Advertised = 1,
Removed = 1,
Absent = 2,
Local = 3,
Source = 4,
Default = 5
}
[System.Runtime.InteropServices.DllImport("msi.dll", CharSet = CharSet.Unicode)]
internal static extern InstallState MsiQueryProductState(string szProduct);
如果您知道Adobe Acrobat的產品代碼,則可以查詢其安裝狀態:
bool acrobatInstalled = allAcrobatReaderProductCodes.Any(guid =>
{
var productCode = "{" + guid.ToString().ToUpper() + "}";
var msiState = MsiQueryProductState(productCode);
return msiState == InstallState.Local || msiState == InstallState.Default);
});
其中allAcrobatReaderCodes是所有acrobat閱讀器產品代碼的IEnumerable。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.