2

私は小さな束縛に陥っています。問題のプログラムは、プログラム ファイル ディレクトリ (64 ビット) または X86 パスにインストールできます。このプログラムは、すでに 200 台以上のマシンにインストールされています。デフォルトのインストール パスが X86 であることは確かです。これがデフォルトであるためです。確かではなく、両方のシナリオをカバーする必要があります。これをインストールした元のシステム管理者は .msi を使用しなかったため、""C:\Program Files\InstallShield Installation Information{78AC336D-25F6-4916-A711-2EA2F69E0319}\setup として見つけたものが残っています。 .exe」は、あるユーティリティが提供するコマンドとして、私が見つけたアプリケーションをリモートでアンインストールするためのものです。機能しませんでした。

この問題を考慮して、プログラム ファイルと X86 パスの両方をチェックし、場所に応じてアンインストールするスクリプトを使用して、このプログラムをアンインストールする方法はありますか? または、X86/プログラムの元のインストール場所を気にせずにプログラムを完全にアンインストールするスクリプトはありますか。これらすべてのマシンで期間をアンインストールするだけです。インストール .bat は準備完了です。私ができないことは、32 または 64 ビット マシン用のスクリプトを介して X アプリケーションをアンインストールするためのウィンドウを取得することです。

MsiExec.exe /X{78AC336D-25F6-4916-A711-2EA2F69E0319} /quiet を試しましたが、うまくいきませんでした。今回は .msi のインストールを試みることができますが、道に迷ってしまい、「エンド ユーザーにここをクリックするよう混乱させることなく」伝えるためのスクリプトやアンインストール スクリプトについての知識が限られています。コントロールパネルなどに行くように言うことはできますが、失われます....典型的です。

元の .msi ではなく、何かを機能させる方法がわからない場合に、このアンインストールをスクリプト化する方法についてのアイデアはありますか? 私は何に対してもオープンです。これを修正するのに2日かかりますが、パニックモードになっています...

コードに関するアイデアやヘルプをいただければ幸いです。

よろしく、ブライアン

4

3 に答える 3

4

wmicアンインストーラーを呼び出すことができます。私はこれを試していませんが、うまくいくと思います。

wmic /node:computername /user:adminuser /password:password product where name="name of application" call uninstall

プログラム自体が何を呼び出しているか正確にわからない場合は、

wmic product get name | sort

そして探してください。SQL 風のワイルドカードを使用してアンインストールすることもできます。

wmic /node:computername /user:adminuser /password:password product where "name like '%j2se%'" call uninstall

... たとえば、*j2se*「J2SE Runtime Environment 5.0 Update 12」の大文字と小文字を区別しない検索を実行してアンインストールします。(上記の例では、%j2se%は環境変数ではなく、両端に SQL 風のワイルドカードを付けた単なる単語「j2se」であることに注意してください。検索文字列が環境またはスクリプト変数と競合する可能性がある場合は、2 つのパーセントを使用してリテラルを指定します。のようなパーセント記号%%j2se%%。)

y/nアンインストールを完了する前にwmic が確認を求めるプロンプトを表示する場合は、次のことを試してください。

echo y | wmic /node:computername /user:adminuser /password:password product where name="whatever" call uninstall

...y要求する前に a を渡す。

私はこれをテストしていませんが、とにかく試してみる価値があります。1 台のコンピューターで機能する場合は、for ループを使用して組織内のすべてのコンピューター名を含むテキスト ファイルをループ処理するか、ドメイン ポリシーのログオン スクリプトに配置します。

于 2013-02-13T22:56:22.970 に答える
2

Windows 7 x64と、何らかのインストーラーで以前にインストールされたものを扱っていると仮定すると、 regeditを開いて以下のキーを検索できます。

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

( 32 ビットプログラムを参照する) プログラムの名前の一部、または

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

(実際に 64 ビット プログラムであった場合)。

それらのいずれかでプログラムに一致するものが見つかった場合UninstallString、そのキーの内容は通常、探している正確なコマンドを提供します (スクリプトで実行できます)。

これらのレジストリの場所に関連するものが見つからない場合は、ファイルを解凍して「インストール」された可能性があります。Control Panelで削除するとおっしゃっていたので、そうではない可能性が高いと思います。そこのプログラムのリストにある場合は、前述のレジストリ キーのいずれかにあるはずです。

次に、.batスクリプトで実行できます

if exist "c:\program files\whatever\program.exe" (place UninstallString contents here)
if exist "c:\program files (x86)\whatever\program.exe" (place UninstallString contents here)
于 2015-03-25T17:13:29.143 に答える
0

私の経験でwmicは、スクリプトで使用するには、ネストされた引用符を正しく取得する必要があります。

wmic product where "name = 'Windows Azure Authoring Tools - v2.3'" call uninstall /nointeractive 

クエリと名前の両方を引用します。ただし、wmic は、Windows インストーラーを介してインストールされたもののみをアンインストールします。

于 2015-09-17T12:46:01.627 に答える