Paket Destek Çerçevesi ile betikleri çalıştırma

Betikler, BT Uzmanlarının MSIX kullanılarak paketlenen bir uygulamayı kullanıcının ortamına dinamik olarak özelleştirmesini sağlar. Örneğin, veritabanınızı yapılandırmak, VPN ayarlamak, paylaşılan bir sürücü bağlamak veya lisans denetimini dinamik olarak gerçekleştirmek için betikleri kullanabilirsiniz. Komut dosyaları çok fazla esneklik sağlar. Kayıt defteri anahtarlarını değiştirebilir veya makine veya sunucu yapılandırmasına göre dosya değişiklikleri yapabilir.

Paketlenmiş bir uygulama yürütülebilir dosyası çalıştırilmeden önce bir PowerShell betiği ve temizleme için uygulama yürütülebilir dosyası çalıştırıldıktan sonra bir PowerShell betiği çalıştırmak için Paket Destek Çerçevesi'ni (PSF) kullanabilirsiniz. Uygulama manifestosunda tanımlanan her yürütülebilir uygulama dosyasının kendi betikleri olabilir. Kullanıcıların betiği yanlışlıkla erken sonlandırmaması için betiği yalnızca ilk uygulama başlatmada ve PowerShell penceresini göstermeden bir kez çalışacak şekilde yapılandırabilirsiniz. Betiklerin çalışma biçimini yapılandırmak için aşağıda gösterilen başka seçenekler de vardır.

Önkoşullar

Betiklerin çalıştırılmasına imkan sağlamak için PowerShell yürütme ilkesini RemoteSigned olarak ayarlamanız gerekir. Bu komutu çalıştırarak bunu yapabilirsiniz:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Yürütme ilkesinin hem 64 bit PowerShell yürütülebilir dosyası hem de 32 bit PowerShell yürütülebilir dosyası için ayarlanması gerekir. PowerShell'in her sürümünü açtığınızdan ve yukarıda gösterilen komutlardan birini çalıştırdığınızdan emin olun.

Her yürütülebilir dosyanın konumları aşağıdadır.

  • 64 bit bilgisayar:
    • 64-bit uygulama: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
    • 32 bit yürütülebilir dosya: %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
  • 32 bit bilgisayar:
    • 32 bit yürütülebilir dosya: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

PowerShell yürütme ilkeleri hakkında daha fazla bilgi için bu makaleye bakın.

🚩 ayrıcaStartingScriptWrapper.ps1 dosyasını paketinize eklediğinizden ve yürütülebilir dosyanızla aynı klasöre yerleştirdiğinden emin olun. Bu dosyayı PSF NuGet paketinden veya PSF Github deposundan kopyalayabilirsiniz.

Komut dosyalarını etkinleştir

Paketlenmiş her uygulama yürütülebilir dosyası için hangi betiklerin çalıştırılacağını belirtmek için config.json dosyasını değiştirmeniz gerekir. PSF'ye paketlenmiş uygulamanın yürütülmesinden önce bir betik çalıştırmasını söylemek için adlı startScriptbir yapılandırma öğesi ekleyin. Paketlenmiş uygulama tamamlandıktan sonra PSF'ye bir betik çalıştırmasını söylemek için bir yapılandırma öğesi olan endScript'yi ekleyin.

Senaryo yapılandırma öğeleri

Betikler için kullanılabilen yapılandırma öğeleri aşağıdadır. Bitiş betiği waitForScriptToFinish ve stopOnScriptError yapılandırma öğelerini yoksayar.

Anahtar adı Değer türü Gerekli mi? Varsayılan Açıklama
scriptPath String Evet Mevcut Değil Ad ve uzantıyı içeren betiğin yolu. Yol, belirtilirse uygulamanın çalışma dizinine göre belirlenir, aksi takdirde paketin kök dizininden başlar.
scriptArguments String Hayı boş Boşlukla ayrılmış bağımsız değişken listesi. Biçim, PowerShell betik çağrısı için aynıdır. Geçerli bir PowerShell.exe çağrısı yapmak için bu dize sonuna scriptPath eklenir.
runInVirtualEnvironment Boolean Hayı doğru Betiğin paketlenmiş uygulamanın çalıştığı sanal ortamda çalıştırılıp çalıştırılmayacağını belirtir.
runOnce Boolean Hayı doğru Betiğin kullanıcı başına, sürüm başına bir kez çalıştırılıp çalıştırılmayacağını belirtir.
showWindow Boolean Hayı yanlış PowerShell penceresinin gösterilip gösterilmediğini belirtir.
stopOnScriptError Boolean Hayı yanlış Başlangıç betiği başarısız olursa uygulamadan çıkılıp çıkılmayacağını belirtir.
waitForScriptToFinish Boolean Hayı doğru Paketlenmiş uygulamanın başlamadan önce başlangıç betiğinin bitmesini beklemesi gerekip gerekmediğini belirtir.
timeout DWORD - 32 bitlik sayı Hayı SONSUZ Betiğin ne kadar süreyle yürütülmesine izin verileceği. Süre dolduğunda kod durdurulacak.

Uyarı

Örnek uygulama için stopOnScriptError: true ve waitForScriptToFinish: false ayarları desteklenmez. Bu yapılandırma öğelerinin ikisini de ayarlarsanız PSF hata ERROR_BAD_CONFIGURATION döndürür.

Örnek yapılandırma

burada iki farklı uygulama yürütülebilir dosyası kullanan örnek bir yapılandırma verilmiştir.

{
  "applications": [
    {
      "id": "Sample",
      "executable": "Sample.exe",
      "workingDirectory": "",
      "stopOnScriptError": false,
      "startScript":
      {
        "scriptPath": "RunMePlease.ps1",
        "scriptArguments": "\\\"First argument\\\" secondArgument",
        "runInVirtualEnvironment": true,
        "showWindow": true,
        "waitForScriptToFinish": false
      },
      "endScript":
      {
        "scriptPath": "RunMeAfter.ps1",
        "scriptArguments": "ThisIsMe.txt"
      }
    },
    {
      "id": "CPPSample",
      "executable": "CPPSample.exe",
      "workingDirectory": "",
      "startScript":
      {
        "scriptPath": "CPPStart.ps1",
        "scriptArguments": "ThisIsMe.txt",
        "runInVirtualEnvironment": true
      },
      "endScript":
      {
        "scriptPath": "CPPEnd.ps1",
        "scriptArguments": "ThisIsMe.txt",
        "runOnce": false
      }
    }
  ],
  "processes": [
    ...(taken out for brevity)
  ]
}