সিএমডি এর মাধ্যমে নীরবে প্রোগ্রাম আনইনস্টল করা


30

গ্রাফিকাল ইন্টারফেস ছাড়াই প্রোগ্রামগুলি আনইনস্টল করার এবং সিএমডি এর মাধ্যমে করার কোনও উপায় আছে কি?

উত্তর:


19

মাইক্রোসফ্টের নির্দেশিকা অনুযায়ী যথাযথভাবে ইনস্টল হওয়া প্রতিটি প্রোগ্রামই একটি রেজিস্ট্রি প্রবেশ করে HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall। সাধারণত, প্রোগ্রামটির কীটি হ'ল তার জিইউইডি, অন্যথায় প্রোগ্রামটির নাম। এই কী এর মধ্যে একটি এন্ট্রি কল হবে UninstallString। এতে প্রোগ্রামটি আনইনস্টল করার জন্য কমান্ডটি অন্তর্ভুক্ত রয়েছে।

আপনি কী আনইনস্টল করবেন তা যদি আপনি যদি আগেই আগে থেকে জানতে থাকেন তবে এটি আপনার ব্যাচের ফাইলে রাখা যথেষ্ট সহজ হওয়া উচিত। আপনি যদিও সেই প্রক্রিয়াটি স্বয়ংক্রিয় করার চেষ্টা করার সময় এটি জটিল হয়ে ওঠে। আপনি regরেজিস্ট্রি থেকে ডেটা পেতে কমান্ডটি ব্যবহার করতে পারেন , তবে এটি প্রদত্ত কীটির প্রকৃত মানটির চারপাশে প্রচুর পাঠ্য ফেরত দেয়, এটি ব্যবহার করা শক্ত করে তোলে। আপনি ভিবিস্ক্রিপ্ট বা পাওয়ারশেল ব্যবহার করে পরীক্ষা-নিরীক্ষা করতে পারেন, কারণ তাদের কাছে রেজিস্ট্রি থেকে ভেরিয়েবলের ডেটা পাওয়ার আরও ভাল বিকল্প রয়েছে।


26

আপনি ডাব্লুএমআইসি ব্যবহার করে জিইউডি ইত্যাদি না জেনে সঠিক আনইনস্টলারটি শুরু করতে পারেন।

উইন্ডোজ দ্বারা অভ্যন্তরীণভাবে পরিচিত প্রোগ্রামগুলির নামের তালিকা দেখতে:

wmic product get name

আপনার পণ্যের নাম সন্ধান করুন। এটি সম্ভবত "প্রোগ্রাম এবং বৈশিষ্ট্যগুলি" নিয়ন্ত্রণ প্যানেলে তালিকাবদ্ধ একটির সাথে মেলে তবে সর্বদা নয়।

তারপরে আপনি ব্যবহার করতে পারেন

wmic product where name="_my_product_name" call uninstall

আনইনস্টলটি সম্পাদন করতে, যা এএফআইকে নিঃশব্দ হওয়া উচিত (এটি আমার অভিজ্ঞতা হয়েছে তবে আপনি ফার্মটি বাজি ধরার আগে চেষ্টা করে দেখুন। আপনার ইনস্টলার / আনইনস্টলারটি কীভাবে নির্মিত হয়েছিল তার উপর নিরবতা নির্ভর করতে পারে)।

আরও দেখুন এখানে:

মাইক্রোসফট.কম এ ডাব্লুএমআইসির রেফারেন্স ডকুমেন্টেশনও রয়েছে।


2
আপনি যোগ করে দূরবর্তী কম্পিউটার বিরুদ্ধে এই রান করতে পারেন /node:"<ComputerName>"উদা: wmic /node:"someuser-pc" product get name। নিশ্চিত হয়ে নিন যে আপনি নামের চারপাশে "" ব্যবহার করেছেন বা আপনি "অবৈধ গ্লোবাল স্যুইচ" ত্রুটিতে চলে যাবেন। এছাড়াও নিশ্চিত হয়ে নিন যে আপনি এটি একটি সিএমডি প্রম্পট থেকে চালাচ্ছেন এবং পাওয়ার শেল প্রম্পট থেকে নয় "" অবৈধ গ্লোবাল স্যুইচ "ত্রুটির জন্য পাওয়ারআরয়েল প্রম্পটে কাজ করে না as
ক্রিস ম্যাগনসন

1
দুর্দান্ত উত্তর, তবে ছোট সতর্কতা হ'ল ডাব্লুএমআইসি একটি কমান্ড কার্যকর করতে যথেষ্ট পরিমাণ সময় নিতে পারে। তালিকাবদ্ধ পণ্যগুলি আমার পিসিতে প্রায় 3 মিনিট সময় নেয়।
SmacL

যথাযথভাবে উল্লেখ করা হয়েছে, @ এসএমসিএল। আমি এটি কয়েকবার ব্যবহার করার জন্য কেবল উপলক্ষ পেয়েছি এবং আপনার সিস্টেমে কী আছে তার উপর নির্ভর করে আমি বিশ্বাস করতে পারি যে এটি কিছুটা সময় নিতে পারে।
কর্নট আন্তোনিও রোমেরো

7

আপনার যদি পাওয়ারশেল 3 (বা ততোধিক) ইনস্টল করা থাকে তবে আপনি সমস্ত প্রোগ্রামের নির্দিষ্ট কিছু নামকরণের জন্য ডাব্লুএমআই কল জারি করতে পারেন (বা 'পছন্দ মতো' কোনও জিনিস, ওয়াইল্ডকার্ড অনুসন্ধান করতে) এবং তারপরে Uninstallপ্রতিটিটির জন্য পদ্ধতিটি কল করতে পারেন:

(Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name like '%Partial Name%'").uninstall()


5

আপনি যদি জানেন যে এমএসআই ইনস্টলার ফাইলটি আপনি কোথায় ব্যবহার করতে পারেন:

Msiexec / আনইনস্টল করুন


5

যদি কোনও প্রোগ্রাম উইন্ডোজ ইনস্টলার ব্যবহার করে তবে আপনি নিম্নলিখিত আদেশগুলির মধ্যে একটি ব্যবহার করতে পারেন:

msiexec /q /x <ProductCodeGuid>
msiexec /q /x <PathToMsi>

তবে, আপনার কাছে সম্ভবত কোনও প্রোডাক্ট কোড বা ইনস্টলেশনের জন্য ব্যবহৃত মূল MSI ফাইল নেই।

এগুলি ব্যতীত, জেনেরিক আনইনস্টল কমান্ড নেই, যেহেতু উইন্ডোজ ইনস্টলার ব্যবহার করে না এমন ইনস্টলারগুলি অপারেটিং সিস্টেম দ্বারা "অজানা"। তারা তাদের নিজস্ব আনইনস্টল এক্সিকিউটেবল সরবরাহ করতে পারে, তবে যে এক্সিকিউটেবলের মধ্যে এটি জিইউআই ছাড়াই চালানোর কোনও উপায় অন্তর্ভুক্ত কিনা তা পৃথক সফ্টওয়্যার প্যাকেজের উপর নির্ভর করে।


1

একটি ভিবিএস স্ক্রিপ্ট স্ক্রিপ্ট আপনাকে প্রয়োজনীয় প্রোগ্রাম আনইনস্টল করতে সহায়তা করবে।

এই স্ক্রিপ্টটি ব্যবহার করার জন্য আপনার সফ্টওয়্যারটির প্রয়োজন হবে যা আপনার রেজিস্ট্রিতে অবস্থিত।

স্ক্রিপ্টটিতে কেবল অ্যাপ্লিকেশন নামটি প্রবেশ করুন এবং এডমিন সুবিধাসমূহের সাথে এটি চালান; এটি অ্যাপ্লিকেশনটি আনইনস্টল করবে। তবে এটি কেবল উইন্ডো ভিত্তিক অ্যাপ্লিকেশনের জন্যই কাজ করবে; স্বতন্ত্র সেটআপ বা অ্যাপ্লিকেশনগুলির জন্য যা নিবন্ধের আনইনস্টল স্ট্রিংটিতে প্রবেশ করে না, স্ক্রিপ্টটি কাজ করবে না।

সুতরাং সেই ক্ষেত্রে আপনাকে অ্যাপ্লিকেশনটি আনইনস্টল করার জন্য অন্য কোনও উপায় খুঁজে বের করতে হবে।

কোড:

On error resume Next

Dim strName, WshShell, oReg, keyname

Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."

'=============================================
'Change the value here with DisplayName's value
strName = " "
'=============================================
Set WshShell = CreateObject("WScript.Shell")
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
    keyname = ""
       keyname = wshshell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & subkey & "\DisplayName")
    If keyname = strName then
        i = subkey
    End If
Next

If i Then

    WshShell.Run "MSIEXEC.EXE /X " & i & " /QN", 1, True
End If

Set WshShell = Nothing
set ObjReg = Nothing

WScript.Quit

1

এটি দেখুন, এটি একটি ব্যাচটি ব্যবহার করছে সফটওয়্যারটির আনইনস্টল স্ট্রিং রেজিস্ট্রি কী এবং তারপরে নিঃশব্দে সফ্টওয়্যারটি আনইনস্টল করুন যা আমি খুঁজে পাওয়া ডাব্লিউএমির তুলনায় অনেক বেশি নির্ভরযোগ্যhttps://community.spiceworks.com/topic/2143980-deploy-or-upgrade-java-8-via-shutdown-script-remove-old-javas

::It extracts software software GUID, then use the GUID to search the name and version
@echo off
setlocal ENABLEDELAYEDEXPANSION

set SoftwareName=Java 8
set NewVersion=8.0.1720.11
set x86GUID=HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
set x64GUID=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
set Installer=\\dc\sources\jre-8u172-windows-i586.exe REMOVEOUTOFDATEJRES=1 AUTO_UPDATE=0 EULA=0 NOSTARTMENU=1 SPONSORS=0 WEB_ANALYTICS=0 WEB_JAVA=1 WEB_JAVA_SECURITY_LEVEL=H /s
REM set Installer=d:\downloads\jre-8u172-windows-i586.exe REMOVEOUTOFDATEJRES=1 AUTO_UPDATE=0 EULA=0 NOSTARTMENU=1 SPONSORS=0 WEB_ANALYTICS=0 WEB_JAVA=1 WEB_JAVA_SECURITY_LEVEL=H /s

REM It's faster to first locate the software GUID, then search it's Name, Version & UninstallString
for /f "delims=" %%P in ('reg query "%x86GUID%" /s /f "%SoftwareName%" 2^>nul ^| findstr "HKEY_LOCAL_MACHINE"') do (
  echo %%P
  reg query "%%P" /v "DisplayVersion" 2>nul | findstr /r /c:"  %NewVersion%" >nul && (
    for /f "tokens=2*" %%A in ('reg query "%%P" /v "DisplayName" 2^>nul ^|findstr "DisplayName"') do echo %%B has already been installed
    for /f "tokens=2*" %%A in ('reg query "%%P" /v "DisplayVersion" 2^>nul ^|findstr "DisplayVersion"') do echo Version: %%B
    goto :EOF
  ) || (
    for /f "tokens=2*" %%A in ('reg query "%%P" /v "DisplayName" 2^>nul ^|findstr "DisplayName"') do echo Found other version %%B, upgrade in progress
    for /f "tokens=2*" %%A in ('reg query "%%P" /v "UninstallString" 2^>nul ^|findstr "UninstallString"') do (
      echo %%B | findstr /c:"MsiExec.exe"  >nul && (
        set MsiStr=%%B
        set MsiStr=!MsiStr:/I=/X!
        echo !MsiStr! /quiet /norestart
        !MsiStr! /quiet /norestart
        rem %Installer%
      ) || (
        echo None MsiExec Uninstall String %%B
        rem "%%B" /S
      )
    )
  )
)
if not defined MsiStr (
  echo %SoftwareName% not found, install it?
  rem %Installer%
)

endlocal

0

সঠিক উত্তর উপরে আছে, তবে উইন্ডোজ এক্স 64 ইনস্টল করার জন্য আপনাকেও পরীক্ষা করতে হবে:

HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.