2017-03-07 8 views
0

プロパティ値をダイアログ内の選択したテキストに変更したいのですが、InstallScriptのプロパティを変更するには

これはサンプルソースです。

#include "ifx.h" 
STRING outPath; 
export prototype MyFunction(HWND); 

function OnFirstUIBefore() 
    NUMBER nResult, nSetupType, nvSize, nUser; 
    STRING szTitle, szMsg, szQuestion, svName, svCompany, szFile, szDir; 
    STRING szLicenseFile; 
    BOOL bCustom, bIgnore1, bIgnore2; 
begin 

Dlg_SdAskDestPath:  
    nResult = SdAskDestPath(szTitle, szMsg, INSTALLDIR, 0); 
    if (nResult = BACK) goto Dlg_SdAskDestPath; 

Dlg_AskOutPath:  
    nResult = AskDestPath(szTitle, szmsg, szDir, 0); 
    if (nResult = BACK) goto Dlg_SdAskDestPath; 
    outPath = szDir; 
    MyFunction(ISMSI_HANDLE); 

return 0; 
end; 

function MyFunction(hMSI) 
    STRING value; 
begin 
    MsiSetProperty(hMSI, "OutPutPath", outPath); 
end; 

終了インストール後のカスタムアクションで使用されるOutPutPath。

ただし、カスタムアクションで読み込むとOutPutPathは変更されませんでした。

私はISMSI_HANDLEを使用してはいけないと思います。しかし、私は代わりに何を使わなければならないのか分かりません。

インストールを完了した後、インストールスクリプトのメソッドMyFunctionをロードするカスタムアクションを作成しようとしました。

これはよく働いた、しかし、グローバル変数OUTPATHはNULだった..

あなたが知っていれば私はこれを行うことができる方法を教えてください。

ありがとうございます。

答えて

0

public propertyは、少なくとも小文字を含まない名前のものを使用する必要があります。また、制限された環境でのインストールをサポートしている場合は、ユーザーが変更できるようにするために、SecureCustomPropertiesにリストする必要があります。

しかし、私はあなたのコメントで記載された正確なシナリオかどうか分からない:

私は仕上げのインストール後のスクリプトのメソッドのMyFunctionをインストールロードカスタムアクションを作ってみました。

このシナリオが実際にインストールのWindowsインストーラ部分の終わり(InstallScript MSIが前後のコードを実行する)の後にある場合、プロパティ全体が必要な処理を実行できないことがあります。その時点で値を読み取ることをサポートするには、レジストリに値を書き込むなどの他のアプローチやファイル(SUPPORTDIRなど)を考慮する必要があります。

関連する問題