2010-12-23 30 views
23

Windows Hizmeti için bir kurulum projesi oluşturmaya çalışıyorum. Kurulum projesini sorunsuz olarak oluşturmak için http://support.microsoft.com/kb/816169 adresindeki talimatları takip ettim.'Özel projeyi özel eylem dosyası bulunamadı' özel durumuyla nasıl giderebilirim?

App.config dosyasını kullanıcının istediği ayarlarıyla güncellemek için kurulum sırasında bir değer elde edebilmek istiyorum. Değerleri almak için Metin Kutuları (A) iletişim kutusunu ekledim. Ben Edit1Property özelliğini "TIMETORUN" ayarlayın ve benim İlköğretim Çıktı eylemin CustomActionData özelliğinde aşağıdaki koymak: /TimeToRun = "[TIMETORUN] \". Çok uzak çok iyi. Kurulumu çalıştırırken, TimeToRun değerini, sorun olmadan Context.Parameters koleksiyonundan alabilirim.

App.config dosyasını bulmak için, özel işlemimin TARGETDIR Windows Installer Property değerini de girmem gerekiyor. Bu, işlerin parçalanmaya başladığı yer. Bunu başarmak için yukarıdaki CustomActionData aşağıdaki gibi değiştirilmelidir: /TimeToRun = "[TIMETORUN] \"/TargetDir = "[TARGETDIR] \". Şimdi kurulumu çalıştırdığımda aşağıdaki hata iletisini alıyorum:

Hata 1001. Yükleme başlatılırken özel durum oluştu. System.IO.FileNotFoundException: Dosya veya derleme 'dosya: /// C: \ Windows \ SysWOW64 \ Files' veya bağımlılıklarından biri yüklenemedi. Sistem belirtilen dosyayı arayabilir.

Eğer kaçınılmaz insanların sadece CustomActionData arasında /TargetDir = "[HEDEFDIR] \" kısmına eğik çizgi ekleyerek büyük başarı olan bulacaksınız bu sorunu google Eğer. Bu maalesef sorunumu çözmüyor.

CustomActionData dizesinin çok farklı varyasyonlarını denedim ve bunların hiçbiri işe yaramadı. Bozukluğun nerede olduğunu belirlemek için geçersiz kılınmış Yükleme yönteminden bir dosyaya giriş yapmayı denedim, ancak o kadar da uzaklaşmadığı için günlük dosyası oluşturulmadı. Hata belirttiği gibi, başarısızlık başlatma adımı sırasındadır.

Kurulum projesinin yüklemeye çalıştığı bağımlılıklardan biri olabileceğine dair bir önsezim var. Belki de bir şekilde CustomActionData dizesine ekleniyor ve TARGETDIR değeriyle (boş alanlar içeriyor, yani "C: \ Program Files \ Company \ Project Name") düzgün çalışmıyor. Yine, bu, kurulum sürecinin hatalarını ayıklamamdan dolayı onaylayamadığım bir başka önsezidir.

Başka bir şeyden bahsetmek gerekirse, ve evet başka bir önsezi, bu, Windows'un 64 bit sürümündeki Kurulum Projeleri ile ilgili bir sorun olabilir mi? Windows 7 Professional çalıştırıyorum.

  • Microsoft .NET Framework
  • Microsoft.SqlServer.DtsMsg.dll
  • Microsoft.SqlServer:

    Ben yardımcı durumda bağımlılıkları isimlerini vereceğiz.DTSPipelineWrap.dll

  • Microsoft.SqlServer.DTSRuntimeWrap.dll
  • Microsoft.SQLServer.ManagedDTS.dll
  • Microsoft.SqlServer.msxml6_interop.dll
  • Microsoft.SqlServer.PipelineHost.dll
  • Microsoft.SqlServer. SqlTDiagM.dll

Bağımlılıklardan alacağınız gibi, Windows Hizmeti bir DTSX paketine çağrı planlıyor.

Uzun süren rant için özür dilerim. Sağladığınız herhangi bir yardım için teşekkürler.

+0

Merhaba millet, ben beri aynı sorun/sorun/hata karşı karşıyayım geçen sabah. Hizmet dosyalarını klasöre yüklemek için bir Kurulum klasörü belirledim, ancak [TARGETDIR] 'da değer alamıyorum, her şey yolunda gidiyor. [TARGETDIR] her zaman boş oluyor. ** Lütfen bu konuda acil yardıma ihtiyacınız var. ** –

cevap

35

Cevap çok çılgın bir şekilde basittir. CustomActionData'daki son bağımsız değişken boşluk içeriyorsa ve bu nedenle tırnak işareti ve sondaki bir eğik çizgi ile çevrelemeniz gerekiyorsa, aşağıdaki gibi eğik çizgi izleyen bir alanınız olmalıdır:

/TimeToRun = "[TIMETORUN ] \ "/ TargetDir =" [TARGETDIR] \ "

Çözüm ve açıklama here bulunabilir.

+3

Teşekkürler! Bulmak için zamanımı bana uzatır mıydı, yoksa belki de bu piç kurdu, kötü teknolojiyle diğer sorunlarımdan vazgeçerdim. (MSI) – Max

+2

Ayrıca, özel eyleminiz için bir günlük dosyası almanın hilesi, özel eylem için CustomActionData özelliğine */LogFile = /LogToConsole = true * anahtarları eklemektir. –

1

Benzer bir sorunla karşılaştım. Benim durumumda, yükleyici bir kez başarılı bir şekilde koştu, sonra benim app başarıyla Program Ekle/Kaldır aracılığıyla kaldırıldı, bazı kodlama yaptım (benim CustomActionData dize değin) ve benim proje ve kurulum proje yeniden inşa edildi. MSI'mı yeniden çalıştırdığımda bu hatayı aldığım zamandı.

Yaptığım kodlama, CustomActionData dizesinde belirttiğim daha fazla parametreden daha fazla değer getirmekti. Yükleyici sınıfımdaki parametre değerlerini (yani, string filepath = Context.Paramenters["filepath"]) almak için kullanılan sözdizimi aslında iyi oldu, ancak bulduğum gibi, şimdi CustomActionData dizesinden almaya çalıştığım sonraki parametrelerin sözdizimi Doğru, en başından beri. Bu parametrelerden birinin etrafında ikinci bir alıntı yapmayı başaramamıştım, başka hiçbir şey elde edilemedi.

Kullanıcı Arabirimi bölümünde "Metin Kutuları (A)" ve "Metin Kutuları (B)" pencerelerini kullanıyordum. A, bir dosya yolunu aldığım 1 kutu, EDITA1 ve B bazı veritabanı parametreleri için 2 kutu, EDITB1 ve EDITB2 sahiptir. Benim CustomActionData dize şuna benziyordu:

/filepath="[EDITA1]" /host="[EDITB1] /port="[EDITB2]" 

O olmalıydı:

/filepath="[EDITA1]" /host="[EDITB1]" /port="[EDITB2]" 

([EDITB1] kapanış tırnak)

İlgili konular