Я использую расширенный установщик 8.3 и пытаюсь внедрить пробную лицензию для своего приложения, целевой ОС является Windows 7 x32 и x64.
Следующий код взят из примера, предоставленного расширенным установщиком.
[DllImport("Trial.dll", EntryPoint = "ReadSettingsStr", CharSet = CharSet.Auto)]
private static extern uint InitTrial(String aKeyCode, IntPtr aHWnd);
[DllImport("Trial.dll", EntryPoint = "ReadSettingsRetStr", CharSet = CharSet.Auto)]
private static extern uint InitTrialReturn(String aKeyCode, IntPtr aHWnd);
[DllImport("Trial.dll", EntryPoint = "DisplayRegistrationStr", CharSet = CharSet.Auto)]
private static extern uint DisplayRegistration(String aKeyCode);
[DllImport("Trial.dll", EntryPoint = "GetPropertyValue", CharSet = CharSet.Auto)]
private static extern uint GetPropertyValue(String aPropName, StringBuilder aResult, ref UInt32 aResultLen);
private void registerToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
Process process = Process.GetCurrentProcess();
DisplayRegistration(kLibraryKey, process.MainWindowHandle);
}
catch(Exception ex1)
{
MessageBox.Show(ex1.ToString());
}
}
Подпись типа, установленная в расширенном установщике, представляет собой 32-битный юникод с поддержкой DEP.
Проблема в том, что каждый раз, когда я выбираю регистрацию, я получаю нарушение прав доступа. Похоже, я не могу использовать переключатель в своем приложении, чтобы отключить DEP, поскольку это требуется для моего приложения.
Есть ли у кого-нибудь идеи, как обойти это, поскольку я проверил на форуме расширенного установщика, и там не так много, кроме подобных проблем.
Огромное спасибо
ОК, быстрое обновление.
Я пробовал все комбинации типа sig, вот что я нашел.
Установите тип на 32-битный Ansi (поддерживает Win9x или выше) и установите CharSet на Ansi/Unicode или автоматический результат = CRASH.
Установка типа на 32-битный Unicode (с поддержкой DEP) и установка CharSet на Unicode или автоматический результат = нарушение прав доступа.
Установите тип на 32-битный Unicode (с поддержкой DEP) и установите для CharSet значение Ansi, результат = успех.
Поэтому, хотя он работает, в Advanced Installer явно есть ошибка.