2

SCCMを使用しているデバイスまたはユーザーのアプリケーションをアンインストールしようとしています。アプリケーションをインストールするアプリケーション割り当てを作成することに成功しましたが、アンインストールすることができませんでした。私が使用しているコードは次のとおりです。

IResultObject assignment = this.manager.CreateInstance("SMS_ApplicationAssignment");
IResultObject application =
        this.manager.GetInstance("SMS_Application.CI_ID=16777339");

assignment["ApplicationName"].StringValue = application["LocalizedDisplayName"].StringValue;
assignment["AssignedCI_UniqueID"].StringValue = application["CI_UniqueID"].StringValue;
assignment["AssignedCIs"].IntegerArrayValue = new[] { application["CI_ID"].IntegerValue};
assignment["AssignmentName"].StringValue = "Deepak's deployment";
assignment["CollectionName"].StringValue = "Deepak's Collection of Devices";
assignment["DisableMomAlerts"].BooleanValue = true;
assignment["NotifyUser"].BooleanValue = false;
assignment["OfferFlags"].IntegerValue = 0;
assignment["DesiredConfigType"].IntegerValue = 1;           
assignment["OverrideServiceWindows"].BooleanValue = false;
assignment["RebootOutsideOfServiceWindows"].BooleanValue = false;
assignment["SuppressReboot"].IntegerValue = 0;
assignment["TargetCollectionID"].StringValue = "UKN0000F";
assignment["EnforcementDeadline"].DateTimeValue = DateTime.Now.AddDays(1);
assignment["StartTime"].DateTimeValue = DateTime.Now;
assignment["UseGMTTimes"].BooleanValue = false;
assignment["UserUIExperience"].BooleanValue = false;
assignment["WoLEnabled"].BooleanValue = false;
assignment["RequireApproval"].BooleanValue = true;
assignment["OfferTypeId"].IntegerValue = 2;
assignment.Put();

このコードは、アプリケーションをSCCMのインストール展開として配置します。アンインストールデプロイメントとして取得するにはどうすればよいですか?AppActionサーバーではなくクライアントによって使用されていると思われる列挙があります。

typedef enum AppAction
{
    appDiscovery = 0, 
    appInstall = 1, 
    appUninstall = 2
} AppAction;

どんな助けでもいただければ幸いです!

4

3 に答える 3

1

変更が必要な設定はDesiredConfigTypeです。

コードでは、 put()の前に次を追加します。

assignment["DesiredConfigType"].IntegerValue = 2;

値 1 はインストール (必須) を表し、2 はアンインストール (許可されません) を表します。

https://msdn.microsoft.com/en-us/library/hh949014.aspx

于 2016-01-21T14:08:14.207 に答える
0

使用しようとしているターゲット プログラムが MSI (Microsoft インストーラー) 経由でインストールされている限り、レジストリをループして製品を見つけることができます (レジストリの場所: "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall")。そして、それぞれの DisplayName 値を見てください。

私たちの環境では、Powershell を使用してこのタスクを実行し、必要なものを具体的にアンインストールするプログラムをセットアップします。

これが役に立てば幸いです...激怒。

于 2014-03-14T14:24:23.143 に答える
0

私が行う方法は、最初にuninstall.exeを使用してプログラムの guid を特定し、次にアンインストールするパッケージのプログラムを作成し、コマンドとして uninstall.exe /whatever を呼び出すだけです。これは、追加と削除に表示されるほとんどのアプリで機能します。表示されない場合は、ハック (またはスクリプト) を使用してアンインストールする必要があります。あなたが不足している理由は、sccm で展開をアンインストールするコマンドがない場合、実行するものが何もないためだと思います。

アンインストール プログラムを作成したら、コードからその展開を呼び出すだけで、出来上がりです。

于 2013-02-22T13:32:20.337 に答える