2016-03-31 26 views
2

Yükleyicimin bir parçası olarak birkaç DLL dosyasını kaydetmeye çalışıyorum. regserver bayrağını kullanıyorum ve bu DLL'lerin çoğu için mükemmel çalışır. Ancak, bir DLL kayıt başarısız. Diğer DLL'leri yüklemeye çalışır ve geçerli dizinde bulamazsa başarısız olur. Regsvr32, {app} dizininden manuel olarak çalıştırılırsa, temiz bir şekilde kaydedilir.Inno Kurulumu: regsvr32'yi belirli bir çalışma diziniyle çalıştırın

Regserver bayrağı için çalışma dizinini ayarlamanın herhangi bir yolu var mı? Ya da tüm yükleyici?

[Run] 
;Register components that are "special" 
Filename: "{sys}\Regsvr32.exe"; Parameters: "/s Awkward.dll"; WorkingDir: "{app}"; StatusMsg: "Registering components ... "; Flags: runhidden; 

Ama aynı zamanda bir [UninstallRun] bölüm ekleyin ve bir unregester komut eklemek gerektiğini şüpheli olarak bu, ideal değildir: Şimdilik

, ben [Run] girişi aracılığı yuvarlak çalışıyorum. Yapabileceğim umduğumuz:

[Files] 
Source: "{#mysrc}\Awkward.dll"; DestDir: "{app}"; Flags: regserver; WorkingDir: "{app}" 

belirli bir dizinden/unregister kayıt için daha kolay bir yolu var mı?

cevap

2

Yapamazsınız. Inno Kur'un dahili olarak (un) DLL dosyalarını kaydettirdiği regsvr32.exe, bir sistem dizininden (genellikle C:\Windows\System32) çalıştırılır.


Çözümünüz en iyi yoldur.

Sadece DLL dosyasının kaydını eşdeğer [UninstallRun] giriş eklemek:

daha iyi
[UninstallRun] 
Filename: "{sys}\regsvr32.exe"; Parameters: "/u /s Awkward.dll"; WorkingDir: "{app}"; \ 
    Flags: runhidden; 

Veya, bir çalışma dizinine güvenmek değil DLL düzeltmek. LoadLibraryEx için LOAD_WITH_ALTERED_SEARCH_PATH bayrağını kullanabilirsiniz. Ayrıca bkz. Dynamic-Link Library Search Order.

+0

Ne yazık ki, onun çalışma klasörü sorunu olan bir 3. parti DLL - yani ben düzeltemezsiniz. :( – Grhm

İlgili konular